我们上次说了Response
今天我们来聊聊它的小伙伴Request
Request
1)HttpServletRequest 概述
在创建 Servlet 时会覆盖 service() 方法,或 doGet()/doPost(), 这些方法都有两个参数,一个为代表请求的 request 和代表响应 response。
service 方法中的 request 的类型是 ServletRequest,而 doGet/doPost 方法的request 的类型是 HttpServletRequest,HttpServletRequest 是 ServletRequest 的子接口,功能和方法更加强大,今天我们学习 HttpServletRequest。
因为 request 代表请求,所以我们可以通过该对象分别获得 Http 请求的请求行,请求头和请求体。
2)通过 request 获得请求行
获得客户端的请求方式:
String getMethod()
获得请求的资源:
String getRequestURI()
StringBuffer getRequestURL()
String getContextPath()
String getQueryString()
request.getRemoteAddr()
3)通过 request 获得请求头
long getDateHeader(String name)
String getHeader(String name)
Enumeration getHeaderNames()
Enumeration getHeaders(String name)
int getIntHeader(String name)
这里只展示最常用的两种方法~
4)通过 request 获得请求体
请求体中的内容是通过 post 提交的请求参数,通过一下方法获得请求参数:
String getParameter(String name)
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map getParameterMap()
注意:
get 请求方式的请求参数 上述的方法一样可以获得
5)request 的其他功能
request 是一个域对象
request 对象也是一个存储数据的区域对象,所以也具有如下方法:
setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
request 完成请求转发
获得请求转发器----path 是转发的地址
RequestDispatcher getRequestDispatcher(String path)
通过转发器对象转发
requestDispathcer.forward(ServletRequest request, ServletResponse response)
转发就好像我们去找张三借钱,张三没有但是张三去找了别人弄到了钱。来借给我们,我们只知道我们是从张三哪里借到了钱,其他的就不晓得了。
页面的请求路径还是在servlet1并没有改变~
转发与重定向的区别?
1)重定向两次请求,转发一次请求
2)重定向地址栏的地址变化,转发地址不变
3)重新定向可以访问外部网站,转发只能访问内部资源
4)转发的性能要优于重定向
那么今天就到这里了
小伙伴们再见了
公众号:javafirst
网友评论