[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);
       }
   }
}

页面的代码及截图:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8" content="text/html;UTF-8">    <title>download</title>
</head>
<body>
   <a href="DownManagerServlet">
       download
   </a></body>
</html>

运行效果截图:

第一次访问:

第二次访问:

五、实验反思

(1)创建web项目后,创建IndexServlet类,继承HttpServlet,重写里面的doPost或者doGet方法时,HttpServlet找不到,通过排查、查询发现没有导入servlet-api.jar架构。

(2)访问自己定义的Servlet的url,访问不到,发现自己没有在web.xml中

配置url路径,在里面配置好后就可以了。

(3)在down.html里面的a链接加href的链接,点击后发现不对,没反应,发现自己把url的路径写错了,多写了一个“/”。

相关文章
|
15天前
|
JSON 前端开发 Java
Spring Web MVC入门(3)——响应
Spring Web MVC入门(3)——响应
22 1
|
15天前
|
存储 前端开发 Java
Spring Web MVC入门(2)——请求(下)
Spring Web MVC入门(2)——请求
19 0
|
15天前
|
JSON 前端开发 Java
Spring Web MVC入门(2)——请求(上)
Spring Web MVC入门(2)——请求
12 0
|
20天前
|
机器学习/深度学习 SQL 人工智能
Web LLM 实验:间接注入
Web LLM 实验:间接注入
|
20天前
|
机器学习/深度学习 存储 SQL
Web LLM 实验:利用 LLM 中不安全的输出处理
Web LLM 实验:利用 LLM 中不安全的输出处理
|
20天前
|
机器学习/深度学习 SQL 人工智能
Web LLM 实验:利用 LLM API 实现命令注入
Web LLM 实验:利用 LLM API 实现命令注入
|
20天前
|
SQL 机器学习/深度学习 人工智能
Web LLM 实验:利用 LLM API 实现 SQL 注入
Web LLM 实验:利用 LLM API 实现 SQL 注入
|
1月前
|
JSON JavaScript API
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
49 1
|
1月前
|
JSON JavaScript 中间件
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
23 2
|
1月前
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
26 0