Servlet Filtering开发详解
需积分: 19 83 浏览量
更新于2024-08-17
收藏 2.87MB PPT 举报
"Servlet技术的学习PPT涵盖了Filtering的开发步骤以及Java Web的相关基础知识,包括B/S编程模型、HTTP协议的介绍、Servlet的接口和Web容器等概念。"
在Servlet学习中,Filtering是一个重要的部分,它允许我们对HTTP请求和响应进行拦截和处理。Filtering的开发步骤如下:
1. 创建Filter类:首先,你需要创建一个新的Java类并实现`javax.servlet.Filter`接口。这个类将成为你的过滤器,通过实现Filter接口,你可以定义如何处理HTTP请求和响应。
2. 实现Filter方法:在Filter类中,主要关注三个方法:`init()`、`doFilter()`和`destroy()`。`init()`方法在过滤器初始化时调用,可以用于设置初始化参数。`doFilter()`方法是过滤的核心,它会在每次请求到达目标Servlet之前和之后被调用,你可以在这里编写过滤逻辑。`destroy()`方法在过滤器被销毁时调用,用于清理资源。
3. 配置Filter:接下来,你需要在`web.xml`部署描述符文件中配置你的Filter。通过`<filter>`元素定义过滤器,然后使用`<filter-mapping>`元素将过滤器与特定的URL模式、Servlet或整个Web应用关联起来。这样,每当匹配的请求发生时,你的过滤器就会介入。
HTTP协议是Web应用的基础,它是一个无状态、无连接的应用层协议,基于TCP/IP。HTTP通信通常包含以下四个阶段:
1. 建立连接:客户端(通常是浏览器)连接到服务器的指定端口(默认是80)。
2. 发送请求:客户端发送HTTP请求,请求可能包括GET、POST等方法,以及URL、请求头和请求体等信息。
3. 接收响应:服务器处理请求并返回HTTP响应,响应中包含状态码、响应头和响应体。
4. 关闭连接:完成通信后,客户端和服务器关闭TCP连接。
了解HTTP协议有助于理解Servlet的工作原理。Servlet是一种Java技术,它提供了处理HTTP请求的能力。在Servlet中,`web.xml`文件用来配置Servlet,包括Servlet的映射和初始化参数。Servlet的调用过程包括了容器接收请求、解析请求、实例化Servlet、调用Servlet的方法处理请求,并最终返回响应。
Web容器,如Tomcat、Jetty等,是运行Servlet的环境,它们负责管理Servlet的生命周期,包括加载、初始化、服务和销毁Servlet实例。Web容器也处理HTTP请求的路由,确保请求到达正确的Servlet。
在B/S(Browser/Server)编程模型中,客户端通过HTTP协议与服务器通信,浏览器作为客户端代理,负责发送请求和显示服务器响应的内容。理解这些基本概念对于深入学习Servlet和Java Web开发至关重要。
192 浏览量
2021-09-28 上传
2021-10-03 上传
2023-07-12 上传
2023-06-09 上传
2023-06-09 上传
2023-06-13 上传
ssm管理系统文件中util文件里PageHelper类解释以下代码package com.util; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; public class PageHelper { public static void getPage(List<?> list, String name, List<String> nameList, List<String> valueList, int pageSize, String number, HttpServletRequest request, String method) { StringBuffer buffer = new StringBuffer(); String name2 = name.substring(0, 1).toUpperCase() + name.substring(1); String path = ""; String action = "getAll" + name2 + ".action"; if (method != null) { action = "query" + name2 + "ByCond.action"; } List<Object> objList = new ArrayList<Object>(); if (nameList != null && valueList != null) { for (int i = 0; i < nameList.size(); i++) { path += "&" + nameList.get(i) + "=" + valueList.get(i); } } int pageNumber = list.size(); int maxPage = pageNumber; if (maxPage % pageSize == 0) { maxPage = maxPage / pageSize; } else { maxPage = maxPage / pageSize + 1; } if (number == null) { number = "0"; } int start = Integer.parseInt(number) * pageSize; int over = (Integer.parseInt(number) + 1) * pageSize; int count = pageNumber - over; if (count <= 0) { over = pageNumber; } for (int i = start; i < over; i++) { Object obj = list.get(i); objList.add(obj); } buffer.append(" 共为"); buffer.append(maxPage); buffer.append("页 共有"); buffer.append(pageNumber); buffer.append("条 当前为第"); buffer.append((Integer.parseInt(number) + 1)); buffer.append("页 "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("首页"); } else { buffer.append("首页"); } buffer.append(" "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("上一页"); } else { buffer.append("上一页"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("下一页"); } else { buffer.append("下一页"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("尾页"); } else { buffer.append("尾页"); } String html = buffer.toString(); request.setAttribute("html", html); request.setAttribute(name + "List", objList); }
2023-05-05 上传
2023-05-17 上传
郑云山
- 粉丝: 20
- 资源: 2万+
最新资源
- Chrome ESLint扩展:实时运行ESLint于网页脚本
- 基于 Webhook 的 redux 预处理器实现教程
- 探索国际CMS内容管理系统v1.1的新功能与应用
- 在Heroku上快速部署Directus平台的指南
- Folks Who Code官网:打造安全友好的开源环境
- React测试专用:上下文提供者组件实现指南
- RabbitMQ利用eLevelDB后端实现高效消息索引
- JavaScript双向对象引用的极简实现教程
- Bazel 0.18.1版本发布,Windows平台构建工具优化
- electron-notification-desktop:电子应用桌面通知解决方案
- 天津理工操作系统实验报告:进程与存储器管理
- 掌握webpack动态热模块替换的实现技巧
- 恶意软件ep_kaput: Etherpad插件系统破坏者
- Java实现Opus音频解码器jopus库的应用与介绍
- QString库:C语言中的高效动态字符串处理
- 微信小程序图像识别与AI功能实现源码