struts2.1.6 03

表单提交有中文尽量使用post

<constant name="struts.i18n.encoding" value="GBK"/>   这是一个bug 

<filter-class>org.apache.struts2.dispatcher.FileterDispatcher</filter-class>        web.xml 说可以解决不过我没有试出来就没做了,用spring 解决乱码安全

  1. package com.demo.action;  
  2. import com.opensymphony.xwork2.ActionSupport;  
  3.   
  4. public class UserAction extends ActionSupport {  
  5.     private String name;  
  6.   
  7.     public String add() {  
  8.         System.out.println("name = " + name);  
  9.         return SUCCESS;  
  10.     }  
  11.       
  12.     public String getName() {  
  13.         return name;  
  14.     }  
  15.   
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.       
  20. }  

  1. body>  
  2.     使用action 属性接收参数,测试中文问题  
  3.     <form action="user/user!add" method="post">  
  4. 姓名:<input type="text" name="name"></input>  
  5.      <input type="submit" value="submit"/>  
  6.     </form>  
  7.   </body>  


数据校验

  1. package com.demo.action;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class UserAction extends ActionSupport {  
  6.     private String name;  
  7.       
  8.     public String add () {  
  9.         if(name == null || !name.equals("admin")) {  
  10.             this.addFieldError("name""name is error");  
  11.         //    this.addFieldError("name", "name is long");  
  12.             return ERROR;  
  13.         }  
  14.         return SUCCESS;  
  15.     }  
  16.       
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.   
  21.     public void setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.       
  25. }  

  1.   <body>  
  2. 使用addFiledError 方法和s:filedError 标签简单处理数据校验  
  3. <a href="user/user!add?name=a">添加用户</a>  
  4.   </body>  

  1. <body>  
  2. User Add Error!  
  3. <s:fielderror fieldName="name" theme="simple"/>  
  4. <br />  
  5. <s:property value="errors.name[0]"/>  
  6. <s:debug></s:debug>  
  7.   
  8.  </body>  




context 把他看成周围的环境

