1、struts.xml
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="user" extends="struts-default">
<action name="user" class="com.wxh.action.UserAction" >
<result >/useraddsuccess.jsp</result>
<result name="error">/addError.jsp</result>
</action>
</package>
</struts>
2、UserAction.java
package com.wxh.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String name;
public String add(){
//逻辑判断
if(name==null || !name.equals("admin")){
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;//返回到result的name为“ERROR”所指定的jsp页面。
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<body>
使用addFieldError方法和s:fieldError标签简单处理数据校验<a href="user!add?name=小王">添加用户</a>
</body>
4、addError.jsp
<%@taglib uri="/struts-tags" prefix="s" %><!--用到ognl表达式时需要这句-->
<body>
User Add Error!
<s:fielderror fieldName="name" theme="simple"/>
<br/>
<s:property value="error.name[0]"/>
<s:debug></s:debug>
</body>
验证用户名和密码实验:
index.jsp
<body>
<form name="form1" method="get" action="login">
用户名:<input name="username" type="text"><br />
密码:<input name="userpwd" type="password"><br />
<input name="submit"type="submit" value="提交">
<input name="submit2" type="reset"value="重置">
</form>
</body>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.user.action.UserAction">
<result name="success">/success.jsp</result>
<result name="failure">/failure.jsp</result>
</action>
</package>
UserAction
package com.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String username;//定义username变量
private String userpwd;//定义userpwd变量
//分别为它们创建set和get方法
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
@Override
//定义一个执行方法,可在里面加入判断
public String execute() throws Exception {
//判断接收的密码是否和123456相同,相同返回success结果到struts.xml
//失败则返回回failure结果到struts.xml
if(userpwd.equals("123456")){
return "success";
}else{
return "failure";
}
}
}
带权限的验证
index.jsp
<body>
<form name="form1" method="get" action="login">
用户名:<input name="username" type="text"><br/>
密码:<input name="userpwd" type="password"><br/>
权限:<input type="radio" value="admin" name="type">管理员
<input type="radio" value="teacher" name="type"> 教师
<input type="radio" value="student" name="type">学生<br>
<input name="submit" type="submit" value="提交">
<input name="submit2" type="reset" value="重置">
</form>
</body>
<constant name="struts.devMode" value="false" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.user.action.UserAction">
<result name="success">/success.jsp</result>
<result name="failure">/failure.jsp</result>
<result name="admin">/admin.jsp</result>
<result name="student">/student.jsp</result>
<result name="teacher">/teacher.jsp</result>
</action>
<action name="hello">
<result>
/hello.jsp
</result>
</action>
</package>
UserAction.java
package com.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String username;//定义username变量
private String userpwd;//定义userpwd变量
//分别为它们创建set和get方法
private String type;//定义权限类型
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
@Override
//定义一个执行方法,可在里面加入判断
public String execute() throws Exception {
//判断接收的密码是否和123456相同,相同返回success结果到struts.xml
//失败则返回回failure结果到struts.xml
if( userpwd.equals("123") ){
if(type.equals("admin"))
return "admin";
if(type.equals("teacher"))
return "teacher";
}
if (type.equals("student")&& userpwd.equals("123") )
return "student";
return "failure";
}
}
带权限的验证第二种方法:
UserAction
package com.user.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String username;//定义username变量
private String userpwd;//定义userpwd变量
//分别为它们创建set和get方法
private String type;//定义权限类型
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
@Override
//定义一个执行方法,可在里面加入判断
public String execute() throws Exception {
//判断接收的密码是否和123456相同,相同返回success结果到struts.xml
//失败则返回回failure结果到struts.xml
ActionContext ac=ActionContext.getContext();
if( userpwd.equals("123") ){
if(type.equals("admin"))
{
ac.put("type",type);
return "true";
}
if(type.equals("teacher"))
{
ac.put("type", type);
return "true";
}
if(type.equals("student"))
{
ac.put("type", type);
return "true";
}
}else{
return "false";
}
return "false";
}
}
struts.xml
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.user.action.UserAction">
<result name="true">/success.jsp</result>
<result name="false">/failure.jsp</result>
</action>
<action name="hello">
<result>
/hello.jsp
</result>
</action>
</package>
success.jsp
<body>
欢迎${type}
</body>