首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2 入门范例代码

2012-11-10 
Struts2 入门实例代码Struts.xml 文件?xml version1.0 encodingUTF-8 ?!DOCTYPE struts PUBLIC-

Struts2 入门实例代码
Struts.xml 文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="true" />    <constant name="struts.devMode" value="true" />    <include file="helloworld.xml"/></struts>


HelloWorld.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><include file="struts-default.xml"/>    <package name="helloworld" namespace="/" extends="struts-default">        <interceptors>            <interceptor name ="authentication" class ="com.jamesby.struts2.LogonInterceptor"/>         <interceptor-stack name="helloWorldStack">            <interceptor-ref name="authentication"/>            <interceptor-ref name="paramsPrepareParamsStack"/>        </interceptor-stack>        </interceptors>  <default-interceptor-ref name="helloWorldStack"/><global-results><result name="login">/WEB-INF/jsp/Logon.jsp</result>                  </global-results><action name="Logon_*" method="{1}" method="{1}" type="redirect-action">crud!list</result><result name="input">/WEB-INF/jsp/userForm.jsp</result></action><action name="*" name="code">package com.jamesby.struts2;import java.util.Map;import com.jamesby.struts2.persist.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LogonInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation ai) throws Exception {Map session = ai.getInvocationContext().getSession();User user = (User) session.get("user");if (null != user) {return ai.invoke();} else {return Action.LOGIN;}}}


Logon.java

package com.jamesby.struts2;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import org.apache.struts2.interceptor.validation.SkipValidation;import com.jamesby.struts2.persist.DataBaseMock;import com.jamesby.struts2.persist.User;import com.opensymphony.xwork2.ActionSupport;public class Logon extends ActionSupport implements SessionAware {private Map session;public void setSession(Map session) {this.session = session;}@SkipValidationpublic String doInput() throws Exception {return INPUT;}public String doLogon() throws Exception {User user = DataBaseMock.selectUserByUsernameAndPassword(getUsername(),getPassword());if (null == user)return INPUT;session.put("user", user);return SUCCESS;}private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}private String password;public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}


UserAction.java

package com.jamesby.struts2;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.apache.struts2.interceptor.validation.SkipValidation;import com.jamesby.struts2.persist.DataBaseMock;import com.jamesby.struts2.persist.User;import com.opensymphony.xwork2.ActionSupport;public class UserAction  extends ActionSupport {private User user=new User();private List<User> userList;public List<HashMap> getSexArray() {List<HashMap> sexArray = new ArrayList<HashMap>();HashMap male = new HashMap();male.put("key",new Integer(1));male.put("value","男");HashMap female = new HashMap();female.put("key",new Integer(2));female.put("value","女");sexArray.add(male);sexArray.add(female);return sexArray;}public List<HashMap> getFromArray() {List<HashMap> fromArray = new ArrayList<HashMap>();HashMap bj = new HashMap();bj.put("id",new Integer(1));bj.put("name","北京");HashMap sh = new HashMap();sh.put("id",new Integer(2));sh.put("name","上海");HashMap tj = new HashMap();tj.put("id",new Integer(3));tj.put("name","天津");fromArray.add(bj);fromArray.add(sh);fromArray.add(tj);return fromArray;}@SkipValidationpublic String doList() throws Exception {userList = DataBaseMock.selectAllUser();return "list";}@SkipValidationpublic String doInput() {return INPUT;}public String doSave() {if (null == user.getUserid()) {user.setUserid(new Integer(DataBaseMock.getNewUserId()));DataBaseMock.saveUser(user);}else{DataBaseMock.updateUser(user);}return SUCCESS;}@SkipValidationpublic String doRead(){user = DataBaseMock.getUser(user.getUserid());return INPUT;}@SkipValidationpublic String doDelete() {DataBaseMock.deleteUser(user);return SUCCESS;}public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}


ExampleSupport.java

package com.jamesby.struts2;import com.opensymphony.xwork2.ActionSupport;public class ExampleSupport extends ActionSupport {}


User.java

