HttpServletRequest作用

Posted 好多个码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletRequest作用相关的知识,希望对你有一定的参考价值。

1、什么是HttpServletRequest

​ HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

 

2、HttpServletRequest的作用

通过Request对象进行的常用操作:

1. 获取请求行信息:请求方式,url和HTTP版本。
2. 获取请求头信息:浏览器类型,ip地址等。
3. 获取请求参数:url后面拼接的参数或者请求体中提交的参数;

2.1 获取请求行信息

请求行主要包括:请求方式url协议/版本 。HttpServletRequest对象提供了以下方法来获取这些信息

方法说明
String getMethod()获取请求方式的类型
StringBuffer getRequestURL()获取客户端发出请求完整URL
String getRemoteAddr()获取IP地址
String getProtocol()获取当前协议的名称和版本

案例】获取请求行信息

【java代码】

@WebServlet(name = "DemoServlet",urlPatterns = "/demo")
public class DemoServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
        doGet(request,response);
} 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
        /**
        * 1. String getMethod()
        获取请求方式的类型
        * */
        String method = request.getMethod();
        System.out.println("获取请求方式的类型:"+method);
​
        /**
        * 2. StringBuffer getRequestURL()
        获取客户端发出请求完整URL
        * */
        StringBuffer getRequestURL = request.getRequestURL();
        System.out.println("获取客户端发出请求完整URL:"+getRequestURL);
        /**
        * 3. String getProtocol()
        获取当前协议的名称和版本
        * */
        String getProtocol = request.getProtocol();
        System.out.println("获取当前协议的名称和版本:"+getProtocol);
        /**
        * 4. String getRemoteAddr()
        获取IP地址
        * */
        String getRemoteAddr = request.getRemoteAddr();
        System.out.println("获取IP地址:"+getRemoteAddr);
}
}

【结果】

启动服务器,访问Servlet得到结果如下:

获取请求方式的类型:GET
获取客户端发出请求完整URL: http://localhost:8080/day02/demo
获取当前协议的名称和版本:HTTP/1.1
获取IP地址:0:0:0:0:0:0:0:1

【注意事项】

  1. 如果浏览器地址栏中的地址为:http://localhost:8080 ,获取的ip地址为:0:0:0:0:0:0:0:1。

​ 通上述案例,我们可以发现,如果开发中服务器需要获取浏览器发送的行信息,使用对应的api 可以轻松获取!

第三章 request作用域

1、request的生命周期

【一次请求和响应的完整流程】
1、浏览器向servlet发送请求
2、tomcat收到请求后,创建Request和Response两个对象,并将请求数据封装到request对象中,然后传递给Servlet
3、Servlet接收到请求后,调用doget或者dopost方法。处理浏览器的请求信息,然后通过Response返回信息
4、tomcat接收到返回的信息,返回给浏览器。
5、浏览器接收到返回消息后,tomcat销毁Request和Response两个对象,同时销毁这两个对象所获得的信息。
  • 创建:浏览器给服务器发送请求后,tomcat创建request对象封装请求数据;

  • 销毁:服务器给浏览器响应信息结束后销毁;

特点:浏览器每次给服务器发送请求,服务器都会为这次请求创建一个request对象。

2 、request域对象

​ request域对象,一个存储数据的区域对象.是把request当成一个容器来存储数据,request域存储数据主要是用于在两个servlet之间传递数据。request作为域对象,常用的方法如下:

方法说明
void setAttribute(String name, Object o)往request域中设置值
Object getAttribute(String name)从request域中取值
void removeAttribute(String name)从request域中移除值

【注意】getParameter()方法和getAttribute()方法的区别

  1. getParameter()方法获取的是浏览器提交的数据(多是表单提交的数据);

  2. getAttribute()方法获取的是request域中的数据(通过request.setAttribute()设置的值);

3、 请求转发

我们之前使用到的请求都是从页面发出,然后请求到Servlet。其实,在Servlet中。请求也可以从一个Servlet发起,然后请求到另一个Servlet或静态页面。这项技术叫做请求转发。

​ 请求转发需要借助以下两个方法实现:

方法说明
RequestDispatcher getRequestDispatcher(String path)获取请求转发器(request对象方法)
void forward(ServletRequest request, ServletResponse response)将请求转发到另一个资源(Servlet)上

小结】转发

  1. 转发是服务器内部的跳转行为;

  2. 从一个Servlet转发到另一个资源(静态或动态),能够实现跳转,但是浏览器地址栏地址没有发生改变。因为对浏览器来说本质上就只有一次请求;

  3. 请求转发的作用:共享request域中的数据;

 

 

二.思维导图

 

以上是关于HttpServletRequest作用的主要内容,如果未能解决你的问题,请参考以下文章

这些 C++ 代码片段有啥作用?

这个代码片段有啥作用?

刷新片段不再起作用?

java代码在片段活动中不起作用

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

Javascript代码片段在drupal中不起作用