这节课我们来讲HttpServletResponse接口
public interface HttpServletResponse extends ServletResponse
可以看到HttpServletResponse接口是ServletResponse的子接口
里面有很多方法,就不细讲了,反正也不常用
说下HttpServletResponse的作用:
- 可以通过HttpServletResponse对象获取PrintWriter后向页面输出数据
- 重定向
HttpServletResponseTeachServlet.java
package com.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * HttpServletResponse的作用: * 1.可以通过HttpServletResponse对象获取PrintWriter后向页面输出数据 * 2.重定向 */ public class HttpServletResponseTeachServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String url = req.getRequestURL().toString(); if (url.endsWith("/printWriter")) { printWriterTeach(req,resp); } if (url.endsWith("/redirect")) { redirectTeach(req,resp); } if (url.endsWith("/123")) { System.out.println("重定向到请求 /123"); } } private void printWriterTeach(HttpServletRequest req, HttpServletResponse resp) { PrintWriter writer = null; try { //这个是设置字符编码 //不过过滤器应该已经过滤好了 resp.setCharacterEncoding("UTF-8"); writer = resp.getWriter(); writer.write("<a href='javascript:void(0)'>开源中国</a>"); //Chrome默认编码好像是gbk,我等会去设置一下 //360浏览器可以自动检测出UTF-8编码 } catch (IOException e) { e.printStackTrace(); }finally { if (writer != null) writer.close(); } } private void redirectTeach(HttpServletRequest req, HttpServletResponse resp) { try { resp.sendRedirect("/123"); //重定向: 向服务器发起新的请求,且浏览器地址栏变成重定向请求的url } catch (IOException e) { e.printStackTrace(); } } }
web.xml
<servlet> <servlet-name>ResponseServlet</servlet-name> <servlet-class>com.servlet.HttpServletResponseTeachServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ResponseServlet</servlet-name> <url-pattern>/printWriter</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ResponseServlet</servlet-name> <url-pattern>/redirect</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ResponseServlet</servlet-name> <url-pattern>/123</url-pattern> </servlet-mapping>