听说你JavaWeb学的不好?(二十九)

102 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

        • 关于request对象中两个非常容易混淆的方法:

          • // uri?username=zhangsan&userpwd=123&sex=1
            String username = request.getParameter("username");
            ​
            // 之前一定是执行过:request.setAttribute("name", new Object())
            Object obj = request.getAttribute("name");
            ​
            // 以上两个方法的区别是什么?
            // 第一个方法:获取的是用户在浏览器上提交的数据。
            // 第二个方法:获取的是请求域当中绑定的数据。
            
        • HttpServletRequest接口的其他常用方法:

          • // 获取客户端的IP地址
            String remoteAddr = request.getRemoteAddr();
            ​
            ​
            // get请求在请求行上提交数据。
            // post请求在请求体中提交数据。
             设置请求体的字符集。(显然这个方法是处理POST请求的乱码问题。这种方式并不能解决get请求的乱码问题。)
            // Tomcat10之后,request请求体当中的字符集默认就是UTF-8,不需要设置字符集,不会出现乱码问题。
            // Tomcat9前(包括9在内),如果前端请求体提交的是中文,后端获取之后出现乱码,怎么解决这个乱码?执行以下代码。
            request.setCharacterEncoding("UTF-8");
            ​
            ​
            // 在Tomcat9之前(包括9),响应中文也是有乱码的,怎么解决这个响应的乱码?
            response.setContentType("text/html;charset=UTF-8");
            //或者
            response.setCharacterEncoding("UTF-8");
            // 在Tomcat10之后,包括10在内,响应中文的时候就不在出现乱码问题了。以上代码就不需要设置UTF-8了。
            // 注意一个细节
            // 在Tomcat10包括10在内之后的版本,中文将不再出现乱码。
            ​
            ​
            // get请求乱码问题怎么解决?
            // get请求发送的时候,数据是在请求行上提交的,不是在请求体当中提交的。
            // get请求乱码怎么解决
            // 方案:修改CATALINA_HOME/conf/server.xml配置文件
            <Connector URIEncoding="UTF-8" />
            // 注意:从Tomcat8之后,URIEncoding的默认值就是UTF-8,所以GET请求也没有乱码问题了。
            ​
            ​
            // 获取应用的根路径
            String contextPath = request.getContextPath();//  /aaa// 获取请求方式
            String method = request.getMethod();
            ​
            // 获取请求的URI
            String uri = request.getRequestURI();  //  /aaa/testRequest// 获取servlet path
            String servletPath = request.getServletPath(); //   /testRequest