###ServletContext重点

> Servlet 上下文

> 每个web工程都只有一个ServletContext对象。 说白了也就是不管在哪个servlet里面,获取到的这个类的对象都是同一个。

服务器启动的时候给每一个应用都创建一个ServletContext对象, 服务器关闭的时候销毁

##HttpServletRequest

> 这个对象封装了客户端提交过来的一切数据。
1. 可以获取客户端请求头信息

//得到一个枚举集合  
        Enumeration<String> headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String name = (String) headerNames.nextElement();
            String value = request.getHeader(name);
            System.out.println(name+"="+value);
            
        }

2. 获取客户端提交过来的数据

String name = request.getParameter("name");
        String address = request.getParameter("address");
        System.out.println("name="+name);
        System.out.println("address="+address);

-------------------------------------------------

//name=zhangsan&name=lisi&name=wangwu 一个key可以对应多个值。

Map<String, String[]> map = request.getParameterMap();
        
        Set<String> keySet = map.keySet();
        Iterator<String> iterator = keySet.iterator();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            System.out.println("key="+key + "--的值总数有:"+map.get(key).length);
            String value = map.get(key)[0];
            String value1 = map.get(key)[1];
            String value2 = map.get(key)[2];
            
            System.out.println(key+" ======= "+ value + "=" + value1 + "="+ value2);

}

##HttpServletResponse

> 负责返回数据给客户端。

* 输出数据到页面上

//以字符流的方式写数据    
        //response.getWriter().write("<h1>hello response...</h1>");
        
        //以字节流的方式写数据 
        response.getOutputStream().write("hello response2222...".getBytes());

中文乱码问题

如果是GET方式
    
    1. 代码转码
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            
            System.out.println("userName="+username+"==password="+password);
            
            //get请求过来的数据,在url地址栏上就已经经过编码了,所以我们取到的就是乱码,
            //tomcat收到了这批数据,getParameter 默认使用ISO-8859-1去解码
            
            //先让文字回到ISO-8859-1对应的字节数组 , 然后再按utf-8组拼字符串
            username = new String(username.getBytes("ISO-8859-1") , "UTF-8");
            System.out.println("userName="+username+"==password="+password);
        
            直接在tomcat里面做配置,以后get请求过来的数据永远都是用UTF-8编码。

2. 可以在tomcat里面做设置处理 conf/server.xml 加上URIEncoding="utf-8"
 
          <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

* 如果是POST方式

这个说的是设置请求体里面的文字编码。  get方式,用这行,有用吗? ---> 没用
        request.setCharacterEncoding("UTF-8");

这行设置一定要写在getParameter之前。

文件下载

 protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取要下载文件的名字String fileName = request.getParameter("filename");// 获取文件地址 在tcomcat的绝对路径String path = getServletContext().getRealPath("download/" + fileName);// 让浏览器收到资源的时候 以下载的方式提醒用户而不是直接展示response.setHeader("Content-Disposition", "attachment;filename" + fileName);//转换为流InputStream is = new FileInputStream(path);OutputStream os = response.getOutputStream();int len = 0;byte[] buffer = new byte[1024];while ((len = is.read(buffer)) != -1) {os.write(buffer, 0, len);}os.close();is.close();}

HttpServletRequest 和 HttpServletResponse相关推荐

  1. Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包

    转载: http://xyly624.blog.51cto.com/842520/865630/ Maven项目下HttpServletRequest 或 HttpServletResponse需引用 ...

  2. HttpServletrequest 与HttpServletResponse总结

    转载 http://www.cnblogs.com/liuyandeng/p/5336649.html HttpServletrequest 与HttpServletResponse总结 如果说DOM ...

  3. Struts2之HttpServletRequest、HttpServletResponse,HttpSession,Parameters处理

    在正式讲解如何获取上述对象之前,需要先搞清楚一点,类似于Struts2.SpringMVC框架之所以在诸多方面用着比较方便,简化开发人员重复机械性的工作,就是因为它们把底层的Servlet操作封装起来 ...

  4. 如何优雅地读写HttpServletRequest和HttpServletResponse的请求体

    最近很多交互要同原生的HttpServletRequest和HttpServletResponse打交道.从HttpServletRequest中读取body数据封装成某种数据结构:向HttpServ ...

  5. Maven项目下HttpServletRequest 或 HttpServletResponse显示红色

    用Idea软件,Maven项目下HttpServletRequest 或 HttpServletResponse显示红色,需引用的依赖包:servlet-api.jar,官网上对应的是:JavaSer ...

  6. Servlet API 详解(HttpServlet、HttpServletRequest、HttpServletResponse)

    系列文章目录 Servlet 的运行原理_crazy_xieyi的博客-CSDN博客 如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客 Tomcat下载.安装 ...

  7. HttpServletRequest和HttpServletResponse简介

    http://blog.csdn.net/tong_xinglong/article/details/12972819

  8. JavaWeb:HttpServletResponse和HttpServletRequest

    请求响应流程图 1. HttpServletResponse 1.1 Response概述 Response是Servlet.service方法的一个参数,类型为javax.servlet.http. ...

  9. (JavaWeb)HttpServletResponse和HttpServletRequest

    文章目录 HttpServletResponse 1.简单分类 2.下载文件 3.重定向 4.登录成功时重定向功能 HttpServletRequest 获取参数,请求转发 请求转发与重定向的区别 H ...

  10. JavaWeb(六)——HttpServletResponse、HttpServletRequest

    文章目录 1. HttpServletResponse 1.1 简单分类 1.2 下载文件 1.3 验证码功能 1.4 实现重定向 1.5 简单实现登录重定向 2. HttpServletReques ...

最新文章

  1. 中文版开源!这或许是最经典的Python编程教材
  2. 整图下沉,MindSpore图引擎详解
  3. lua学习笔试之迭代器和通用for
  4. VisualSvn+TortoiseSVN的安装说明
  5. 08年最热门七大技术和最紧缺的IT人才
  6. 16岁成为全栈开发者:我从开发游戏到写加密货币投资机器人的心路历程
  7. Vue_注册登录(短信验证码登录)
  8. Android使用SVG矢量图打造酷炫动效!
  9. 常用类回顾之(String类)
  10. CSV大文件的处理(以ngsim数据为例):分割、导入与合并
  11. jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数
  12. ExtJs2.0学习系列(12)--Ext.TreePanel之第一式
  13. python random库怎么用_Python || Random库的使用
  14. P2P(Peer to Peer)网络的原理
  15. DevExpress GridControl使用方法
  16. MIPI CSI转TTL/LVDS/BT656/BT601/BT1120
  17. 〖文字素材】 比 较 全 的 血 族 资 料
  18. tensorflow目标检测API实现血细胞图像识别和计数
  19. matlab中dcd是什么,dcd是什么意思
  20. 数据结构与算法学习---数据结构篇(线性表)(默然回首,夯实基础)

热门文章

  1. unix系统安装及应用
  2. td中使用overflow:hidden; 无效解决方案
  3. 秘笈——掌控时间管理的工具
  4. 20.UNIX 环境高级编程--数据库函数库
  5. 1.UNIX 环境高级编程--UNIX基础知识
  6. 80. Session
  7. 6. JavaScript String 对象
  8. oninput、onchange、onpropertychange的区别
  9. jQuery内置函数map和each的用法
  10. MongoDB:配置与安装