176142998

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks
          Struts.xml 文件

          Java代碼
          1. <?xml version="1.0" encoding="UTF-8" ?>   
          2. <!DOCTYPE struts PUBLIC   
          3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
          4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
          5. <struts>   
          6.     <constant name="struts.enable.DynamicMethodInvocation" value="true" />   
          7.     <constant name="struts.devMode" value="true" />   
          8.     <include file="helloworld.xml"/>   
          9. </struts>  


          HelloWorld.xml

          Java代碼
          1. <?xml version="1.0" encoding="UTF-8" ?>   
          2. <!DOCTYPE struts PUBLIC   
          3.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
          4.         "http://struts.apache.org/dtds/struts-2.0.dtd">   
          5. <struts>   
          6.     <include file="struts-default.xml"/>   
          7.     <package name="helloworld" namespace="/" extends="struts-default">   
          8.         <interceptors>   
          9.             <interceptor name ="authentication" class ="com.jamesby.struts2.LogonInterceptor"/>    
          10.             <interceptor-stack name="helloWorldStack">   
          11.                 <interceptor-ref name="authentication"/>   
          12.                 <interceptor-ref name="paramsPrepareParamsStack"/>   
          13.             </interceptor-stack>   
          14.         </interceptors>     
          15.         <default-interceptor-ref name="helloWorldStack"/>   
          16.         <global-results>   
          17.             <result name="login">/WEB-INF/jsp/Logon.jsp</result>                   
          18.                   </global-results>          
          19.         <action name="Logon_*" method="{1}" class="com.jamesby.struts2.Logon">   
          20.             <interceptor-ref name="paramsPrepareParamsStack"/>           
          21.             <result type="redirect-action">Main</result>   
          22.             <result name="input">/WEB-INF/jsp/Logon.jsp</result>           
          23.         </action>   
          24.         <action name="crud" method="{1}" class="com.jamesby.struts2.UserAction">   
          25.             <result name="list">/WEB-INF/jsp/userList.jsp</result>              <result name="success" type="redirect-action">crud!list</result>   
          26.             <result name="input">/WEB-INF/jsp/userForm.jsp</result>   
          27.         </action>   
          28.         <action name="*" class="com.jamesby.struts2.ExampleSupport">   
          29.             <result>/WEB-INF/jsp/{1}.jsp</result>   
          30.         </action>            
          31.     </package>   
          32. </struts>  


          LogonInterceptor.java

          Java代碼
          1. package com.jamesby.struts2;   
          2. import java.util.Map;   
          3. import com.jamesby.struts2.persist.User;   
          4. import com.opensymphony.xwork2.Action;   
          5. import com.opensymphony.xwork2.ActionInvocation;   
          6. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;   
          7. public class LogonInterceptor extends AbstractInterceptor{   
          8.     @Override  
          9.     public String intercept(ActionInvocation ai) throws Exception {   
          10.         Map session = ai.getInvocationContext().getSession();   
          11.         User user = (User) session.get("user");   
          12.         if (null != user) {   
          13.             return ai.invoke();   
          14.         } else {   
          15.             return Action.LOGIN;   
          16.         }   
          17.     }   
          18. }  


          Logon.java

          Java代碼
          1. package com.jamesby.struts2;   
          2. import java.util.Map;   
          3. import org.apache.struts2.interceptor.SessionAware;   
          4. import org.apache.struts2.interceptor.validation.SkipValidation;   
          5. import com.jamesby.struts2.persist.DataBaseMock;   
          6. import com.jamesby.struts2.persist.User;   
          7. import com.opensymphony.xwork2.ActionSupport;   
          8. public class Logon extends ActionSupport implements SessionAware {   
          9.     private Map session;   
          10.     public void setSession(Map session) {   
          11.         this.session = session;   
          12.     }   
          13.     @SkipValidation  
          14.     public String doInput() throws Exception {   
          15.         return INPUT;   
          16.     }   
          17.     public String doLogon() throws Exception {   
          18.         User user = DataBaseMock.selectUserByUsernameAndPassword(getUsername(),   
          19.                 getPassword());   
          20.         if (null == user)   
          21.             return INPUT;   
          22.         session.put("user", user);   
          23.         return SUCCESS;   
          24.     }   
          25.     private String username;   
          26.     public String getUsername() {   
          27.         return username;   
          28.     }   
          29.     public void setUsername(String username) {   
          30.         this.username = username;   
          31.     }   
          32.     private String password;   
          33.     public String getPassword() {   
          34.         return password;   
          35.     }   
          36.     public void setPassword(String password) {   
          37.         this.password = password;   
          38.     }   
          39. }  


          UserAction.java

          Java代碼
          1. package com.jamesby.struts2;   
          2. import java.util.ArrayList;   
          3. import java.util.HashMap;   
          4. import java.util.List;   
          5. import org.apache.struts2.interceptor.validation.SkipValidation;   
          6. import com.jamesby.struts2.persist.DataBaseMock;   
          7. import com.jamesby.struts2.persist.User;   
          8. import com.opensymphony.xwork2.ActionSupport;   
          9. public class UserAction  extends ActionSupport {   
          10.     private User user=new User();   
          11.     private List<User> userList;   
          12.     public List<HashMap> getSexArray() {   
          13.         List<HashMap> sexArray = new ArrayList<HashMap>();   
          14.         HashMap male = new HashMap();   
          15.         male.put("key",new Integer(1));   
          16.         male.put("value","男");   
          17.         HashMap female = new HashMap();   
          18.         female.put("key",new Integer(2));   
          19.         female.put("value","女");           
          20.         sexArray.add(male);   
          21.         sexArray.add(female);   
          22.         return sexArray;   
          23.     }      
          24.     public List<HashMap> getFromArray() {   
          25.         List<HashMap> fromArray = new ArrayList<HashMap>();   
          26.         HashMap bj = new HashMap();   
          27.         bj.put("id",new Integer(1));   
          28.         bj.put("name","北京");   
          29.         HashMap sh = new HashMap();   
          30.         sh.put("id",new Integer(2));   
          31.         sh.put("name","上海");           
          32.         HashMap tj = new HashMap();   
          33.         tj.put("id",new Integer(3));   
          34.         tj.put("name","天津");   
          35.         fromArray.add(bj);   
          36.         fromArray.add(sh);   
          37.         fromArray.add(tj);   
          38.         return fromArray;   
          39.     }   
          40.     @SkipValidation  
          41.     public String doList() throws Exception {   
          42.         userList = DataBaseMock.selectAllUser();   
          43.         return "list";   
          44.     }   
          45.     @SkipValidation  
          46.     public String doInput() {   
          47.         return INPUT;   
          48.     }      
          49.     public String doSave() {   
          50.         if (null == user.getUserid()) {   
          51.             user.setUserid(new Integer(DataBaseMock.getNewUserId()));   
          52.             DataBaseMock.saveUser(user);   
          53.         }else  
          54.         {   
          55.             DataBaseMock.updateUser(user);   
          56.         }   
          57.         return SUCCESS;   
          58.     }   
          59.     @SkipValidation  
          60.     public String doRead()   
          61.     {   
          62.         user = DataBaseMock.getUser(user.getUserid());   
          63.         return INPUT;   
          64.     }   
          65.     @SkipValidation  
          66.     public String doDelete() {   
          67.         DataBaseMock.deleteUser(user);   
          68.         return SUCCESS;   
          69.     }          
          70.     public List<User> getUserList() {   
          71.         return userList;   
          72.     }   
          73.     public void setUserList(List<User> userList) {   
          74.         this.userList = userList;   
          75.     }   
          76.     public User getUser() {   
          77.         return user;   
          78.     }   
          79.     public void setUser(User user) {   
          80.         this.user = user;   
          81.     }   
          82. }  


          ExampleSupport.java

          Java代碼
          1. package com.jamesby.struts2;   
          2. import com.opensymphony.xwork2.ActionSupport;   
          3. public class ExampleSupport extends ActionSupport {   
          4. }  


          User.java

          Java代碼
          1. package com.jamesby.struts2.persist;   
          2. public class User {   
          3.     private Integer userid;   
          4.     private String username;   
          5.     private String password;   
          6.     private int sex;   
          7.     private int age;   
          8.     private int from;   
          9.     public int getFrom() {   
          10.         return from;   
          11.     }   
          12.     public void setFrom(int from) {   
          13.         this.from = from;   
          14.     }   
          15.     public String getPassword() {   
          16.         return password;   
          17.     }   
          18.     public void setPassword(String password) {   
          19.         this.password = password;   
          20.     }   
          21.     public int getSex() {   
          22.         return sex;   
          23.     }   
          24.     public void setSex(int sex) {   
          25.         this.sex = sex;   
          26.     }   
          27.     public Integer getUserid() {   
          28.         return userid;   
          29.     }   
          30.     public void setUserid(Integer userid) {   
          31.         this.userid = userid;   
          32.     }   
          33.     public String getUsername() {   
          34.         return username;   
          35.     }   
          36.     public void setUsername(String username) {   
          37.         this.username = username;   
          38.     }   
          39.     public int getAge() {   
          40.         return age;   
          41.     }   
          42.     public void setAge(int age) {   
          43.         this.age = age;   
          44.     }   
          45. }  


          DataBaseMock.java

          Java代碼
          1. package com.jamesby.struts2.persist;   
          2. import java.util.ArrayList;   
          3. import java.util.List;   
          4. public class DataBaseMock {   
          5.     private static List<User> _cache = new ArrayList<User>();   
          6.     private static int userid = 0;   
          7.     static {   
          8.         User user = new User();   
          9.         user.setUserid(new Integer(0));   
          10.         user.setUsername("admin");   
          11.         user.setPassword("12345688");   
          12.         user.setFrom(1);// 北京   
          13.         user.setSex(1);// 男   
          14.         user.setAge(18);   
          15.         _cache.add(user);   
          16.     }   
          17.     public static User selectUserByUsernameAndPassword(String username,String password)   
          18.     {   
          19.         for (User u : _cache) {   
          20.             if (u.getUsername().equals(username)&&u.getPassword().equals(password)) {   
          21.                 return u;   
          22.             }   
          23.         }   
          24.         return null;   
          25.     }   
          26.     public static List<User> selectAllUser()   
          27.     {   
          28.         return _cache;   
          29.     }   
          30.     public static int getNewUserId() {   
          31.         return ++userid;   
          32.     }   
          33.     public static void saveUser(User user) {   
          34.         _cache.add(user);   
          35.     }   
          36.     public static void updateUser(User user) {   
          37.         deleteUser(user);   
          38.         saveUser(user);   
          39.     }   
          40.     public static void deleteUser(User user) {   
          41.         for (User u : _cache) {   
          42.             if (u.getUserid().intValue() == user.getUserid().intValue()) {   
          43.                 _cache.remove(u);   
          44.                 break;   
          45.             }   
          46.         }   
          47.     }   
          48.     public static User getUser(Integer userid) {   
          49.         return _cache.get(userid);   
          50.     }   
          51. }  


          Logon-validation.xml

          Java代碼
          1. <!DOCTYPE validators PUBLIC    
          2. "-//OpenSymphony Group//XWork Validator 1.0.2//EN"    
          3. "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">   
          4. <validators>   
          5.     <field name="username">   
          6.         <field-validator type="requiredstring">   
          7.             <message key="requiredstring"/>   
          8.         </field-validator>   
          9.     </field>   
          10.     <field name="password">   
          11.         <field-validator type="requiredstring">   
          12.             <message key="requiredstring"/>   
          13.         </field-validator>   
          14.     </field>   
          15. </validators>  


          UserAction-validation.xml

          Java代碼
          1. <!DOCTYPE validators PUBLIC    
          2. "-//OpenSymphony Group//XWork Validator 1.0.2//EN"    
          3. "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">   
          4. <validators>   
          5.   <field name="user.username">   
          6.      <field-validator type="requiredstring">   
          7.         <message key="errors.required.username"/>   
          8.       </field-validator>   
          9.   </field>   
          10.   <field name="user.password">   
          11.      <field-validator type="requiredstring">   
          12.         <message key="errors.required.password"/>   
          13.       </field-validator>   
          14.   </field>   
          15.   <field name="user.sex">   
          16.      <field-validator type="required">   
          17.         <message key="errors.required.sex"/>   
          18.       </field-validator>   
          19.   </field>     
          20.   <field name="user.age">   
          21.      <field-validator type="required" short-circuit="true">   
          22.         <message key="errors.required.age"/>   
          23.       </field-validator>   
          24.       <field-validator type="int">   
          25.         <param name="min">18</param>   
          26.         <param name="max">65</param>   
          27.         <message key="errors.required.age.limit"/>   
          28.       </field-validator>   
          29.   </field>   
          30.   <field name="user.from">   
          31.      <field-validator type="required">   
          32.         <message key="errors.required.from"/>   
          33.       </field-validator>   
          34.   </field>       
          35. </validators>  


          package.properties

          Java代碼
          1. requiredstring = $\{getText(fieldName)} is required.   
          2. password = Password   
          3. username = User Name   
          4. main.message = This is main page...................   
          5. label.userList= All User List   
          6.   
          7. user.username=Username   
          8. user.password=Password   
          9. user.sex=Sex   
          10. user.age=Age   
          11. user.from=From   
          12.   
          13. errors.required.username=Username is required   
          14. errors.required.password=Password is required   
          15. errors.required.sex=Sex is Required   
          16. errors.required.from=From is Required   
          17. errors.required.age.limit=Age between 18 and 65  
          18. errors.required.age.limit=Age between 18 and 65  


          Logon.jsp

          Java代碼
          1. <%@ taglib prefix="s" uri="/struts-tags" %>   
          2. <html>   
          3. <head>   
          4.   <title>Logon</title>   
          5. </head>   
          6. <body>   
          7. <s:form action="Logon!logon">    
          8.   <s:textfield label="%{getText('username')}" name="username"/>   
          9.   <s:password label="%{getText('password')}" name="password" />   
          10.   <s:submit/>   
          11. </s:form>   
          12. </body>   
          13. </html>  


          userList.jsp

          Java代碼
          1. <%@ page contentType="text/html;charset=GBK"%>   
          2. <%@taglib prefix="s" uri="/struts-tags" %>   
          3.   
          4. <head>   
          5.     <title><s:text name="label.userList"/></title>   
          6. </head>   
          7.   
          8. <s:url id="url" action="crud!input" />   
          9. <a href="<s:property value="#url"/>">Add New User</a>   
          10. <br>   
          11. <table border="1">   
          12.     <tr class="<s:if test="#status.even">even</s:if><s:else>odd</s:else>">   
          13.         <td>用戶ID</td>   
          14.         <td>用戶名</td>   
          15.         <td>性別</td>   
          16.         <td>年齡</td>   
          17.         <td>來自</td>   
          18.         <td>修改</td>   
          19.         <td>刪除</td>   
          20.     </tr>    
          21. <s:iterator value="userList" status="status">   
          22.     <tr class="<s:if test="#status.even">even</s:if><s:else>odd</s:else>">   
          23.         <td><s:property value="userid" /></td>   
          24.         <td><s:property value="username" /></td>   
          25.         <td>   
          26.             <s:if test="sex==1">男</s:if>   
          27.             <s:else>女</s:else>   
          28.         </td>   
          29.         <td><s:property value="age" /></td>   
          30.         <td>   
          31.             <s:if test="from==1">北京</s:if>   
          32.             <s:if test="from==2">上海</s:if>   
          33.             <s:if test="from==3">天津</s:if>   
          34.         </td>   
          35.         <td>   
          36.             <a href="crud!read.action?user.userid=<s:property value="userid" />">修改</a>   
          37.         </td>   
          38.         <td>   
          39.             <a href="crud!delete.action?user.userid=<s:property value="userid" />">刪除</a>   
          40.         </td>   
          41.     </tr>    
          42. </s:iterator>   
          43. </table>  



          userForm.jsp

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


          應用程序目錄結構

          Java代碼
          1. WEB-INF   
          2. │  web.xml   
          3. │   
          4. ├─classes   
          5. │  │  commons-logging.properties   
          6. │  │  helloworld.xml   
          7. │  │  log4j.properties   
          8. │  │  struts.properties   
          9. │  │  struts.xml   
          10. │  │   
          11. │  └─com   
          12. │      └─jamesby   
          13. │          └─struts2   
          14. │              │  ExampleSupport.class  
          15. │              │  Logon-validation.xml   
          16. │              │  Logon.class  
          17. │              │  LogonInterceptor.class  
          18. │              │  package.properties   
          19. │              │  UserAction-validation.xml   
          20. │              │  UserAction.class  
          21. │              │   
          22. │              └─persist   
          23. │                      DataBaseMock.class  
          24. │                      User.class  
          25. │   
          26. ├─jsp   
          27. │      Logon.jsp   
          28. │      Main.jsp   
          29. │      userForm.jsp   
          30. │      userList.jsp   
          31. │   
          32. ├─lib   
          33.        commons-collections-3.1.jar   
          34.        commons-logging-1.0.4.jar   
          35.        freemarker-2.3.8.jar   
          36.        log4j-1.2.9.jar   
          37.        ognl-2.6.11.jar   
          38.        struts2-core-2.0.6.jar   
          39.        xwork-2.0.1.jar  
          posted on 2008-08-04 00:26 飛飛 閱讀(339) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 永年县| 清徐县| 泉州市| 偃师市| 湖口县| 光山县| 桐庐县| 孝昌县| 象山县| 行唐县| 香港| 葫芦岛市| 镇安县| 巫溪县| 海宁市| 乌拉特前旗| 耒阳市| 岱山县| 金华市| 贵南县| 文登市| 青海省| 望城县| 宁夏| 伽师县| 分宜县| 英山县| 区。| 罗城| 曲阜市| 轮台县| 宣武区| 乐昌市| 大关县| 噶尔县| 达孜县| 东源县| 茶陵县| 涡阳县| 通榆县| 贡山|