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"));

最新文章

  1. java 中抽象类和接口的五点区别?
  2. 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例
  3. XPatchLib 对象增量数据序列化及反序列化器 For .Net
  4. ios如何一个证书多台设备测试
  5. nodejs-helloword案例
  6. c++ 普通高精乘
  7. Gradle简介
  8. 导出数据库数据制成Excel和txt
  9. Options for Debugging Your Program or GCC
  10. Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\<composite-element>\)
  11. 怎样在 Ubuntu 中修改默认程序
  12. linux上很方便的上传下载文件工具rz和sz
  13. c++ 内存泄露的检查
  14. jvm内存JVM学习笔记-引用(Reference)机制
  15. poptest老李谈数据结构中深度优先和广度优先
  16. Tomcat去除端口号和项目名(转)
  17. spring suite tool 添加namespace时只有bean一个
  18. (转)Java并发编程:线程池的使用
  19. ABAP 文件选择框
  20. Codeforces791 C. Bear and Different Names

热门文章

  1. C# 监听HTTP请求(遇到的一些问题)
  2. 搭建openwrt_x86虚拟机环境
  3. android 获取当前 activity
  4. Redis高速内存缓冲平台可视化监控之RedisLive配置实战
  5. Qt Creator 预览QtCreator中的界面
  6. 小峰servlet/jsp(1)
  7. 中点Brehensam画线算法
  8. Java堆外内存之六:堆外内存溢出问题排查
  9. SIP 认证方式
  10. 【转载】Docker 经验之谈