Web07(HttpServletRequest接口的常用方法 、转发与重定向)

一.HttpServletRequest接口的常用方法

HttpServletRequest接口的其他常用方法:

  1. 获取客户端的IP地址
    String remoteAddr = request.getRemoteAddr ( );
  1. 设置请求体的字符集。
    get请求在请求行上提交数据或post请求在请求体中提交数据。
    (显然这个方法是处理POST请求的乱码问题。这种方式并不能解决get请求的乱码问题。)
    Tomcat10之后,request请求体当中的字符集默认就是UTF-8,不需要设置字符集,不会出现乱码问题。

Tomcat9前〈包括9在内〉,如果前端请求体提交的是中文,后端获取之后出现乱码,怎么解决这个乱码?执行以下代码。 request.sefCharacterEncoding(“UTF-8”);
在Tomcat9之前(包括9〉,响应中文也是有乱码的,怎么解决这个响应的乱码?
response.setcontentType( “text/html ; charset=UTF-8”);
在Tomcat10之后,包括10在内,响应中文的时候就不在出现乱码问题了。以上代码就不需要设置UTF-8了。
注意一个细节
在Tomcat10包括10在内之后的版本,中文将不再出现乱码。(这也体现了中文地位的提升。)

get请求乱码问题怎么解决?
get请求发送的时候,数据是在请求行上提交的,不是在请求体当中提交的。
方案:修改CATALINA_HOME/conf/ server .xm1配置文件

注意:从Tomcat8之后,URIEncoding的黑默认值就是UTF-8,所以GET请求也没有乱码问题了。

  1. 获取应用的根路径
    String contextPath = request.getcontextPath();
  1. 获取请求方式
    String method = request.getMethod() ;
  1. 获取请求的URI
    String uri = request.getRequestURI();// /aaa/testRequest
  1. 获取servlet path
    String servletpath = request.getservletPath();// /testRequest

重定向和转发的区别和关系

转发
request.getRequestDispatcher(“/b”).forward(request,reponse);

重定向(重新定方向)
重定向时 路径需要以项目名开始,
response对象将这个路径 "/servlet01/b"相应给浏览器
浏览器又自发的想服务器发送了一次全新的请求:
http://localhost:8080/servlet01/b
所以浏览器用发送了俩次请求
第一次: http://localhost:8080/servlet01/a
第二次: http://localhost:8080/servlet01/b
最终浏览器地址栏上显示的地址是最后一次请求的地址,所以重定向会导致地址栏的地址发生改变
response.sendRedirect(request.getConnextPath() + “/b”);

形式上区别:

  • 转发(一次请求)

    在浏览器地址栏发送的请求是 http://localhost:8080/servlet01/a,最终请求结束后,浏览器的地址栏上还是这个没变

  • 重定向(俩次请求)
    在地址栏发送的请求是 http://localhost:8080/servlet01/a , 但是最后在浏览器地址栏显示的地址是 : http://localhost:8080/servlet01/b

转发和重定向的本质区别

  • 转发:是由WEB服务器来控制的,A资源跳转至B资源,这个跳转动作是Tomcat服务器内部完成的

  • 重定向:是浏览器完成的,具体跳转到哪个资源,是浏览器说了算

  • 1.转发和重定向应该如何选择?什么时候使用转发,什么时候使用重定向?
    如果在上一个Servlet当中向request域当中绑定了数据,希望从下一个Servlet当中把request域里面的数据取出来,使用转发机制。

    剩下所有的请求均使用重定向。(重定向使用较多。)

  • 2.跳转的下一个资源有没有要求呢?必须是一个Servlet吗?
    不一定,跳转的资源只要是服务器内部合法的资源即可。包括: Servlet、JSP、HTML…

  • 3.转发会存在浏览器的刷新问题。

猜你喜欢

转载自blog.csdn.net/m0_63061397/article/details/127804044