JSP复习(part 3 )

3.4.4

    request对象提供了一些用来获取客户信息的方法,利用这些方法,可以获取客户端的IP地址 协议等有关信息

3.5

    request对象和response对象相对应,用于响应客户请求,由服务器端向客户端输出信息。当服务器向客户端传送数据时,JSP容器会自动创建RESPONSE对象并

将信息封装到response对象中,当JSP容器处理完请求后,request对象会被销毁,response和request综合起来完成动态网页的交互功能

3.5.1

原理
        1web容器(tomcat等)会传入与web容器相关的HttpServletRequest和HttpServletResponse的实现。
        2每一次浏览器的请求web服务器都会创建一个新的HttpServletReques和ServletResponse对象,并且
                这两个对象的声明周期仅限于web容器内。
response对象常用方法
        1 setStatues
        2 setHeader
        3 getWriter
        4 getOutputStream
    response常见应用
    
        1)向浏览器输出数字
        原理:
            无论是ServletOutputStream对象还是ServletWrite对象的write(int c);方法
            都会自动将c去查询iso8859-1编码表,并取出相应的字符传送到客户端,
            所以输入的是数字,客户端得到的却是对应的字符。
        解决办法:
            将数字转换成字符串,再通过字符串的形式进行输出。
            又因为OutputStream对象write()方法参数中不支持对字符串的输出,所以需要通过getBytes方法进行转换
            而ServletWriter的write()方法参数支持字符串的输出,所以可以直接输出,不必转换

   2)向浏览器输出中文字符
            原因:
                1byte[] getBytes();方法在进行编码的时候会按照当前的编码方式进行编码
                2byte[] getBytes(String charset);方法在进行编码的时候会按照指定的编码方式进行编码
                3而iso8859-1不支持中文字符的编码,所以,在进行编码的时候需要指定能够编码中文字符的编码方式。
            注意:在以字符流方式输出中文到客户端,需要提前告诉客户端用utf-8去接受。

3)设置响应头发送给客户端
            当遇到中文字符的时候,需要使用URLEncoder类的静态方法使用指定的编码机制将字符串转换为客户端浏览器能正确解析的编码方式。
            方法原型:
                String encode(String s, String enc);
            code:
                response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(), "utf-8"));

原文地址:https://www.cnblogs.com/frankzone/p/7617616.html