介绍
request对象是jsp中使用的频率最高的内置对象之一,表示的是客户端向服务端发送请求,主要作用就是接收客户端请求的信息,比如接收请求参数、请求头信息、Cookie,客户端IP等等
request方法
- String getContextPath()
获取上下文资源的路径 - Cookie[] getCookies()
获取Cookie - String getHeader(String name)
获取头信息 - Enumeration getHeaderNames()
获取所有的头信息的名称 - HttpSession getSession()
获取HttpSession对象 - String getServletPath()
获取请求路径 - String getParameter(String name)
根据参数名称获取参数的值 - Enumeration getParameterNames()
获取所有的参数的名称 - String[] getParameterValues(String name)
根据参数名称获取多个值 - String getRemoteAddr()
获取客户端IP - void setCharacterEncoding(String env)
设置请求的统一编码
。。。
通过request获得请求行
- 获得客户端的请求方式:
String getMethod()
GET POST - 获得请求的资源:
- String getRequestURI()
获得请求的uri(不包括http协议和主机名,端口号) - StringBuffer getRequestURL()
获得请求的URL String getContextPath()
获取web应用的名称- String getQueryString()
get提交url地址后的参数字符串
eg:username=zhangsan&password=123
- String getRequestURI()
通过request获得请求头
- long getDateHeader(String name)
- String getHeader(String name)
- Enumeration getHeaderNames()
- Enumeration getHeaders(String name)
- int getIntHeader(String name)
通过request获得请求体
- String getParameter(String name)
- String[] getParameterValues(String name)
- Enumeration getParameterNames()
- Map<String,String[]> getParameterMap()
解决提交乱码问题
- 解决post提交方式的乱码:
request.setCharacterEncoding(“UTF-8”); 解决get提交的方式的乱码:
parameter = new String(parameter.getbytes(“iso8859-1”),”utf-8”);其他功能
request是一个域对象
request对象也是一个存储数据的区域对象,所以也具有如下方法:
setAttribute(String name, Object o)
- getAttribute(String name)
- removeAttribute(String name)
请求转发
- 获得请求转发器—-path是转发的地址
RequestDispatcher getRequestDispatcher(String path) 通过转发器对象转发
requestDispathcer.forward(ServletRequest request, ServletResponse response)转发与重定向的区别?
- 重定向两次请求,转发一次请求
- 重定向地址栏的地址变化,转发地址不变
- 重新定向可以访问外部网站 转发只能访问内部资源
- 转发的性能要优于重定向
通过request获取客户端信息
- request.getRemoteAddr()
获得访问的客户端IP地址 - request.getRemoteHost()
获取请求客户端的完整主机名 - request.getRemotePort()
获取远程端口号
访问路径
- 相对路径
相对于前一级目录 - 绝对路径
转发,地址栏不变,跳转的时候不是按照跳转前后文件的目录级别来区别路径
而是根据当前页面的地址栏的路径和跳转后的路径来获取 ,所有转发使用绝对路径避免404错误