package com.jamesby.struts2.persist;public class User {private Integer userid;private String username;private String password;private int sex;private int age;private int from;public int getFrom() {return from;}public void setFrom(int from) {this.from = from;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}public Integer getUserid() {return userid;}public void setUserid(Integer userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}


DataBaseMock.java

package com.jamesby.struts2.persist;import java.util.ArrayList;import java.util.List;public class DataBaseMock {private static List<User> _cache = new ArrayList<User>();private static int userid = 0;static {User user = new User();user.setUserid(new Integer(0));user.setUsername("admin");user.setPassword("12345688");user.setFrom(1);// 北京user.setSex(1);// 男user.setAge(18);_cache.add(user);}public static User selectUserByUsernameAndPassword(String username,String password){for (User u : _cache) {if (u.getUsername().equals(username)&&u.getPassword().equals(password)) {return u;}}return null;}public static List<User> selectAllUser(){return _cache;}public static int getNewUserId() {return ++userid;}public static void saveUser(User user) {_cache.add(user);}public static void updateUser(User user) {deleteUser(user);saveUser(user);}public static void deleteUser(User user) {for (User u : _cache) {if (u.getUserid().intValue() == user.getUserid().intValue()) {_cache.remove(u);break;}}}public static User getUser(Integer userid) {return _cache.get(userid);}}


Logon-validation.xml

<!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"><message key="requiredstring"/>        </field-validator>    </field>    <field name="password">        <field-validator type="requiredstring"><message key="requiredstring"/>        </field-validator>    </field></validators>


UserAction-validation.xml

<!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="user.username">     <field-validator type="requiredstring">        <message key="errors.required.username"/>      </field-validator>  </field>  <field name="user.password">     <field-validator type="requiredstring">        <message key="errors.required.password"/>      </field-validator>  </field>  <field name="user.sex">     <field-validator type="required">        <message key="errors.required.sex"/>      </field-validator>  </field>    <field name="user.age">     <field-validator type="required" short-circuit="true">        <message key="errors.required.age"/>      </field-validator>      <field-validator type="int">      <param name="min">18</param>      <param name="max">65</param>        <message key="errors.required.age.limit"/>      </field-validator>  </field>  <field name="user.from">     <field-validator type="required">        <message key="errors.required.from"/>      </field-validator>  </field>    </validators>


package.properties

requiredstring = $\{getText(fieldName)} is required.password = Passwordusername = User Namemain.message = This is main page...................label.userList= All User Listuser.username=Usernameuser.password=Passworduser.sex=Sexuser.age=Ageuser.from=Fromerrors.required.username=Username is requirederrors.required.password=Password is requirederrors.required.sex=Sex is Requirederrors.required.from=From is Requirederrors.required.age.limit=Age between 18 and 65errors.required.age.limit=Age between 18 and 65


Logon.jsp

<%@ taglib prefix="s" uri="/struts-tags" %><html><head>  <title>Logon</title></head><body><s:form action="Logon!logon">   <s:textfield label="%{getText('username')}" name="username"/>  <s:password label="%{getText('password')}" name="password" />  <s:submit/></s:form></body></html>


userList.jsp

<%@ page contentType="text/html;charset=GBK"%><%@taglib prefix="s" uri="/struts-tags" %><head>    <title><s:text name="label.userList"/></title></head><s:url id="url" action="crud!input" /><a href="<s:property value="#url"/>">Add New User</a><br><table border="1"><tr status="status"><tr /></td><td><s:property value="username" /></td><td><s:if test="sex==1">男</s:if><s:else>女</s:else></td><td><s:property value="age" /></td><td><s:if test="from==1">北京</s:if><s:if test="from==2">上海</s:if><s:if test="from==3">天津</s:if></td><td><a href="crud!read.action?user.userid=<s:property value="userid" />">修改</a></td><td><a href="crud!delete.action?user.userid=<s:property value="userid" />">删除</a></td></tr></s:iterator></table>



userForm.jsp

<%@ page contentType="text/html;charset=GBK"%><%@taglib prefix="s" uri="/struts-tags" %>User Form<s:form action="crud!save.action" method="post">    <s:textfield required="true" name="user.username" value="%{user.username}" label="%{getText('user.username')}" size="40"/>    <s:textfield required="true" name="user.password" value="%{user.password}" label="%{getText('user.password')}" size="40"/>    <s:radio required="true" name="user.sex" listKey="key" listValue="value" value="%{user.sex}" label="%{getText('user.sex')}" list="sexArray"/>    <s:textfield required="true" name="user.age" value="%{user.age}" label="%{getText('user.age')}" size="40"/>    <s:select label="%{getText('user.from')}" name="user.from" headerKey="" headerValue="Select From" list="fromArray" listKey="id" listValue="name" value="user.from" required="true"/>    <s:hidden name="user.userid" value="%{user.userid}"/>    <s:submit value="Submit"/>    <s:submit value="Cancel" name="redirect-action:crud!list"/></s:form>


应用程序目录结构

WEB-INF│  web.xml│├─classes│  │  commons-logging.properties│  │  helloworld.xml│  │  log4j.properties│  │  struts.properties│  │  struts.xml│  ││  └─com│      └─jamesby│          └─struts2│              │  ExampleSupport.class│              │  Logon-validation.xml│              │  Logon.class│              │  LogonInterceptor.class│              │  package.properties│              │  UserAction-validation.xml│              │  UserAction.class│              ││              └─persist│                      DataBaseMock.class│                      User.class│├─jsp│      Logon.jsp│      Main.jsp│      userForm.jsp│      userList.jsp│├─lib       commons-collections-3.1.jar       commons-logging-1.0.4.jar       freemarker-2.3.8.jar       log4j-1.2.9.jar       ognl-2.6.11.jar       struts2-core-2.0.6.jar       xwork-2.0.1.jar



### Standard UI theme### Change this to reflect which path should be used for JSP control tag templates by defaultstruts.ui.theme=xhtmlstruts.ui.templateDir=template#sets the default template type. Either ftl, vm, or jspstruts.ui.templateSuffix=ftl<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="true" /> <constant name="struts.ui.templateDir" value="template" /> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.ui.templateSuffix" value="ftl" /> <include file="helloworld.xml"/></struts>

struts.xml 文件配置成上面这样,是可以去掉table标签的,但是很多功能可能就不能正常了,特别是标签内容的显示和校验回显可能需要自己使用ongl手动调用,具体不清楚。

从struts2的结构看似乎它推荐使用模板语言,而且默认为freemarker,当然可以自己更改为velocity,看来还要搞定freemarker或者velocity后,struts2才算学习的完整。 10 楼 philip01 2007-03-26   谢~你的文章.... 11 楼 myali88 2007-03-27   加油!

热点排行