struts的validator框架

本文详细介绍了如何在Struts框架中利用ActionForm类进行数据验证,并结合依赖包如jakarta-oro.jar、commons-validator.jar以及配置文件如validator-rules.xml和validation.xml实现表单验证流程。

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

依赖包

-- jakarta-oro.jar:提供了一组处理文本的类,具有文本替换、过滤和分割等功能

-- commons-validator.jar:提供了一个简单的、可扩张的验证框架,包含了通用的验证方法和验证规则

基于XML配置,在WEB-INF目录下

-- validator-rules.xml:包含了一组通用的验证规则,对所有的Struts应用都适用

-- validation.xmlvalidator框架的第二个配置文件。这个是针对于某个具体的Struts应用,需要开发人员来创建,它可以为应用中的ActionForm配置所需要的验证规则,取代ActionForm类中以编程方式来实现验证逻辑

 

struts-config.xml中配置

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE struts-config PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"  
    "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
		<form-bean name="loginForm" type="com.cong.web.LoginForm"></form-bean>
	</form-beans>
	<action-mappings>
		<action path="/toLogin" name="loginForm" type="com.cong.web.LoginAction" parameter="method" scope="request">
			<forward name="view" path="/WEB-INF/jsp/login.jsp" />
		</action>
		<!-- validate="true" 开启验证 -->
		<action path="/login" input="/login" name="loginForm" type="com.cong.web.LoginAction" parameter="method" validate="true" scope="request">
			<forward name="view" path="/WEB-INF/jsp/main.jsp" />
		</action>
	</action-mappings>

	<!-- 国际化资源文件 -->
	<message-resources parameter="com.cong.login"></message-resources>

	<!-- 加入验证插件 -->
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml,
                /WEB-INF/validator/validator-login.xml" />
	</plug-in>
</struts-config>

 

LoginAction.java

 

public class LoginAction extends DispatchAction {
	public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		return mapping.findForward("view");
	}
	public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//TODO print
		System.out.println("into login");
		LoginForm loginForm = (LoginForm)form;
		System.out.println(loginForm.getUserName());
		System.out.println(loginForm.getPassword());
		return mapping.findForward("view");
	}
}

 

 

LoginForm.java

public class LoginForm extends ActionForm {
	private static final long serialVersionUID = 1L;
	
	private String userName;
	private String password;
	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;
	}
}

 

web.xml

<web-app xmlns:web="http://xmlns.jcp.org/xml/ns/javaee">
  <display-name>Login</display-name>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 

validator-login.xml

	<formset>
		<form name="loginForm">
			<field property="userName" depends="required">
				<arg0 key="login.label.userName" />
				<!-- <msg name="required" key="error.userName" /> -->
			</field>
			<field property="password" depends="required,minlength">
				<arg0 key="login.label.password" />
				<arg1 key="${var:minlength}" resource="false" />
				<!-- <msg name="required" key="error.password" />
				<msg name="minlength" key="error.password.minlength" /> -->
				<var>
					<var-name>minlength</var-name>
					<var-value>6</var-value>
				</var>
			</field>
		</form>
	</formset>

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<bean:define id="loginForm" name="loginForm" type="com.cong.web.LoginForm"></bean:define>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<html:form action="login.do?method=login">
		<div><html:errors/></div>
		<table>
			<tr>
				<td><bean:message key="login.label.userName" /></td>
				<td><html:text property="userName" maxlength="10" ></html:text></td>
			</tr>
			<tr>
				<td><bean:message key="login.label.password" /></td>
				<td><html:password property="password" maxlength="10" ></html:password></td>
			</tr>
			<tr>
				<td colspan="2" align="right">
					<input type="button" value="提交" onclick="javascript:submitForm();" />
				</td>
			</tr>
		</table>
	</html:form>
<script language="Javascript">

function submitForm()
{
  if (validateLoginForm(document.loginForm)) {
    document.loginForm.submit();
  }
}

</script>
	<html:javascript formName="loginForm" />
</body>
</html>

 

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>main.jsp</title>
</head>
<body>
	<table>
		<tr>
			<td>userName:</td>
			<td><bean:write name="loginForm" property="userName" /></td>
		</tr>
		<tr>		
			<td>password:</td>
			<td><bean:write name="loginForm" property="password" /></td>
		</tr>
	</table>
</body>
</html>

 

 

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值