HttpServletResponse
我们创建servlet的时会覆盖service()方法,或doGet/doPost(),这些方法都有两个参数,一个代表请求request一个代表响应reponse;设置响应状态码:response.setStatus(304);302:重定向;304:访问缓存;404:地址错误;500:找不到服务器资源
Servlet是服务器端程序,主要用来交互式地浏览和修改数据,生成动态web内容。web服务器接收到客户端的Servlet请求后,如果检查到已经装载并创建了该Servlet的实例对象,则会创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表Http响应消息的HttpServletResponse对象,然后调用Servlet的service()方法,将请求和响应对象作为参数传递进去,这样客户端通过HttpServletRequest对象将请求发送给服务器,服务器通过HttpServletResponse对象将响应传递给客户端,达到通信的目的。
HttpServletResponse
request是请求对象,而response是响应对象。
1 HttpServletResponse功能介绍
response对象的功能分为以下四种:
设置响应头信息;addHeader(“reFresh”, “5;URL=xxxx”);
发送状态码;sendError(404);
设置响应正文;getWriter().print(“fdsfdsa”);
重定向:sendRedirect(“path”);
2 设置状态码及其他方法
response.setContentType("text/html;charset=utf-8"):设置响应类型为html,编码为utf-8,处理相应页面文本显示的乱码;
response.setCharacterEncoding(“utf-8”):如果响应类型为文本,那么就需要设置文本的编码类型,然后浏览器使用这个编码来解读文本。注意,如果没有设置contentType,那么浏览器会认为contentType为text/html,如果没设置编码,那么默认为ISO-8859-1编码。所以以上两点在使用response返回结果之前必须设置。
response.setStatus(200):设置状态码;
response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。
3 设置响应头信息
response.setHeader(“contentType”, “text/html;charset=utf-8”):与setContentType()方法的功能相同。setContentType()方法属于便捷方法;
刷新(定时重定向):
response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒后自动跳转到百度主页。
代码
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response不是服务器跳转,需要使用绝对路径
//给response设置编码,如果响应类型为文本,我们需要设置响应编码和文本编码
//设置响应类型和编码response.setContentType("text/html;charset=UTF-8")
//设置文本编码response.setCharacterEncoding("UTF-8")
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
//设置响应正文
response.getWriter().print("3秒后跳转到注册页面");
//3秒后跳转到1.html页面
//response.setHeader("reFresh", "3;URL=/request_demo5/1.html");
//设置状态码,一般不需要我们自己设置,这是由tomcat来分析的
//response.setStatus(404);
//response.setStatus(404, "页面找不到");
//response.sendError(500, "后台错误");
//重定向,又叫客服端跳转,访问百度,显著特征地址栏发生变化
//注意request.getRequestDispatcher().forward(request,response)是服务端跳转
response.sendRedirect("http://www.baidu.com");
/**
* forward和redirect的区别
* forward:是服务器端的跳转,地址栏不发生变化
* redirect:是客服端的跳转,地址栏发送变化
*/
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}