index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<!--Struts特有 :OGNL表达式-->
<s:form action="Login" method="post">
<s:textarea label="姓名" name="name"/>
<s:textarea label="年龄" name="age"/>
<s:submit/>
</s:form>
</body>
</html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
</head>
<body>
<s:debug/>
<!--获取值 OGNL取值只需要写value ,无序表达式 -->
姓名:<s:property value="name"/>
年龄:<s:property value="age"/>
</body>
</html>
1.编程式校验(action里面校验)
实体类
继承ActionSupport
重写validate
addFieldError("要校验的值(属性)", "错误信息!");
1.实体类
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
2.Action继承ActionSupport
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction extends ActionSupport implements ModelDriven<User> {
// 声明对象
private User user;
//重写validate
@Override
public void validate() {
// 校验用户名非空
// 校验年龄范围
if (user.getName() == null || "".equals(user.getName().trim())) {
addFieldError("name", "用户名不能为空");
} else if (user.getAge() <= 0 || user.getAge() > 150) {
addFieldError("age", "年龄不合法");
}
}
public String execute() {
System.out.println("执行了()...");
return "success";
}
@Override
public User getModel() {
if (user == null) {
user = new User();
}
return user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// get和set方法
}
struts.xml
<package name="xxx" extends="struts-default">
<action name="Login" class="com.lan.entity.LoginAction" >
<result name="success">/success.jsp</result>
<!-- 拦截一下 回调视图,当输入异常的时候,返回当前页面-->
<result name="input">/index.jsp </result>
</action>
</package>
声明式校验
配置validation.xml
继承ActionSupport
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!--校验域-->
<field name="name">
<!-- 校验: 非空 长度
-->
<!--校验器-->
<field-validator type="requiredstring">
<message>姓名不能为空(*)</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[[\u4e00-\u9fa5]{3,6}]]></param>
<message>姓名必须在3-6个中文字符之间</message>
</field-validator>
</field>
<!--年龄-->
<field name="age">
<field-validator type="required">
<message>年龄不能为空(*)</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄必须在1-150之间</message>
</field-validator>
</field>
</validators>
Action
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction extends ActionSupport implements ModelDriven<User> {
// 声明对象
private User user;
public String execute() {
System.out.println("执行了()...");
return "success";
}
@Override
public User getModel() {
if (user == null) {
user = new User();
}
return user;
}
struts.xml
<package name="xxx" extends="struts-default">
<action name="Login" class="com.lanou.entity.LoginAction" >
<result name="success">/success.jsp</result>
<!-- 拦截一下 回调视图,当输入异常的时候,返回当前页面-->
<result name="input">/index.jsp </result>
</action>
</package>
所需要的jar包
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
xwork-core-2.3.24.jar