例如: servletContext 即servlet 周围的环境 actionContext   即action周围的环境 及里面执行的过程或者一些东西

  1. package com.demo.action;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import com.opensymphony.xwork2.ActionContext;  
  6. import com.opensymphony.xwork2.ActionSupport;  
  7.   
  8. public class LoginAction1 extends ActionSupport{  
  9.   
  10.     private Map request;  
  11.     private Map session;  
  12.     private Map application;  
  13.       
  14.     public LoginAction1 () {  
  15.         request = (Map) ActionContext.getContext().get("request");  
  16.         session = ActionContext.getContext().getSession();  
  17.         application = ActionContext.getContext().getApplication();  
  18.     }  
  19.     @Override  
  20.     public String execute() throws Exception {  
  21.         request.put("r1""r1");  
  22.         session.put("s1""s1");  
  23.         application.put("a1""a1");  
  24.         return SUCCESS;  
  25.     }  
  26. }  
  27.   
  28. // IOC 控制反转 常用这种方式  
  29.  package com.demo.action;  
  30.   
  31. import java.util.Map;  
  32.   
  33. import org.apache.struts2.interceptor.ApplicationAware;  
  34. import org.apache.struts2.interceptor.RequestAware;  
  35. import org.apache.struts2.interceptor.SessionAware;  
  36.   
  37. import com.opensymphony.xwork2.ActionContext;  
  38. import com.opensymphony.xwork2.ActionSupport;  
  39.   
  40. public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{  
  41.   
  42.     private Map<String,Object> request;  
  43.     private Map<String,Object> session;  
  44.     private Map<String,Object> application;  
  45.       
  46.     @Override  
  47.     public String execute() throws Exception {  
  48.         request.put("r1""r1");  
  49.         session.put("s1""s1");  
  50.         application.put("a1""a1");  
  51.         return SUCCESS;  
  52.     }  
  53.     public void setRequest(Map<String, Object> request) {  
  54.         this.request = request;  
  55.     }  
  56.     public void setSession(Map<String, Object> session) {  
  57.         this.session = session;  
  58.     }  
  59.     public void setApplication(Map<String, Object> application) {  
  60.         this.application = application;  
  61.     }  
  62. }  
  63.   
  64. package com.demo.action;  
  65. import javax.servlet.ServletContext;  
  66. import javax.servlet.http.HttpServletRequest;  
  67. import javax.servlet.http.HttpSession;  
  68.   
  69. import org.apache.struts2.ServletActionContext;  
  70.   
  71. import com.opensymphony.xwork2.ActionContext;  
  72. import com.opensymphony.xwork2.ActionSupport;  
  73.   
  74. public class LoginAction3 extends ActionSupport{  
  75.   
  76.     private HttpServletRequest request;  
  77.     private HttpSession session;  
  78.     private ServletContext application;  
  79.       
  80.     public LoginAction3 () {  
  81.         request = ServletActionContext.getRequest();  
  82.         session = request.getSession();  
  83.         application = session.getServletContext();  
  84.     }  
  85.     @Override  
  86.     public String execute() throws Exception {  
  87.         request.setAttribute("r1""r1");  
  88.         session.setAttribute("s1""s1");  
  89.         application.setAttribute("a1""a1");  
  90.         return SUCCESS;  
  91.     }  
  92. }  
  93.   
  94. package com.demo.action;  
  95. import javax.servlet.ServletContext;  
  96. import javax.servlet.http.HttpServletRequest;  
  97. import javax.servlet.http.HttpSession;  
  98.   
  99. import org.apache.struts2.ServletActionContext;  
  100. import org.apache.struts2.interceptor.ServletRequestAware;  
  101.   
  102. import com.opensymphony.xwork2.ActionContext;  
  103. import com.opensymphony.xwork2.ActionSupport;  
  104.   
  105. public class LoginAction4 extends ActionSupport implements ServletRequestAware{  
  106.   
  107.     private HttpServletRequest request;  
  108.     private HttpSession session;  
  109.     private ServletContext application;  
  110.       
  111.     @Override  
  112.     public String execute() throws Exception {  
  113.         request.setAttribute("r1""r1");  
  114.         session.setAttribute("s1""s1");  
  115.         application.setAttribute("a1""a1");  
  116.         return SUCCESS;  
  117.     }  
  118.     public void setServletRequest(HttpServletRequest request) {  
  119.         this.request = request;  
  120.         this.session = request.getSession();  
  121.         this.application = session.getServletContext();          
  122.     }  
  123.       
  124. }  
  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.   
  6. <struts>  
  7.     <constant name="struts.devMode" value="true"/>       
  8.     <package name="login" extends="struts-default" namespace="/login">  
  9.         <action name="login*" class="com.demo.action.LoginAction{1}">  
  10.             <result>   
  11.                 /user_login_success.jsp  
  12.             </result>  
  13.         </action>  
  14.     </package>  
  15. </struts>  



  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <% String context = request.getContextPath(); %>  
  3. <html>  
  4. <head>  
  5. </head>  
  6. <body>  
  7. 取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:  
  8. <ol>  
  9.     <li>前三者: 依赖于容器</li>  
  10.     <li>前三者:IOC</li>(只有这种)  
  11.     <li>后三者: 依赖于容器</li>  
  12.     <li>后三者: IOC</li><br/>  
  13. <form name="f" action="" method="post">  
  14. 用户名: <input type="text" name="name"/>  
  15. 密码: <input type="text" name="password"/><br/>  
  16. <input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();"/>  
  17. <input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();"/>  
  18. <input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();"/>  
  19. <input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();"/>  
  20. </form>  
  21. </ol>   
  22. </body>  
  23. </html>  

  1. <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>  
  2. <%@taglib uri="/struts-tags" prefix="s" %>  
  3. <html>  
  4.   <head>  
  5.   </head>  
  6.   <body>  
  7.     User Login Success ! <br/>  
  8.     <s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />  
  9.     <s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />  
  10.     <s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />  
  11.     <s:property value="#attr.a1"/><br>  
  12.     <s:property value="#attr.s1"/><br/>  
  13.     <s:property value="#attr.r1"/><br/>  
  14.     <s:debug></s:debug>  
  15.   </body>  
  16. </html>  

loginaction2



  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.     <package name="login" extends="struts=default" namespace="/login">  
  7.         <action name="login*" class="com.demo.action.LoginAction{1}">  
  8.             <result>/user_login_success.jsp</result>  
  9.         </action>       
  10.     </package>  
  11. </struts>   
  12.   
  13. <pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" ?>  
  14. <!DOCTYPE struts PUBLIC  
  15.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  16.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  17.   
  18. <struts>  
  19.     <constant name="struts.devMode" value="true"/>       
  20.     <include file="login.xml"></include>  
  21. </struts>  
  22.  </pre>把login.xml 文件包含到struts.xml 里面来<pre name="code" class="html"><pre name="code" class="html"><include file="login.xml"></include></pre><p></p>  
  23. <pre></pre>  
  24. 方便分成模块,便于开发<br>  
  25. <pre></pre>  
  26. <br>  
  27. <pre name="code" class="html"><constant name="struts.devMode" value="true"/>       
  28.     <package name="front" extends="struts-default" namespace="/">  
  29.         <default-action-ref name="index"></default-action-ref>  
  30.         <action name="index">  
  31.             <result>   
  32.                 /default.jsp  
  33.             </result>  
  34.         </action>  
  35.     </package>  
  36.   
  37. <pre name="code" class="html"><default-action-ref name="index"></default-action-ref> 如果访问不存在便 默认以index.action 为主   </pre><br>  
  38. <pre></pre>  
  39. <br>  
  40. <img src="http://hi.csdn.net/attachment/201111/12/0_1321102675sPB4.gif" alt=""><br>  
  41. <br>  
  42. <p></p>  
  43. <p></p>  
  44.   
  45. </pre></pre> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值