常见请求头
- User-Agent:浏览器版本信息,可以解决浏览器兼容性问题
- Referer:请求来源地址,可以防盗链和统计
Request
方法
- 获取请求方式:
String getMethod()
- 获取虚拟目录:
String getContextPath()
- 获取Servlet路径:
String getServletPath()
- 获取get方式请求参数:
String getQueryString()
- 获取请求URI:
String getRequestURI()
: /day/demoStringBuffer getRequestURL()
: http://localhost/day/demo- URL:统一资源定位符 : http://localhost/day/demo
- URI:统一资源标识符 : /day/demo
- 获取协议及版本:
String getProtocol()
- 获取客户机的IP地址:
String getRemoteAddr()
获取请求参数通用方式
String getParameter(String name)
根据参数名称获取参数值
String[] getParameterValues(String name)
根据参数名称获取参数值的数组
Enumeration<String> getParameterNames()
获取所有请求的参数名称Map<String,String[]> getParameterMap()
获取所有参数的map集合
请求转发
request.getRequestDispatcher(String path).forward(request, response)
特点
- 浏览器地址不变
- 只能转发当前服务器内部资源中
- 只有一次请求
共享数据
通过域对象
application > session > request > page
响应消息
响应状态码
- 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
- 2xx:成功。代表:200
- 3xx:重定向。代表:302(重定向),304(访问缓存)
- 4xx:客户端错误。代表:404(请求路径没有对应的资源)、405(请求方式没有对应的doXxx方法)
- 5xx:服务器端错误。代表:500(服务器内部出现异常)
常见响应头
- Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
- Content-disposition:服务器告诉客户端以什么格式打开响应体数据
- in-line:默认值,在当前页面内打开
- attachment;filename=xxx:以附件形式打开响应体。文件下载
Response
设置响应消息
- 设置状态码:
setStatus(int sc)
- 设置响应头:
setHeader(String name, String value)
重定向
response.sendRedirect(String path)
特点
- 地址栏发生变化
- 可以访问其他服务器的资源
- 两次请求
中文乱码问题
request
- get方式:tomcat 8 已经将get方式乱码问题解决了
- post方式:在获取参数前,设置request的编码
request.setCharacterEncoding("utf-8")
response
response.setContentType("text/html;charset=utf-8")
路径问题
- 相对路径:以.开头
- ./ : 当前目录
- ../ : 后退一级目录
- 绝对路径:以/开头
- 客户端使用,需要加虚拟目录,动态目录获取:
request.getContextPath()
- <a>、<form>、重定向……
- 服务端使用,不用加虚拟目录
- 转发路径