UserAction.java
package com.rs.struts2.web.action; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.jgroups.util.List; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.rs.struts2.model.User; /** * @author * @version 1.0 * * */ public class UserAction extends ActionSupport implements ModelDriven<User>{ //struts2会自动new一个user对象,只需要给它setter和getter private User user=new User(); private int a = 0; public String add(){ addFieldError("add_success",getText("add.success")); addActionError("成功了"); addActionMessage("成功了2"); return "success"; } public String addUser(){ System.out.println("___________________"); addFieldError("add_success",getText("add.success")); addActionError("成功了"); addActionMessage("成功了2"); return "success"; } public String update(){ addFieldError("update_success",getText("update.success")); return "success"; } public String del(){ HttpServletRequest request = ServletActionContext.getRequest(); ArrayList list = new ArrayList(); for (int i = 0; i <10; i++) { list.add(i); } request.setAttribute("name", "zheng-gang"); request.setAttribute("list", list); request.setAttribute("number1", 10); addFieldError("del_success",getText("del.success")); return "success"; } public String list(){ addFieldError("list_success",getText("list.success")); return "success"; } public User getModel() { return this.user; } }
UserAction-validation.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message key="requiredadd.name"/> </field-validator> </field> <field name="pwd"> <field-validator type="requiredstring"> <param name="trim">true</param> <message key="requiredadd.password"></message> </field-validator> </field> </validators>
ResourceMessages.properties
requiredadd.name = 用户名不能为空 requiredadd.password = 密码不能为空 add.success= 添加成功
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.custom.i18n.resources" value="ResourceMessages" /> <package name="User" namespace="/user" extends="struts-default"> <action name="User_*" class="com.rs.struts2.web.action.UserAction" method="{1}"> <!-- 只允许add方法和update方法使用校验器 --> <interceptor-ref name="defaultStack"> <param name="validation.excludeMethods">*</param> <param name="validation.includeMethods">add,update,addUser</param> </interceptor-ref> <result name="success">/user_success.jsp</result> <result name="input">/addUser.jsp</result> </action> </package> </struts>
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" 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" "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> <hr/> <form action="<%=basePath%>user/User_addUser" method="post"> <table> <tr> <td>姓名:</td> <td> <input type="text" name="username" msg="add.username"> </td> <td> <s:fielderror><s:param name="username">username</s:param></s:fielderror> </td> </tr> <tr> <td>密码:</td> <td><input type="password" name="pwd" ></td> <td><s:fielderror><s:param name="pwd">pwd</s:param></s:fielderror></td> </tr> <tr><td>年龄:</td><td><input type="text" name="age" ></td><td></td></tr> <tr><td>电话:</td><td><input type="text" name="tel" ></td><td></td></tr> <tr><td>地址:</td><td><input type="text" name="address" ></td><td></td></tr> <tr><td>邮箱:</td><td><input type="text" name="email" ></td><td></td></tr> <tr><td><input type="submit" value="添加" ></td><td></td><td></td></tr> </table> </form> </body> </html>
login_success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% 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>Success</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> <s:actionerror/><Br><s:actionmessage/><Br><s:fielderror><s:param>add_success</s:param></s:fielderror> <center><p><s:fielderror/></p></center> <br> <font color='red'>EL表达式 :格式为$ { }</font><br> ${name}<br><hr> <font color='red'>c:out :输出值.escapeXml属性是过滤特殊字符(布尔类型的值);default属性是在value的值为null的情况下输出的值</font><br> <c:out value="${name}" default="无数据" escapeXml="false"></c:out><br> <c:out value="${null}" default="无数据" escapeXml="false"></c:out><br> <c:out value="${'<'}" default="无数据" escapeXml="true"></c:out><br> <c:out value="${'<'}" default="无数据" escapeXml="false"></c:out><br><hr> <font color='red'>c:forEach :items属性中可放置数组或集合对象,var属性里放置迭代后的对象</font><br> <c:forEach items="${list}" var="num"> ${num} </c:forEach> <br> <c:forEach begin="1" end="11" step="2" var="n" > ${n} </c:forEach> <br> <c:forEach begin="1" end="90" step="5" var="n" > ${n} <c:if test="${n>50}" var="sti"> sti返回true </c:if> </c:forEach> <br><hr> <font color='red'>c:choose :结合c:when,c:otherwise 相当于java中的if/else组合</font><br> <c:choose> <c:when test="${2>1}"> 算对了 </c:when> <c:otherwise> 算错了 </c:otherwise> </c:choose> <br><hr> <font color='red'>c:forTokens :类似java中的split截取字符串 ,delims属性是表示要截取的分隔符,var属性表示分隔后的单一对象</font><br> <c:forTokens items="speed,net,network,apple,iphone,android" delims="," var="nb"> ${nb} </c:forTokens> </body> </html>