掌握 struts2 的核心,本质上就是深入理解 filter 过滤器的工作机制。在未集成 struts2 框架之前,完全可以借助原生的 servlet filter 技术,手动编写过滤器类,并通过 web.xml 进行配置,从而实现对 http 请求的统一拦截与分发控制,达到替代传统 mvc 中控制器(controller)的效果。
1、 创建一个标准的 Java Web 项目工程


2、 配置 Tomcat 启动行为:启用浏览器自动打开功能,设定默认首页地址,并勾选 Rebel 插件以支持代码热更新,提升开发效率。






3、 完成上述配置后,启动 Tomcat 服务器,验证项目是否能正常部署并响应访问。

4、 在 WEB-INF 目录下新建名为 page 的子目录,并在其中创建 a.jsp 和 b.jsp 两个 JSP 页面文件。

5、 修改 index.jsp,在页面中添加一个超链接,其目标为产品信息录入页(即 a.jsp),用于导航至数据提交界面。

6、 在 a.jsp 中构建一个 HTML 表单,设置 action 指向处理逻辑(如 /product-save.action),并将用户输入的数据提交至 b.jsp;后者负责接收请求参数并展示相关内容。


7、 在 src 根路径下新建包 com.java999.filter.demo,并在该包内定义一个自定义 Filter 类,用于实现请求预处理逻辑。


8、 编辑 web.xml 文件,注册该 Filter 并指定其拦截规则(如 /* 或特定路径),使其能够介入所有或部分请求生命周期。

9、 在 IndexFilter 的 doFilter 方法中,首先将传入的 ServletRequest 强转为 HttpServletRequest 对象,接着调用 getServletPath() 获取当前请求路径;依据该路径字符串匹配不同业务场景,执行对应分支逻辑,从而完成请求路由与功能调度。




10、 请求转发完成后,在同一层级目录下新建 Product.java 实体类,用于封装前端提交的产品信息,需包含私有属性、公共 getter/setter 方法,以及带参与无参构造方法。

11、 在 IndexFilter.java 的 doFilter() 方法中增加判断逻辑:若当前请求路径为 /product-save.action,则从 request 中提取表单字段(如 pName、pPrice 等),将价格字段转换为 Double 类型,组装成 Product 对象,并将其存入 request 域中;最后通过 RequestDispatcher.forward() 转发至 b.jsp 页面。


12、 在 b.jsp 页面中使用 EL 表达式或 JSTL 标签获取并渲染 request 中的 Product 对象属性值,完成数据回显。

13、 最终在浏览器中运行整个流程,依次点击链接、填写表单、提交数据,检查 b.jsp 是否准确显示所提交的信息,确认整套基于 Filter 的简易控制器机制运行成功。












