多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # HTTP请求 ![](https://box.kancloud.cn/25b3b4f27b8c354db8fc3f4b810cb5e8_1640x682.jpg) # request获得请求行 获得客户端的请求方式:String getMethod() 获得请求的资源: ~~~ String getRequestURI() StringBuffer getRequestURL() String getContextPath() ---web应用的名称 String getQueryString() ---- get提交url地址后的参数字符串 username=zhangsan&password=123 ~~~ 注意:request获得客户机(客户端)的一些信息 request.getRemoteAddr() --- 获得访问的客户端IP地址 # request获得请求头 ~~~ long getDateHeader(String name) String getHeader(String name) Enumeration getHeaderNames() Enumeration getHeaders(String name) int getIntHeader(String name) ~~~ referer头的作用:执行该此访问的的来源 做防盗链 # request获得请求体 请求体中的内容是通过post提交的请求参数,格式是: ~~~ username=zhangsan&password=123&hobby=football&hobby=basketball key ---------------------- value username [zhangsan] password [123] hobby [football,basketball] ~~~ 以上面参数为例,通过一下方法获得请求参数: ~~~ String getParameter(String name) String[] getParameterValues(String name) Enumeration getParameterNames() Map<String,String[]> getParameterMap() ~~~ 注意:get请求方式的请求参数 上述的方法一样可以获得 解决post提交方式的乱码:request.setCharacterEncoding("UTF-8"); 解决get提交的方式的乱码(每一个参数都要这样): parameter = new String(parameter.getBytes("iso8859-1"),"utf-8"); # request的其他功能 ## request是一个域对象 request对象也是一个存储数据的区域对象,所以也具有如下方法: ~~~ setAttribute(String name, Object o) getAttribute(String name) removeAttribute(String name) ~~~ 注意:request域的作用范围:一次请求中 ## request完成请求转发 获得请求转发器----path是转发的地址 ~~~ RequestDispatcher getRequestDispatcher(String path) ~~~ 通过转发器对象转发 ~~~ requestDispathcer.forward(ServletRequest request, ServletResponse response) ~~~ ~~~ RequestDispatcher requestDispathcer = request.getRequestDispatcher("/MyRequest"); requestDispathcer.forward(request, response); ~~~ # ServletContext域与Request域生命周期 ServletContext: 创建:服务器启动 销毁:服务器关闭 域的作用范围:整个web应用 request: 创建:访问时创建request 销毁:响应结束request销毁 域的作用范围:一次请求中 # 转发与重定向的区别 1)重定向两次请求,转发一次请求 2)重定向地址栏的地址变化,转发地址不变 3)重新定向可以访问外部网站 转发只能访问内部资源 4)转发的性能要优于重定向 # 客户端地址与服务器端地址的写法? 客户端地址: 是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名称 直接输入地址: 重定向 服务器端地址: 服务器内部资源的跳转的地址,特点:不需要写web应用的名称