ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HttpServletRequest和HttpServletResponse

2022-02-20 02:02:03  阅读:184  来源: 互联网

标签:HttpServletRequest UTF name request HttpServletResponse key response String


Servlet路径配置方式

  1、 全路径匹配: 以 / 开始 ,/a /aa/bb

    localhost:8080/项目名称/aa/bb

  2.、路径匹配 , 前半段匹配: 以 / 开始 , 但是以 * 结束: /a/* /*。* 其实是一个通配符,匹配任意文字

    localhost:8080/项目名称/aa/bb

  3.、以扩展名匹配:没有/, 以 * 开始 ,*.扩展名 :*.aa *.bb

ServletContext:

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

    ServletContext context = getServletContext();

  2、作用:获取全局配置参数;获取web工程中的资源;存取数据,servlet间共享数据 域对象

  3、ServletContext 何时创建, 何时销毁:服务器启动的时候,会为托管的每一个web应用程序,创建一个ServletContext对象;从服务器移除托管,或者是关闭服务器时候销毁。

   ServletContext 的作用范围:只要在这个项目里面,都可以取。 只要同一个项目。 A项目 存, 在B项目取,是取不到的,因为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);
        }

  3、获取中文数据:客户端提交数据给服务器端,如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决。

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

    2)可以在tomcat里面做设置处理 conf/server.xml 加上URIEncoding="utf-8"

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

    POST方式:

      request.setCharacterEncoding("UTF-8");  这行设置一定要写在getParameter之前。

HTTPServletResponse:负责返回数据给客户端。 

  1、响应的数据中有中文,那么有可能出现中文乱码

    1)以字符流输出:response.getWriter()

      //1. 指定输出到客户端的时候,这些文字使用UTF-8编码
      response.setCharacterEncoding("UTF-8");

      //2. 直接规定浏览器看这份数据的时候,使用什么编码来看。
      response.setHeader("Content-Type", "text/html; charset=UTF-8");

      response.getWriter().write("我爱中国");

    2)以字节流输出:response.getOutputStream()

      //1. 指定浏览器看这份数据使用的码表
      response.setHeader("Content-Type", "text/html;charset=UTF-8");

      //2. 指定输出的中文用的码表
      response.getOutputStream().write("我爱中国.".getBytes("UTF-8"));

    3)不管是字节流还是字符流,直接使用一行代码就可以了。

      response.setContentType("text/html;charset=UTF-8");  然后在写数据即可。

标签:HttpServletRequest,UTF,name,request,HttpServletResponse,key,response,String
来源: https://www.cnblogs.com/gengshao/p/15914406.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有