Struts2 特定及使用过滤器处理请求

Struts2 是一个结合了Struts1和WebWork优点的Java EE框架,旨在提高开发效率和规范性,降低与Servlet的耦合。它提供了自动封装表单数据、文件上传、国际化、表单验证等功能,并拥有强大的标签库。通过XML配置文件管理程序映射,使用拦截器实现面向切面编程,以及token机制防止重复提交,确保了操作的安全性。文中还提到了具体的User bean、过滤器和注册页面的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts的特点:

  1. 由出色稳定的框架Struts1和WebWork框架整合起来
  2. 吸取两大框架的优点
  3. 提高开发效率和规范性
  4. 更好的实现了MVC架构
  5. 解除了与Servlet的强耦合

Struts框架的意义:

更便捷的开发:

  1. 自动封装表单数据:属性驱动,模型驱动
  2. 便捷的实现上传文件功能:FileUpload
  3. 是网站通用语国内外:国际化
  4. 通过配置表完成表单验证:校验器
  5. 强大的标签库:Struts2标签库,OGNL标签库

更科学的管理

使用xml文件管理程序文件对应关系

更安全的操作

  1. 安全的线程:每个action都是独立的
  2. 防止数据重复提交:token令牌机制
  3. 异常处理机制:通过配置来完成,更便于管理

先进的编程思想

面向切面编程:拦截器


实例:

bean.User.java

<span style="font-size:18px;">package bean;

public class User {
	private int id;
	private String username;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	public User() {
		super();
	}
}
</span>


filter.UserFilter.java

<span style="font-size:18px;">package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import bean.User;

public class UserFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest request=(HttpServletRequest)arg0;
		
		String url=request.getServletPath();
		
		if(url.equals("/register.action")){
			request.getRequestDispatcher("/register.jsp").forward(arg0, arg1);
			return;
		}else if(url.equals("/saveUser.action")){
			String username=request.getParameter("username");
			String password=request.getParameter("password");
			String password1=request.getParameter("password1");
			if(password.equals(password1)){
				User user=new User();
				user.setUsername(username);
				user.setPassword(password);</span>
<span style="font-size:18px;">				request.getRequestDispatcher("/end.jsp").forward(arg0, arg1);
				return;
			}else{
				request.getRequestDispatcher("/register.jsp");
				return;
			}
		}
		arg2.doFilter(arg0, arg1);
		

	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}
</span>



index.jsp

<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf8"%>

<!DOCTYPE HTML ">
<html>
  <head>
  </head>
  <body>
   <a href="register.action">注册</a>
  </body>
</html>
</span>


register.jsp


<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf8"%>

<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="saveUser.action">
username:<input type="text" name="username">
password:<input type="password" name="password">
Password:<input type="password" name="password1">
<button type="submit">submit</button>
</form>
</body>
</html>
</span>


end.jsp
<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf8"%>


<!DOCTYPE HTML ">
<html>
  <head>
  </head>
  <body>
   <h2>注册成功!</h2>
  </body>
</html></span>


web.xml


<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	<display-name>PutHereTheNameOfYourWebApp</display-name>
	<description>This a description of my web app made by Eclipse</description>
	
	<filter>
	<filter-name>UserFilter</filter-name>
	<filter-class>filter.UserFilter</filter-class>
	</filter>
	
	<filter-mapping>
	<filter-name>UserFilter</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>/AJsp.jsp</welcome-file>
	</welcome-file-list>
</web-app>
</span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值