没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
实验报告 实践报告□
课程名称: Web 系统与技术 R19
实验、实践名称: Servlet 技术
实验、实践地点: 行勉 C2 实验室
专业班级: 学号:
学生姓名:
指导教师:
2023 年 5 月 10 日
一、实验目的和要求:
1.掌握 HTTPServlet 的使用
2. 掌握 ServletContext 接口的使用
3. 掌握 Request 对象的常用方法
4. 掌握 Servlet 会话技术
二、实验平台:
Jdk14.0.1,eclipse2023,tomcat8.5.16
三、主要实验内容及结果:
(1)案例背景:
由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互,因此,在 Servlet 接口中,
提供了
一个抽象类 javax.servlet.http.HttpServlet,它是 GenericServlet 的子类,专门用于创建应用于
HTTP 协
议的 Servlet。为了读者可以更好地了解 HttpServlet,本案例将演示重写 HttpServlet 中的
doGet()方法和
doPost()方法打印出九九乘法表。
(2)实现步骤:
查看 HttpServlet 源代码的 service ()方法,在方法中可以看到 get 请求调用 doGet()方法,
post 请求调用
doPost()方法,那么就可以直接重写 doGet ()和 doPost ()不需要重写 service ()方法了。
编写 ServletDemo1 类,在 doGet ()方法和 doPost()方法中用双重 for 循环打印九九乘法
表
1Web 系统与技术 R 实验指导书
2
编写 multiTable.html 页面,包含两个表单 form,第一个表单提交方式设置为 get,表单
页面
使用 input 标签配置一个按钮,单击按钮可以 get 方式访问 ServletDemo1 类;第二个表单
设
置提交方式为 post,表单页面使用 input 标签配置一个按钮,单击按钮可以 post 方式访问
到
ServletDemo1 类
通过浏览器访问 multiTable.html 页面,分别单击其页面上的“get 提交”按钮和“post
提交”
按钮,对 ServletDemo1 进行访问,观察输出结果
(3) 源代码及相应运行结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/bootstrap/ServletDemo1" method="get">
<input type="submit" value="get 提交">
</form>
<form action="http://localhost:8080/bootstrap/ServletDemo1" method="post">
<input type="submit" value="post 提交">
</form>
</body>
</html>
multiTable.html
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletDemo1" , urlPatterns = "/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().print("get 提交方式<br/>");
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
resp.getWriter().print(j + "*" + i + "=" + j * i+" ");
}
resp.getWriter().print("<br/>");
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().print("post 提交方式<br/>");
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
resp.getWriter().print(j + "*" + i + "=" + j * i+" ");
}
resp.getWriter().print("<br/>");
}
}
}
ServletDemo1
通过运行 multiTable 文件出现以下页面
当点击 get 是出现以下界面,即跳转到 Servlet Demo1
当点击 post 提交时出现以下界面
2. ServletContext 接口实现数据共享用
(1)案例背景:
由于一个 Web 应用中的所有 Servlet 共享同一个 ServletContext 对象,因此 ServletContext
对象的域属
性可以被该 Web 应用中的所有 Servlet 访问。为了让初学者熟悉 ServletContext 对象,本
案例将通过网站统
计访问次数的案例演示用 ServletContext 对象实现多个 Servlet 对象的数据共享。
(2)实现步骤:
统计网站的访问次数:
创建两个 Servlet,ServletDemo2 用于存储,ServletDemo3 用于显示
在类 ServletDemo2 中给次数(count)设置一个初始值 0 存入到 ServletContext 中
每次访问 doGet()方法就会执行 count + 1,并将 count 值存入到 ServletContext 中
在类 ServletDemo3 中用 getAttribute ("count")方法获取到 count 值。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletDemo2" , urlPatterns = "/ServletDemo2")
public class ServletDemo2 extends HttpServlet {
public void init() throws ServletException {
// 给次数设置一个初始值 0
int count = 0;
// 将 0 存入到 ServletContext 中
getServletContext().setAttribute("count", count);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 将原来的次数取出来
int count = (Integer) getServletContext().getAttribute("count");
count += 1;
// 存入到 SErvletContext 中
getServletContext().setAttribute("count", count);
// 向页面输出欢迎光临!
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("<h1>欢迎光临本网站! 这是您第"+count+"次访
问</h1>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ServletDemo2
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletDemo3" , urlPatterns = "/ServletDemo3")
public class ServletDemo3 extends HttpServlet {
剩余41页未读,继续阅读
资源评论
everfjp
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- React框架速成技巧:前端新手变高手指导教程
- javaSSM整合的一个小项目(员工管理系统)
- 硬件开发-降额基础知识-H3C元器件降额规范
- CATIA快速螺栓自解压安装包,FastBolt快速装螺栓工具
- 臭豆腐工具箱UG版安装包v013,非常好用的UG设计插件
- 臭豆腐工具箱CATIA版安装包,最好用的CATIA设计插件
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本120.0.6087.0)
- php goto解密脚本源码
- SCH_Schematic1_2024-04-16.pdf
- 传染病防控宣传微信小程序系统的设计与实现+springboot后端源码案例设计.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功