zoukankan      html  css  js  c++  java
  • servlet部分知识总结

    1.解决中文显示乱码问题:

    对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8");
    告诉tomcat不要使用默认的编码方式(iso-8859-1)来应答客户端,而要使用utf-8,
    PrintWriter 写入汉语就不会出现乱码,也就是在jsp显示的时候不会乱码。

    对于jsp :<%@page contentType = "text/html;chartset=utf-8"%>

    jsp本质上是一个servlet ,所以上面两个设置本质上是一样的。

    servlet获取值的中文乱码问题:

    (1).有效方法:
    String Luanmaname = request.getParamater("name"); //此name乱码
    String trueName = new String(Luanmaname.getBytes("iso-8859-1"),"utf-8");//此name不乱码
    但是数据过多的时候一个个处理麻烦
    (2).针对post有效
    request.setCharacterEncode("utf-8");//需要放在request.getParamater前面才能起作用
    (3).针对get有效(在sever.xml里面设置)
    <Connector port = "8080" ………… URIEncoding = "utf-8"/>

    2.比较response.setContentType("text/html;chartset=utf-8")与request.setCharacterEncode("utf-8")的区别:
    前者是对服务器向客户端应答的时候设置字符类型,主要对后面的PrintWriter out = response.getWriter();
    out.write("程序员");这个write设置的,一般正式开发PrintWriter用的较少,此设置相应用的也较少

    而后者是服务器端获取客户端的内容,来设置字符类型。因为tomcat也就是服务器端的编码方式是iso-859-1
    而且此设置只对post提交有效,要放在request.getParamater前面才可以影响到此方法

    3.jsp页面的
    <%@page contentType = "text/html;chartset=utf-8"%> 是给服务器看的
    <meta http-equiv = "Content-Type" content = "text/html;charset="utf-8">是给客户端看的

    4.jsp的请求转发与重定向:
    请求转发:
    String name = request.getParamater("name");
    RequestDispatcher rd = request.getRequestDispatcher("/selectservlet");//要跳转的servlet的url-pattern
    rd.forward(request,response);
    转发之后,request中的name还可以获取,就是原来的request和response还存在
    重定向:
    String name = request.getParamater("name");
    response.sendRedirect(request.getContextPath()+"/selectServlet");
    或者response.sendRedirect("selectServlet");//这样写也可以,但不建议这样写
    带参数response.sendRedirect(request.getContextPath()+"/selectServlet?name="+name);

    两者的区别:
    请求转发可以传参数,数据不会丢失,重定向不可以,数据会丢失
    请求转发地址栏的url不会改变,重定向会发生变化
    请求转发不需要加webapp名称,重定向或者加webapp名称,或者不加/
    请求转发只能在一个web应用程序内进行,重定向可以到其他应用程序
    请求转发后面调用的方法类别与前面相同,而重定向全部变为get请求,与之前的没有关系
    请求转发是一次请求,重定向是多次请求(生产多个request对象)

    5.paramater 与 attribute 区别:
    (1).paramater是客户端带过来的(客户端请求参数),attribute是在服务器端放入的数据
    (2).paramater数据时只读的,attribute数值是可读写的
    (3).getParamater返回的数值是string类型,而getAttribute 返回的是object类型,需要强转

    6.修改session的失效时间
    (1).在servlet代码里面加入session.setMaxInactiveInterval(40);40s失效
    (2).在tomcat的conf下设置sever.xml
        <session-config>
            <session-timeout>1</session-timeout> 1分钟失效,默认是30 ,也就是30分钟失效
        </session-config>
    但是会影响所有的项目
    (3).在本项目的web.xml里面设置
        <session-config>
            <session-timeout>1</session-timeout> 1分钟失效
        </session-config>
    删除session : session.invalidate();

    7.js里面获取java代码request.setAttribute("aaa",name);的值
    (1).取变量值
        var a = '<%=request.getAttribute("aaa")%>' ;
    (2).也可以将这个值放在页面上.再取出来.
        <input type="hidden" value="<%=request.getAttribute("aaa")%>" id="aaa"/>
        var a = document.getElementById('aaa').value ;

    8.request对象和session对象的最大区别是生命周期
    request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一起请求 当请求完毕之后,request里边的内容也将被释放
    而session的生命周期也是针对一个客户端 但是却是在别人设置的会话周期内(一般是20-30分钟) session里边的内容将一直存在 即便关闭了这个客户端浏览器 session也不一定会马上释放掉的

    request和session的优点和缺点很明显
    request占用资源比较少 安全性也比较高 可是相对来说 缺乏持续性
    而session则相对来说 对资源的消耗会大点 安全性相对来说也会稍微低点 可是它能实现比如会话跟踪技术 个有优点和缺点
    不过 个人觉得 如果可以使用request的情况下 尽量使用request 因为相对于服务器来说  资源的消耗这个问题还是比较重要的

    request     HTTP请求开始到结束这段时间
    session     HTTP会话开始到结束这段时间
    application      服务器启动到停止这段时间

    9.get  post  区别
    (1).安全性  get < post get提交的数据会在浏览器地址栏显示
    (2).提交内容大小 get < post 前者数据不能超过2k  后者不受限制,建议不大于64K
    (3).响应速度 get < post  get要求服务器立即请求,post请求可能形成一个队列请求

    10.cookie与session的区别:
    (1).存在的位置:cookie保存在客户端,session保存在服务器端
    (2).安全性:cookie的安全性比session弱
    (3).网络传输量:cookie通过网络在客户端和服务器之间传输,而session保存在服务器端,不需要传输
    (4).生命周期(以20分钟为例)
    cookie的生命周期是累计的,从创建时开始计时,20分钟后cookie生命周期结束,cookie就无效
    session的生命周期是间隔的,从创建时开始计时,如果在20分钟内无访问,则session失效,如果在20分钟内,比如说19分钟访问session,
    它的生命周期重新开始计算
    另外。关机会影响session生命周期,但是对cookie无影响

  • 相关阅读:
    python分析文本文件/json
    python中文件操作
    python异常处理
    socket网络模块
    层模型--固定定位
    层模型--相对定位
    层模型--绝对定位
    什么是层模型?
    浮动模型
    流动模型/a标签换行问题
  • 原文地址:https://www.cnblogs.com/cuiyf/p/3220045.html
Copyright © 2011-2022 走看看