• Struts2 JSP中将list,set ,Map传递到Action然后遍历(三十五)


    1.使用Strut2的的集合对象:在jsp初始化action中的list然后提交到action

    2.使用Struts标签,实现多个用户同时注册(注意属性配置文件)

    3.pojo
    Java代码  收藏代码
    1. package com.sh.pojo;  
    2.   
    3. import java.util.Date;  
    4.   
    5. public class Register {  
    6. private String name;  
    7. private String pwd;  
    8. private int age;  
    9. private Date birthday;  
    10. private String address;  
    11.   
    12. //get set  
    13. }  


    4.action
    Java代码  收藏代码
    1. package com.sh.action;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import com.opensymphony.xwork2.ActionSupport;  
    7. import com.sh.pojo.Register;  
    8.   
    9. public class RegisterAction extends ActionSupport {  
    10.   
    11.     private static final long serialVersionUID = 1L;  
    12.     private List<Register> registers;  
    13.     public List<Register> getRegisters() {  
    14.         return registers;  
    15.     }  
    16.     public void setRegisters(List<Register> registers) {  
    17.         this.registers = registers;  
    18.     }  
    19.     public String execute() throws Exception {  
    20.         return SUCCESS;  
    21.     }  
    22.       
    23. }  


    5.RegisterAction-conversion.properties(配置action中list的泛型对象,放在action同一目录下,属性文件的命名为:actionName-version.properties)
    Java代码  收藏代码
    1. Element_registers=com.sh.pojo.Register //Element_是固定的后面接action中的list集合变量名,后面是泛型中的对象类。  


    6.struts.xml
    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
    5.   
    6. <struts>   
    7.      <!-- 定义国际化资源文件的基本名称 -->  
    8.     <constant name="struts.i18n.encoding" value="utf-8"/>  
    9.     <package name="default" extends="struts-default">  
    10.       
    11.         <!-- 使用list集合 -->  
    12.         <action name="registerAction" class="com.sh.action.RegisterAction">  
    13.             <result name="success">/success.jsp</result>    
    14.             <result name="input">/login.jsp</result>          
    15.         </action>  
    16.           
    17.         <!-- 使用Set集合 -->  
    18.         <action name="registerSetAction" class="com.sh.action.RegisterSetAction">  
    19.             <result name="success">/success1.jsp</result>    
    20.             <result name="input">/login3.jsp</result>         
    21.         </action>  
    22.         <!-- 使用 HashMap -->  
    23.         <action name="registerHashMapAction" class="com.sh.action.RegisterHashMapAction">  
    24.             <result name="success">/success3.jsp</result>    
    25.             <result name="input">/login3.jsp</result>         
    26.         </action>  
    27.           
    28.     </package>  
    29. </struts>  


    7.login.jsp  使用 struts2标签 和 OGNL 表达式
    Html代码  收藏代码
    1. <body>  
    2.     <s:form action="registerAction" method="post" theme="simple">  
    3.         <ul style="list-style:none; text-align: center;">  
    4.             <li style="float: left; 155px">用户名</li>  
    5.             <li style="float: left; 155px">密码</li>  
    6.             <li style="float: left; 155px">年龄</li>  
    7.             <li style="float: left; 155px">生日</li>  
    8.             <li style="float: left; 155px">地址</li>  
    9.           </ul>  
    10.           <div style="clear: both;"></div>  
    11. <!-- 手动声明一个 new int[4] 长度为4 的int 类型的数组-->  
    12.         <s:iterator value="new int[4]" status="st">  
    13.           <ul style="list-style:none;">  
    14.             <li style="float: left">  
    15.                 <s:textfield name="%{'registers['+#st.index+'].name'}" label="用户名"/>  
    16.             </li>  
    17.             <li style="float: left">  
    18.                 <s:password name="%{'registers['+#st.index+'].pwd'}" label="密码"/>  
    19.             </li>  
    20.             <li style="float: left">  
    21.                 <s:textfield name="%{'registers['+#st.index+'].age'}" label="年龄"/>  
    22.             </li>  
    23.             <li style="float: left">  
    24.                 <s:textfield name="%{'registers['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/>  
    25.             </li>  
    26.             <li>  
    27.                 <s:textfield name="%{'registers['+#st.index+'].address'}" label="地址"/>  
    28.             </li>  
    29.           </ul>  
    30.         </s:iterator>  
    31.        <div><s:submit value="submit"/></div>  
    32.     </s:form>  
    33.   </body>  


    8.success.jsp 循环遍历 list 集合
    Html代码  收藏代码
    1. <body>  
    2.   <ul style="list-style:none; text-align: center;">  
    3.             <li style="float: left; 155px">用户名</li>  
    4.             <li style="float: left; 155px">密码</li>  
    5.             <li style="float: left; 155px">年龄</li>  
    6.             <li style="float: left; 155px">生日</li>  
    7.             <li style="float: left; 155px">地址</li>  
    8.           </ul>  
    9.           <div style="clear: both;"></div>  
    10.     <s:iterator value="registers" status="st">  
    11.          <ul style="list-style:none;">  
    12.             <li style="float: left; 155px;">  
    13.                 <s:property value="name"/>  
    14.             </li>  
    15.             <li style="float: left; 155px;">  
    16.                 <s:property value="pwd"/>  
    17.             </li>  
    18.             <li style="float: left; 155px;">  
    19.                 <s:property value="age"/>  
    20.             </li>  
    21.             <li style="float: left; 155px;">  
    22.                 <s:property value="birthday"/>  
    23.             </li>  
    24.             <li>  
    25.                 <s:property value="address"/>  
    26.             </li>  
    27.           </ul>  
    28.           <div></div>  
    29.     </s:iterator>  
    30.   </body>  


    9.访问
    --localhost:8080/Struts2_CollectConversion/login.jsp
    填上信息后提交就可以看到成功页面的循环的输出

    10.使用 jstl c 标签 和  EL 表达式 实现上面的 批量注册 (注意 数组初始化)
    long1.jsp
    Html代码  收藏代码
    1. <body>  
    2.     <form action="${pageContext.request.contextPath}/registerAction.action" method="post">  
    3.         <ul style="list-style:none; text-align: center;">  
    4.             <li style="float: left; 155px">用户名</li>  
    5.             <li style="float: left; 155px">密码</li>  
    6.             <li style="float: left; 155px">年龄</li>  
    7.             <li style="float: left; 155px">生日</li>  
    8.             <li style="float: left; 155px">地址</li>  
    9.           </ul>  
    10.           <div style="clear: both;"></div>  
    11. <!--注意这里 声明的时候和上面的不一样 new int[4] c标签识别不出来 ,识别的只有一个元素-->  
    12.         <c:forEach items="new int[]{0,0,0,0}" varStatus="st">  
    13.           <ul style="list-style:none;">  
    14.             <li style="float: left">  
    15.                 <input name="registers[${st.index}].name"/>  
    16.             </li>  
    17.             <li style="float: left">  
    18.                 <input name="registers[${st.index}].pwd" />  
    19.             </li>  
    20.             <li style="float: left">  
    21.                 <input name="registers[${st.index}].age"/>  
    22.             </li>  
    23.             <li style="float: left">  
    24.                 <input name="registers[${st.index}].birthday" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});"/>  
    25.             </li>  
    26.             <li>  
    27.                 <input name="registers[${st.index}].address" />  
    28.             </li>  
    29.           </ul>  
    30.         </c:forEach>  
    31.        <div><input type="submit"/></div>  
    32.     </form>  
    33.   </body>  


    11.访问

    --localhost:8080/Struts2_CollectConversion/login1.jsp
    填上信息后和上面的一样。


    ---------------Set----------------
    12.使用Strutgs2的 Set 类型. 遍历所有 和 取其中一个
    action
    Java代码  收藏代码
    1. package com.sh.action;  
    2.   
    3. import java.util.LinkedHashSet;  
    4. import java.util.Set;  
    5.   
    6. import com.opensymphony.xwork2.ActionSupport;  
    7. import com.sh.pojo.Register;  
    8.   
    9. public class RegisterSetAction extends ActionSupport {  
    10.   
    11.     private Set<Register> registers=new LinkedHashSet<Register>();  
    12.   
    13.     public Set<Register> getRegisters() {  
    14.         return registers;  
    15.     }  
    16.   
    17.     public void setRegisters(Set<Register> registers) {  
    18.         this.registers = registers;  
    19.     }  
    20.   
    21.     @Override  
    22.     public String execute() throws Exception {  
    23.         // TODO Auto-generated method stub  
    24.         return SUCCESS;  
    25.     }     
    26.       
    27. }  


    13.RegisterSetAction-conversion.properties
    Java代码  收藏代码
    1. KeyProperty_registers=name  //KeyProperty 如果是取 单个 就需要这个  
    2. Element_registers=com.sh.pojo.Register   


    14.login3.jsp  (注意 初始化 set 的时候 采用 makeNew[] )
    Html代码  收藏代码
    1. <body>  
    2.     <s:form action="registerSetAction" method="post" theme="simple">  
    3.         <ul style="list-style:none; text-align: center;">  
    4.             <li style="float: left; 155px">用户名</li>  
    5.             <li style="float: left; 155px">密码</li>  
    6.             <li style="float: left; 155px">年龄</li>  
    7.             <li style="float: left; 155px">生日</li>  
    8.             <li style="float: left; 155px">地址</li>  
    9.           </ul>  
    10.           <div style="clear: both;"></div>  
    11.           <!-- 注意 使用了makeNew[] -->  
    12.         <s:iterator value="new int[4]" status="st">  
    13.           <ul style="list-style:none;">  
    14.             <li style="float: left">  
    15.                 <s:textfield name="%{'registers.makeNew['+#st.index+'].name'}" label="用户名"/>  
    16.             </li>  
    17.             <li style="float: left">  
    18.                 <s:password name="%{'registers.makeNew['+#st.index+'].pwd'}" label="密码"/>  
    19.             </li>  
    20.             <li style="float: left">  
    21.                 <s:textfield name="%{'registers.makeNew['+#st.index+'].age'}" label="年龄"/>  
    22.             </li>  
    23.             <li style="float: left">  
    24.                 <s:textfield name="%{'registers.makeNew['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/>  
    25.             </li>  
    26.             <li>  
    27.                 <s:textfield name="%{'registers.makeNew['+#st.index+'].address'}" label="地址"/>  
    28.             </li>  
    29.           </ul>  
    30.         </s:iterator>  
    31.        <div><s:submit value="submit"/></div>  
    32.     </s:form>  
    33.   </body>  


    15.success2.jsp 遍历 Set 和获取 单个
    Html代码  收藏代码
    1. <body>  
    2.   <ul style="list-style:none; text-align: center;">  
    3.             <li style="float: left; 155px">用户名</li>  
    4.             <li style="float: left; 155px">密码</li>  
    5.             <li style="float: left; 155px">年龄</li>  
    6.             <li style="float: left; 155px">生日</li>  
    7.             <li style="float: left; 155px">地址</li>  
    8.           </ul>  
    9.           <div style="clear: both;"></div>  
    10.     <div>===========遍历所有的=========</div>  
    11.     <s:iterator value="registers" status="st">  
    12.          <ul style="list-style:none;">  
    13.             <li style="float: left; 155px;">  
    14.                 <s:property value="name"/>  
    15.             </li>  
    16.             <li style="float: left; 155px;">  
    17.                 <s:property value="pwd"/>  
    18.             </li>  
    19.             <li style="float: left; 155px;">  
    20.                 <s:property value="age"/>  
    21.             </li>  
    22.             <li style="float: left; 155px;">  
    23.                 <s:property value="birthday"/>  
    24.             </li>  
    25.             <li>  
    26.                 <s:property value="address"/>  
    27.             </li>  
    28.           </ul>  
    29.           <div></div>  
    30.     </s:iterator>  
    31.      <div>===========单独去其中的一个(知道其中的key wei admin)========</div>  
    32.      <ul style="list-style:none;">  
    33.             <li style="float: left; 155px;">  
    34.                 <s:property value="registers('admin').name"/>  
    35.             </li>  
    36.             <li style="float: left; 155px;">  
    37.                 <s:property value="registers('admin').pwd"/>  
    38.             </li>  
    39.             <li style="float: left; 155px;">  
    40.                 <s:property value="registers('admin').age"/>  
    41.             </li>  
    42.             <li style="float: left; 155px;">  
    43.                 <s:property value="registers('admin').birthday"/>  
    44.             </li>  
    45.             <li>  
    46.                 <s:property value="registers('admin').address"/>  
    47.             </li>  
    48.           </ul>  
    49.   </body>  


    16.访问
    --http://localhost:8080/Struts2_CollectConversion/login3.jsp
    填写信息后  就会到成功页面 看到遍历所有  和 取单个


    ---------------Map----------------

    17.使用 Strut2的 Map 类型
    action
    Java代码  收藏代码
    1. package com.sh.action;  
    2.   
    3. import java.util.HashMap;  
    4. import java.util.Map;  
    5.   
    6. import com.opensymphony.xwork2.ActionSupport;  
    7. import com.sh.pojo.Register;  
    8.   
    9. public class RegisterHashMapAction extends ActionSupport {  
    10.   
    11.     private Map<String,Register> maps=new HashMap<String, Register>();  
    12.   
    13.     public Map<String, Register> getMaps() {  
    14.         return maps;  
    15.     }  
    16.   
    17.     public void setMaps(Map<String, Register> maps) {  
    18.         this.maps = maps;  
    19.     }  
    20.   
    21.     @Override  
    22.     public String execute() throws Exception {  
    23.         // TODO Auto-generated method stub  
    24.         return SUCCESS;  
    25.     }  
    26.       
    27.       
    28. }  


    18.属性配置文件 RegisterHashMapAction-conversion.properties
    Java代码  收藏代码
    1. Key_maps=java.lang.String   // Key_ 固定  后面为action的Map属性名  
    2. Element_maps=com.sh.pojo.Register  


    19.login5.jsp
    Html代码  收藏代码
    1. <body>  
    2.     <s:form action="registerHashMapAction" method="post" theme="simple">  
    3.         <ul style="list-style:none; text-align: center;">  
    4.             <li style="float: left; 155px">用户名</li>  
    5.             <li style="float: left; 155px">密码</li>  
    6.             <li style="float: left; 155px">年龄</li>  
    7.             <li style="float: left; 155px">生日</li>  
    8.             <li style="float: left; 155px">地址</li>  
    9.           </ul>  
    10.           <div style="clear: both;"></div>  
    11.           <!-- 注意 【key】 中key 的取值类型和 配置文件中一直-->  
    12.         <s:iterator value="new int[4]" status="st">  
    13.           <ul style="list-style:none;">  
    14.             <li style="float: left">  
    15.                 <s:textfield name="%{'maps['+#st.index+'].name'}" label="用户名"/>  
    16.             </li>  
    17.             <li style="float: left">  
    18.                 <s:password name="%{'maps['+#st.index+'].pwd'}" label="密码"/>  
    19.             </li>  
    20.             <li style="float: left">  
    21.                 <s:textfield name="%{'maps['+#st.index+'].age'}" label="年龄"/>  
    22.             </li>  
    23.             <li style="float: left">  
    24.                 <s:textfield name="%{'maps['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/>  
    25.             </li>  
    26.             <li>  
    27.                 <s:textfield name="%{'maps['+#st.index+'].address'}" label="地址"/>  
    28.             </li>  
    29.           </ul>  
    30.         </s:iterator>  
    31.        <div><s:submit value="submit"/></div>  
    32.     </s:form>  
    33.   </body>  


    20 .success3.jsp 遍历 Map  和   取 单个
    Html代码  收藏代码
    1. <body>  
    2.   <ul style="list-style:none; text-align: center;">  
    3.             <li style="float: left; 155px">用户名</li>  
    4.             <li style="float: left; 155px">密码</li>  
    5.             <li style="float: left; 155px">年龄</li>  
    6.             <li style="float: left; 155px">生日</li>  
    7.             <li style="float: left; 155px">地址</li>  
    8.           </ul>  
    9.           <div style="clear: both;"></div>  
    10.     <div>===========遍历所有的=========</div>  
    11.     <s:iterator value="maps" status="st">  
    12.          <ul style="list-style:none;">  
    13.             <li style="float: left; 155px;">  
    14.                 <s:property value="value.name"/>  
    15.             </li>  
    16.             <li style="float: left; 155px;">  
    17.                 <s:property value="value.pwd"/>  
    18.             </li>  
    19.             <li style="float: left; 155px;">  
    20.                 <s:property value="value.age"/>  
    21.             </li>  
    22.             <li style="float: left; 155px;">  
    23.                 <s:property value="value.birthday"/>  
    24.             </li>  
    25.             <li>  
    26.                 <s:property value="value.address"/>  
    27.             </li>  
    28.           </ul>  
    29.           <div></div>  
    30.     </s:iterator>  
    31.      <div>===========单独去其中的一个= (知道其中的key=0)========</div>  
    32.      <ul style="list-style:none;">  
    33.             <li style="float: left; 155px;">  
    34.                 <s:property value="maps['0'].name"/>  
    35.             </li>  
    36.             <li style="float: left; 155px;">  
    37.                 <s:property value="maps['0'].pwd"/>  
    38.             </li>  
    39.             <li style="float: left; 155px;">  
    40.                 <s:property value="maps['0'].age"/>  
    41.             </li>  
    42.             <li style="float: left; 155px;">  
    43.                 <s:property value="maps['0'].birthday"/>  
    44.             </li>  
    45.             <li>  
    46.                 <s:property value="maps['0'].address"/>  
    47.             </li>  
    48.           </ul>  
    49.   </body>  


    21.访问
    --http://localhost:8080/Struts2_CollectConversion/login5.jsp
    填写信息就可以看到结果了

    注意 action中 set 和hashmap 都要 初始化 和 有  get 和set 方法



  • 相关阅读:
    接口的故事
    Bash CookBook(一)--基础
    Spring学习笔记(四)--MVC概述
    Spring学习笔记(三)--Convert System设计
    java web框架发展的新趋势--跨界轻型App
    由Strurts2漏洞引开谈谈web代码安全问题
    Java线程同步之一--AQS
    Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
    redis的多线程
    原电商设计框架
  • 原文地址:https://www.cnblogs.com/wang3680/p/db226e83aeda258f486c2b6e3ef118d8.html
Copyright © 2020-2023  润新知