[Web程序设计]实验: 请求与响应 | 您所在的位置:网站首页 › 请求与要求 › [Web程序设计]实验: 请求与响应 |
一、实验目的
(1)掌握浏览器请求时数据的传递和获取。 (2)掌握服务端响应时数据的传递及获取。 二、实验内容(1)编写一个类,该类能够实现在访问完Servlet后,还能在浏览器地址栏中显示出index.jsp路径; (2)请编写一个类,该类使用HttpServletRequest对象的getHeader("referer")方法实现下载资源防盗链的功能。 三、实验要求(1)掌握HttpServletRequest对象及其应用 (2)掌握HttpServletResponse对象及其应用 (3)掌握请求转发及请求重定向的实现 (4)掌握如何解决中文乱码问题 (1)做好预习,明确实验目的 (2)对试验过程认真记录,分析错误原因 (3)总结操作步骤 四、实验步骤与结果(包含程序代码及运行截图)(1)编写一个类,该类能够实现在访问完Servlet后,还能在浏览器地址栏中显示出index.jsp路径 创建一个IndexServlet类,继承HttpServlet类,重写里面的doPost方法,在web.xml里面配置url请求路径,使用HttpServletResponse对象提供的重定向sendRedirect方法跳转至index.jsp页面。使用HttpServletRequest、HttpServletRequest对象的setCharacterEncoding方法,处理获取、相应数据的编码,避免乱码。 类的代码及截图: package com.servlert;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class IndexServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //编码 req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); //重定向 resp.sendRedirect("index.jsp"); }} 运行效果: 在浏览器的输入栏输入 http://localhost:8086/myservlet_war_exploded/indexServlet链接,跳转至index.jsp页面,前后的运行效果图如下。 点击回车键后,进入index.jsp页面的界面截图。 (2)请编写一个类,该类使用HttpServletRequest对象的getHeader("referer")方法实现下载资源防盗链的功能。 创建一个DownManagerServlet类,继承HttpServlet类,重写里面的doPost方法,在web.xml里面配置url请求路径。 类的代码及截图: package com.servlert;import javafx.print.Printer;import javax.servlet.RequestDispatcher;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;public class DownManagerServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //编码 req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); PrintWriter out=resp.getWriter(); //获取referer头的值 String referer = req.getHeader("referer"); //获取访问地址 String sitePart = "http://"+req.getServerName(); //获取referer头是否为空,这个头的首地址是否以sitePart开始的 if(referer!=null&&referer.startsWith(sitePart)){ //处理正在下载的请求 out.print("dealing download~"); }else{ //非法下载请求跳转到down.html页面 RequestDispatcher rd = req.getRequestDispatcher("/down.html"); rd.forward(req,resp); } }} 页面的代码及截图: download download 运行效果截图: 第一次访问: 第二次访问: (1)创建web项目后,创建IndexServlet类,继承HttpServlet,重写里面的doPost或者doGet方法时,HttpServlet找不到,通过排查、查询发现没有导入servlet-api.jar架构。 (2)访问自己定义的Servlet的url,访问不到,发现自己没有在web.xml中 配置url路径,在里面配置好后就可以了。 (3)在down.html里面的a链接加href的链接,点击后发现不对,没反应,发现自己把url的路径写错了,多写了一个“/”。 |
CopyRight 2018-2019 实验室设备网 版权所有 |