[Web程序设计]实验: 请求与响应 您所在的位置:网站首页 请求与要求 [Web程序设计]实验: 请求与响应

[Web程序设计]实验: 请求与响应

2024-06-28 17:46| 来源: 网络整理| 查看: 265

一、实验目的

(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 实验室设备网 版权所有