当前位置: 首页 > 图灵资讯 > 技术篇> request对象的常用方法

request对象的常用方法

来源:图灵教育
时间:2023-05-28 09:29:28

1乱码问题25

///get请求在请求行提交数据。

///post请求在请求体中提交数据。

//设置请求体的字符集。(显然,这种方法是处理POST请求的乱码问题。这种方法无法解决获得请求的乱码问题。)

///Tomcat10后,request请求体中的字符集默认为UTF-8,无需设置字符集,无乱码问题。

///Tomcat9前(包括9),如果前端请求体提交中文,后端获取后出现乱码,如何解决这个乱码?执行以下代码。

request.setCharacterEncoding("UTF-8");

1.1在Tomcat9之前(包括9),响应中文也有乱码。如何解决这个响应的乱码?25

response.setContentType("text/html;charset=UTF-8");

///Tomcat10后,包括10,响应中文时不会出现乱码问题。上述代码不需要设置UTF-8。

//注意细节

///在Tomcat10包括10之后的版本中,中文将不再乱码。(这也反映了中文地位的提高。)

如何解决1.2get请求乱码问题?25

///get请求发送时,数据在请求行上提交,而不是在请求体中提交。

//如何解决get请求的乱码?

//方案:修改CATALINA_HOME/conf/server.xml配置文件

//注:从Tomcat8开始,URIEncoding的默认值就是UTF-8,所以GET请求也没有乱码问题。

com中的代码.bjpowernode.javaweb.servletRequestTestServlet
package com.bjpowernode.javaweb.servlet;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;///request对象的常用方法  24-25publiclic class RequestTestServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        ///获取客户端的ip地址        String remoteAddr = request.getRemoteAddr();        System.out.println(客户端ip地址=”+remoteAddr);//客户端ip地址=127.0.0.1    }    //设置请求体的字符集。(显然,这种方法是处理POST请求的乱码问题。(显然,这种方法是处理POST请求的乱码问题。    // 这种方法并不能解决get请求的乱码问题。)24-25    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 设置请求体的字符集        //request.setCharacterEncoding("UTF-8");        //中文响应也有乱码。如何解决这个响应的乱码?  25        // response.setContentType("text/html;charset=UTF-8");                ///这是POST请求        String username = request.getParameter("username");        ////输出用户提交的用户名        System.out.println(username);    }}
register.html
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>user register</title></head><body><h1>user register</h1><form action=/servlet09/testRequest" method="post">    username:<input type="text" name="username"><br>    <br>    <input type="submit" value="register"></form></body></html>
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="https://www.tulingxueyuan.cn/d/file/p/20230528/bhmgw0i3m3s"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"         version="4.0">    <!--    这是Requestestservlet的配置-->    <servlet>        <servlet-name>requestTest</servlet-name>        <servlet-class>com.bjpowernode.javaweb.servlet.RequestTestServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>requestTest</servlet-name>        <url-pattern>/testRequest</url-pattern>    </servlet-mapping></web-app>
2.其他常用的Httpservletrequest接口方法:24-25

///获取客户端IP地址

StringremoteAddr=request.getRemoteAddr();

///获取应用程序的根路径

StringcontextPath=request.getContextPath();

//获取请求的方式

Stringmethod=request.getMethod();

////获取请求的URI

Stringuri=request.getRequestURI();///aaa/testRequest

//获得servetpath

StringservletPath=request.getServletPath();///testRequest

com中的代码.bjpowernode.javaweb.servletMethodTest
package com.bjpowernode.javaweb.servlet;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;public class MethodTest extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        ///获取客户端的ip地址        String remoteAddr = request.getRemoteAddr();        System.out.println(客户端ip地址=”+remoteAddr);//客户端ip地址=127.0.0.1        // 获取应用程序的根路径,这种方法用得更多,因为它能动态地获得应用程序的根路径        String contextPath = request.getContextPath();        System.out.println(”应用的根路径:"+contextPath);// 应用的根路径:/servlet09        // 获取请求的方式        String method = request.getMethod();        System.out.println(“请求方式”+method);///请求方式GET        // 获取要求的URI        String requestURI = request.getRequestURI();        System.out.println(“请求URI=”+requestURI);//请求URI=/servlet09/test        // 获取servlet path        String servletPath = request.getServletPath();        System.out.println(”获得servletet path="+servletPath);//获得servletet path=/test    }}
web.xml
 <!--    这是Methodtest的配置-->    <servlet>        <servlet-name>methodTest</servlet-name>        <servlet-class>com.bjpowernode.javaweb.servlet.MethodTest</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>methodTest</servlet-name>        <url-pattern>/test</url-pattern>    </servlet-mapping>

上一篇:

Linux篇三

下一篇:

级联查询