JavaWeb之Request——转发功能的实现

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!JavaWeb之Request——转发功能的实现JavaWeb之Request——转发功能的实现


来源:java团长

https://mp.weixin.qq.com/s/4PQA5OTvEYTaJF3Yacd10w

程序员大咖整理发布,转载请联系作者获得授权


我们上次说了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()


JavaWeb之Request——转发功能的实现


JavaWeb之Request——转发功能的实现

 

3)通过 request 获得请求头

long getDateHeader(String name)

String getHeader(String name)

Enumeration getHeaderNames()

Enumeration getHeaders(String name)

int getIntHeader(String name)


这里只展示最常用的两种方法~

JavaWeb之Request——转发功能的实现


4)通过 request 获得请求体

请求体中的内容是通过 post 提交的请求参数,通过一下方法获得请求参数:

String getParameter(String name) 

String[] getParameterValues(String name)

Enumeration getParameterNames()

Map<String,String[]> getParameterMap()


JavaWeb之Request——转发功能的实现


注意:

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)


转发就好像我们去找张三借钱,张三没有但是张三去找了别人弄到了钱。来借给我们,我们只知道我们是从张三哪里借到了钱,其他的就不晓得了。


JavaWeb之Request——转发功能的实现

页面的请求路径还是在servlet1并没有改变~


转发与重定向的区别?

1)重定向两次请求,转发一次请求

2)重定向地址栏的地址变化,转发地址不变

3)重新定向可以访问外部网站,转发只能访问内部资源

4)转发的性能要优于重定向

JavaWeb之Request——转发功能的实现JavaWeb之Request——转发功能的实现【点击成为源码大神】


▼点击「阅读原文」进入程序员商城