一、request请求对象
1.请求对象常用方法-获取各种路径
返回值 方法名 说明
String getContextPath() 获取虚拟目录名称
String getServletPath() 获取Servlet映射路径
String getRemoteAddr() 获取访问者ip地址
String getQueryString() 获取请求的消息数据
String getRequestURI() 获取统一资源标识符
StringBuffer getRequeatURL() 获取统一资源定位符
2.请求对象常用方法-获取请求头信息
返回值 方法名 说明
String getHeader(String name) 根据请求头名称获取一个值
Enumeration<String> getHeaders(String name) 根据请求头名称获取多个值
Enumeration<String> getHeaderNames() 获取所有请求头名称
3.请求对象常用方法-获取请求参数信息
返回值 方法名 说明
String getParameter(String name) 根据名称获取数据
String[] getParameterValues(String name) 根据名称获取所有数据
Enumeration<String> getParameterNames() 获取所有名称
Map<String, String[]> getParameterMap() 获取所有参数的键值对
4.流对象获取请求信息
返回值 方法名 说明
BufferedReader getReader() 获取字符输入流
ServletInputStream getInputStream() 获取字节输入流
5.中文乱码问题
GET方式,没有乱码。在Tomcat 8 版本后已经解决
POST方式,有乱码问题。可以通过setCharacterEncoding()方法来解决
request.setCharacterEncoding("UTF-8");
6.请求域request域
返回值 方法名 说明
void setAttribute(String name, Object value) 向请求域对象中存储数据
Object getAttribute(String name) 通过名称获取请求域对象中的数据
void removeAttribute(String name) 通过名称移除请求域对象中的数据
7.请求转发
返回值 方法名 说明
RequestDispatcher getRequestDispatcher(String name) 获取请求调度对象
void forward(ServletRequest request, ServletResponse response) 实现转发
8.请求包含
返回值 方法名 说明
RequestDispatcher getRequestDispatcher(String name) 获取请求调度对象
void include(ServletRequest request, ServletResponse response) 实现包含
二、response响应对象
1.响应流解决乱码问题
解决乱码 response.setContextType("txt/html;charset=UTF-8");
2.字节流响应消息
返回值 方法名 介绍
ServletOutputStream getOutputStream() 获取响应字节输出流对象
3.字符流响应消息
返回值 方法名 介绍
PrintWriter getWriter() 获取响应字符输出流对象
4.设置缓存:对于不经常变化的数据,我们可以设置合理缓存时间,以避免浏览器频繁请求服务器。以此来提高效率
返回值 方法名 介绍
void setDateHeader(String name, long time) 设置消息头添加缓存
//例如:response.setDateHeader("Expires", System.currentTimeMillis() + 1*60*60*1000); //1小时的缓存时间
5.定时刷新:过了指定时间后,页面自动进行跳转
返回值 方法名 介绍
void setHeader(String name, String value) 设置消息头定时刷新
//例如:response.setHeader("Refresh", "5,URL=/response/login.jsp"); //5秒后跳转到登录页面
6.请求重定向:客户端的一次请求到达后,发现需要借助其他Servlet来实现功能
特点:浏览器地址栏会发生改变,两次请求,请求域对象中不能共享数据,可以重定向到其他服务器。
方式一://设置响应状态码为302
response.setStatus(302);
//设置响应的资源路径响应到哪里去,通过响应消息头location()来指定
response.setHeader("location", "/response/servletDemo01");
方式二://响应重定向方法
返回值 方法名 介绍
void sendRedirect(String name) 设置重定向
//例如:response.sendRedirect(request.getContextPath() + "/servletDemo01");
7.文件下载
设置响应头支持的类型
response.setHeader("Content-Type", "application/octet-stream");
//Content-Type 消息头名称 支持的类型
//application/octet-stream 消息头参数 应用的类型为字节流
设置响应头以下载方式打开附件
response.setHeader("Content-Disposition", "attachment;filename=jk.png");
//Content-Disposition 消息头名称 处理的形式
//attachment;filename=jk.png 消息头参数 附件形式处理 指定下载文件的名称