• Servlet中的Response与Request


    一、以字节为单位向客户端发送中文数据

    1、服务器以本地默认编码发送中文数据

    2、若服务器以UTF-8编码向客户端发送中文数据,此时必须告知客户端编码方式,不然客户端会使用本地默认编码进行解码,出现乱码问题。

     出现乱码解决办法:   服务端以什么编码发送数据,就必须告知客户端以什么编码解码。   

    2.1浏览器“查看”/"编码",更改默认编码(不可取)  

    2.2设置响应头:Content-Type   text/html;charset=UTF-8  

    2.3向客户端发送<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>   

    2.4调用response.setContentType("text/html;charset=UTF-8");

    二、以字符为单位向客户端发送中文数据

    1、服务器以ISO-8859-1为默认编码发送中文数据

    2、中文客户端接收到ISO-8859-1编码的数据肯定不能正常解码(ISO-8859-1码表中没有中文,???)  解决办法:   

    a、更改服务器发送数据的默认编码    response.setCharacterEncoding("UTF-8");    还要通知客户端解码方式    response.setHeader("Content-Type","text/html;charset=UTF-8"); 

    b、因为经常要变动编码方式,因此SerlvetResponse提供了一个更好用的方法    response.setContentType("text/html;charset=UTF-8");    此方法的功效等同于a中的两行代码

    三、请求重定向  

    1、特点:   a、客户端发出2次请求   b、地址栏会改变   c、不共享request和response对象  

    2、实现:response.sendRedirect(url);

    四、response.getOutputStream和getWriter两个方法排斥。在一个Servlet的方法中,要么使用字节流输出,要么使用字符流输出

    五、调用response的流进行输出的正文内容首先被写到response对象中,容器从response对象中取出响应行、响应头和正文,组织后发给客户端

    六、请求参数的中文乱码问题

    1、GET请求方式(请求参数名和值通过URL传递给服务器的,用的编码是ISO-8859-1) ISO-8859-1码表中没有中文编码。要想显示正常,需要纯手工编码。 原理:按照ISO-8859-1得到字节码。byte b[] = data.getBytes("ISO-8859-1");  按照指定的编码重新编码。new String(b,"UTF-8");

    2、POST请求方式 网页是什么编码,发送的请求数据就是什么编码 不论网页什么编码,我们都可以通过request.setCharacterEncoding("GBK");来重新指定编码

    七、路径的写法:

    a、绝对路径写法:ServeltContext都必须用绝对路径。“/”

    b、相对路径:其他情况都可以使用相对路径,也可以使用绝对路径

    c、在使用绝对路径时,要不要加"/"或者是项目名:如果是服务器调用的,不用加项目名,用“/”就可以代表了 如果是客户端调用的,必须加上项目名

    1、转发:request.getRequestDispather(String url) 绝对路径:url    /servlet/ServletDemo

    2、重定向:response.sendRedirect(String url) 绝对路径:url    /day05/servlet/ServletDemo

    3、超链接:<a href="url"/> 绝对路径:url  /day05/servlet/ServletDemo

    4、类加载文件的路径 web应用中只能用相对路径,相对于classes目录的

    5、<fomr action="url"/> 绝对路径:/day05/servlet/ServletDemo

    6、页面分帧(frame) 绝对路径:/day05/servlet/ServletDemo

    7、ServletContext.getRealPath(url) 绝对路径:url    /servlet/ServletDemo

    八、请求重定向与请求转发的使用

    1、请求重定向:response.sendRedirect("/day05/login.html");

    2、请求转发:request.getRequestDispatcher("/login.html").forward(request, response);

  • 相关阅读:
    通过Javascript调用微软认知服务情感检测接口的两种实现方式
    Microsoft Flow 概览
    使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
    从三个语言(C++,Java,C#)的几个性能测试案例来看性能优化
    自己动手,打造轻量级VSCode/C#环境代替LinqPad
    2015年总结
    将知识变成你的技能点
    瞎子摸象与刻舟求剑
    俺的追求,下一个五年的指导纲领
    工作中任务管理的四个原则和四个技能
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3404043.html
Copyright © 2020-2023  润新知