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
【注意事项】
-
如果浏览器地址栏中的地址为: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()方法的区别
-
getParameter()方法获取的是浏览器提交的数据(多是表单提交的数据);
-
getAttribute()方法获取的是request域中的数据(通过request.setAttribute()设置的值);
3、 请求转发
我们之前使用到的请求都是从页面发出,然后请求到Servlet。其实,在Servlet中。请求也可以从一个Servlet发起,然后请求到另一个Servlet或静态页面。这项技术叫做请求转发。
请求转发需要借助以下两个方法实现:
方法 | 说明 |
---|---|
RequestDispatcher getRequestDispatcher(String path) | 获取请求转发器(request对象方法) |
void forward(ServletRequest request, ServletResponse response) | 将请求转发到另一个资源(Servlet)上 |
小结】转发
-
转发是服务器内部的跳转行为;
-
从一个Servlet转发到另一个资源(静态或动态),能够实现跳转,但是浏览器地址栏地址没有发生改变。因为对浏览器来说本质上就只有一次请求;
-
请求转发的作用:共享request域中的数据;
二.思维导图
以上是关于HttpServletRequest作用的主要内容,如果未能解决你的问题,请参考以下文章