一、处理结果类型:
public static final String SUCCESS = “success”;
public static final String NONE = “none”;
public static final String ERROR = “error”;
public static final String INPUT = “input”;
public static final String LOGIN = “login”;
二、struts.xml标签属性
三、Struts2验证输入的方式
1.struts错误提示
1.1 struts错误提示
java: addFieldError("userName", "用户名不正确!");
addFieldError("passWord","密码不正确!");
jsp: <s:fielderror>
<s:param>userName</s:param>
<s:param>passWord</s:param>
</s:fielderror>
注:理解validate()方法
1.2 struts错误提示
java: addActionError("用户名或密码错误!");
jsp: <s:actionerror/>
2. javaweb错误提示
java: request.setAttribute("userName", "用户名不正确!");
request.setAttribute("passWord","密码不正确!");
jsp: ${userName}
${passWord}
注:request对象获取 : HttpServletRequest request = ServletActionContext.getRequest();
与昨天同一工程
struts.xml实现如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<!-- 动态调用方式三 -->
<struts>
<!-- 让struts2支持动态方法调用 在struts.properties中实现-->
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="true"/> -->
<!-- 命名空间为user -->
<package name="user" namespace="/user" extends="struts-default">
<default-action-ref name="default"/>
<!-- 解决struts2.5 通配符无效问题 -->
<global-allowed-methods>regex:.*</global-allowed-methods>
<!-- 访问地址http://192.168.5.7:8080/Struts/user/user_delete.do -->
<action name="user_*" class="cn.scxh.struts.UserDemo" method="{1}">
<result>/index.jsp</result>
<result name="ADD">/one.jsp</result>
<result name="UPDATE">/index.jsp</result>
<result name="DELETE">/one.jsp</result>
<result name="input">/add_user.jsp</result>
<!-- 重定向 默认为转发<result type="redirect" name="input">/user_add.jsp</result> -->
</action>
<!-- 随便输入地址则执行默认如:http://192.168.5.7:8080/Struts/user/useaar_delete.do -->
<action name="default">
<result>/default.jsp</result>
</action>
</package>
</struts>
java类如下:
package cn.scxh.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
* 一、接收参数三种方式:
* 1.通过Action属性(将Use类写在此类中)
*
* 2.domainModel 已注释
* 利用现有model类,不需要实现implements ModelDriven<Use>
* 1>private Use use; 添加get,set方法
* 2>页上form表单name属性指定为 对象名.属性名 如: use.name
*
* 3.实现ModelDriven接口方式
* 1>实现ModelDriven接口
* 2>实例化model类.如 : private User user = new User();
* 3>表单add_user.jsp中 name值必须与Use类中的属性相同 如:name="name" name="passWord"
*/
public class UserDemo extends ActionSupport implements ModelDriven<Use>{
private Logger log = Logger.getLogger(UserDemo.class);
private Use use = new Use();
// private Use use;
@Override
public String execute() throws Exception {
return SUCCESS;
}
/**
* 此方法的判断语句中不需要返回INPUT,系统封装了
*/
@Override
public void validate() {
if(!"admin".equals(use.getName())){
addFieldError("name", "用户名不正确!");
// return INPUT;
}else if(!"admin".equals(use.getPassWord())){
addFieldError("passWord","密码不正确!");
// return INPUT;
}
}
public String add(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
log.debug("name:"+use.getName()+"\npassWord:"+use.getPassWord());
log.debug("name:"+request.getParameter("name")+
"\npassWord:"+request.getParameter("passWord"));
/**
if(use.getName().equals("admin") && use.getPassWord().equals("admin")){
return "ADD";
}else{
addActionError("用户名或密码错误!");
return INPUT;
}*/
/**
if(!"admin".equals(use.getName())){
// addFieldError("name", "用户名不正确!");
request.setAttribute("names", "用户名不正确!");
return INPUT;
}else if(!"admin".equals(use.getPassWord())){
// addFieldError("passWord","密码不正确!");
request.setAttribute("passWords","密码不正确!");
return INPUT;
}else{
return "ADD";
}*/
return null;
}
@Override
public Use getModel() {
return use;
}
// public Use getUse() {
// return use;
// }
// public void setUse(Use use) {
// this.use = use;
// }
}
add_user.jsp 如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>添加用户</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
function check(){
var user = $("#name").val();//获取表单元素值
var number = $("#number").val();
if(user == "" || number ==""){
$("#msg").text("用户和密码不能为空!");
return false;
}else{
return true;
}
}
</script>
</head>
<body>
<form action="./user/user_add.do" method="post" enctype="application/x-www-form-urlencoded" οnsubmit="return check()">
用户:<input type="text" name="name" id="name"/><br>
密码:<input type="text" name="passWord" id="number"/><br>
<span id="msg" style="color:red;font-size:15px">${error}</span>
<!-- <s:actionerror/> -->
<s:fielderror>
<s:param>name</s:param>
<s:param>passWord</s:param>
</s:fielderror>
<%-- ${names}
${passWords} --%>
<input type="submit" value="添加"/>${message}
</form>
</body>
</html>
java add方法中:(都注释了)
第一个if判断为 1.2 struts错误提示
第二个if判断先用了 1.1 struts错误提示
后使用的2. javaweb错误提示
表单验证默认方法:validate()
此方法的判断语句中不需要返回INPUT,SUCCESS等。系统封装了
ps:图片来自极客之家