【传智播客】Javaweb程序设计任务教程 黑马程序员 第四章 课后答案

it2023-08-21  79

所有章节答案合集——>传送门


【测一测】 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1、简述请求转发与重定向的异同?(至少写3点) 2、请写出禁止浏览器缓存页面的核心代码。 3、请编写一个类,该类能够实现访问完app应用下的Servlet后,还能在浏览器地址栏中显示出index.jsp的路径。 4、请编写一个类,该类使用HttpServletRequest对象的getHeader(“referer”)方法实现下载资源防盗链的功能。


【答案】

1、请求转发与重定向的异同点如下: 1)请求转发和重定向都可以实现访问一个资源时转向当前应用资源 2)请求转发是一次请求一次响应,而重定向为两次请求两次响应 3)一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力 4)如果需要改变浏览器的地址栏,或更改浏览器的刷新按钮的功能时需要使用重定向

2、禁止浏览器缓存页面的核心代码如下:

response.setDateHeader("Expires",0); response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache");

3、实现代码如下: (1)MyServlet程序类如下:

public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { System.out.println("这里是MyServlet!"); response.sendRedirect(request.getContextPath() + "/index.jsp"); } }

(2)web.xml文件配置如下: MyServlet cn.itcast.chapter04.servlet.MyServlet MyServlet /MyServlet

4、该功能的实现步骤如下: 1)创建一个DownManagerServlet类,使其继承HttpServlet类并重写该类的doGet()方法。 2)在doGet()方法中,使用HttpServletRequest对象的getHeader(“referer”)方法得到字段referer的值,并判断是否可以进行资源下载。 3)如果不能下载,则进入下载页(需要在Eclipse的WebContent目录下创建一个download.html)。 (1)DownManagerServlet类的实现代码如下: public class DownManagerServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/html;charset=utf-8”); PrintWriter out = response.getWriter(); // 获取referer头的值 String referer = request.getHeader(“referer”); // 获取访问地址 String sitePart = “http://” + request.getServerName(); if (referer != null && referer.startsWith(sitePart)) { // 处理正在下载的请求 out.println(“dealing download …”); } else { // 非法下载请求跳转到download.html页面 RequestDispatcher rd = request .getRequestDispatcher("/download.html"); rd.forward(request, response); } } } (2)web.xml文件中DownManagerServlet的映射信息配置如下:

<servlet> <servlet-name>DownManagerServlet</servlet-name> <servlet-class> cn.itcast.chapter04.servlet.DownManagerServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>DownManagerServlet</servlet-name> <url-pattern>/DownManagerServlet</url-pattern> </servlet-mapping>

整理不易, 如果喜欢的话,还请给博主一个赞哦,让更多的人看到这篇文章

最新回复(0)