java struts2基础知识


一 Action介绍
  (1)Struts2中Action默认执行execute方法,方法返回类型String类型,默认为Success,此时success表示的意思:
        <action><result name="success">/ActionIntroduction.jsp</result></action>
    
  (2)Struts2中Path路径说明:在这命名空间下访问Action
    <package name="path" extends="struts-default" namespace="/path"></package>
 
(3)Struts2中方法调用,在Action中配置属性method="add",返回类型为String,默认会执行此Action中方法为add方法,Form中action参数为ActionName!add进行调用。
<!---获取当前服务器请求路径--->
   <% String context = request.getContextPath(); %>
   <a href="<%=context %>/user/userAdd">添加用户</a>
 
(4)Sturts2中用户自定义Action需要继承com.opensymphony.xwork2.ActionSupport类,
     可在Action写自定义方法。
     public class UserAction extends ActionSupport {
    public String add() {  return SUCCESS;  }
}
(5)Struts2中可以采用通配符来优化Struts2中Action配置项
 <struts>
    <constant name="struts.devMode" value="true" />
    <package name="actions" extends="struts-default" namespace="/actions">
        <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
            <result>/Student{1}_success.jsp</result>
        </action>
        <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}_success.jsp</result>
            <!-- {0}_success.jsp -->
        </action>
    </package>
</struts>
 (6) Sturts获取请求参数形式One,
服务器路径为/webpath/actionName!actionMethod?name=aa&pass=123
public class action Name extends ActionSupport {
   // 用户自定义action
     private String name;
     private int age;
     public String actionMethod () {
            System.out.println("name=" + name);
            System.out.println("age=" + age);
            return SUCCESS;
     }
     public String getName() {
            return name;
     }
     public void setName(String name) {
            this.name = name;
     }
     public int getAge() {
            return age;
     }
     public void setAge(int age) {
            this.age = age;
     }
}
(7)Sturts获取请求参数形式Two
服务器路径为/webpath/actionName!actionMethod?name=aa&age=123
//Bean定义
public class User {
             private String name;
             private int age;
             public String getName() {  return name;  }
       public void setName(String name) { this.name = name;      }
            public int getAge() {  return age; }
       public void setAge(int age) {  this.age = age; }
      }
     //Action定义,采用实体对象获取request请求参数
       private User user;
           public String add() {
           System.out.println("name=" + user.getName());
           System.out.println("age=" + user.getAge());
           return SUCCESS;   
      }
        public User getUser() {  return user;  }
  public void setUser(User user) { this.user = user;}
 
(8)解决Sturts2中请求乱码问题,在web.xml配置,注意试用版本
     <filter>
        <filter-name>struts2</filter-name> <!--<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>-->
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
 
(9)Sturts2常用配置项
    //表示项目处于开发模式
 <constant name="struts.devMode" value="true" />
 // 以下配置注意版本试用,是Bug。
    <constant name="struts.i18n.encoding" value="GBK" />
 
(10)采用Sturts提示对Form验证提示信息。
   //Action定义
   public class UserAction extends ActionSupport {
       private String name;
      
       public String add() {
              if(name == null || !name.equals("admin")) {
                     this.addFieldError("name", "name is error");
                     this.addFieldError("name", "name is too long");
                     return ERROR;
              }
              return SUCCESS;
       }
       public String getName() {
              return name;
       }
       public void setName(String name) {
              this.name = name;
       }
 }
  //jsp页面重要内容
  <%@taglib uri="/struts-tags" prefix="s" %>
  <s:fielderror fieldName="name" theme="simple"/>
       <br />
       <s:property value="errors.name[0]"/>
       <s:debug></s:debug>
(11)Strust2中获取web对象request,response,appliction对象方法:
     方法一:
package com.web.request;
 
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
 
public class Actionrequest_1 extends ActionSupport {
 
    private static final long serialVersionUID = -8900237973267034703L;
      
    private Map request;
    private Map session;
    private Map application;
      
       public String getRequest1()
       {
              request=(Map)ActionContext.getContext().get("request");
              session=(Map)ActionContext.getContext().getSession();
              application=(Map)ActionContext.getContext().getApplication();
              request.put("xiezepeng", "suenpeng");
              session.put("aa", "难道不好吗?");
              application.put("bb", "bb_1");         
              return "request1";
       }

}

方法二:
package com.web.request;
 
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
 
public class Actionrequest_2 extends ActionSupport
implements RequestAware,SessionAware,ApplicationAware{
  private static final long serialVersionUID = 1816809311006760008L;
 
  private Map<String, Object> request;
  private Map<String, Object> session;
  private Map<String, Object> application;
 
  public String getRequest2()
  {
         request.put("suenpeng", "suenpeng");
         session.put("www", "难道不好吗?");
         application.put("ccc", "bb_1");         
         return "request2";
  }
  public void setRequest(Map<String, Object> request) {
          this.request=request;
  }
  public void setSession(Map<String, Object> session) {
         this.session=session;
  }
  public void setApplication(Map<String, Object> application) {
         this.application=application;
  }

}

方法三:
package com.web.request;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
 
public class Actionrequest_3 extends ActionSupport{
     private static final long serialVersionUID = 8585891770147868244L;
       
  private HttpServletRequest request;
  private HttpSession session;
  private ServletContext application;
 
  public String  getRequest3() {
         request = ServletActionContext.getRequest();
         session = request.getSession();
         application = session.getServletContext();
         request.setAttribute("r1", "r1");
         session.setAttribute("s1", "s1");
         application.setAttribute("a1", "a1");
         return "request3";
  }

}

方法四:
package com.web.request;
 
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
 
public class Actionrequest_4 extends ActionSupport implements ServletRequestAware{
     private static final long serialVersionUID = 4438481186630747030L;
 
  private HttpServletRequest request;
  private HttpSession session;
  private ServletContext application;
 
  public String getRequest4()
  {
         request.setAttribute("r11", "r1");
         session.setAttribute("s11", "s1");
         application.setAttribute("a11", "a1");
         return "request4";
  }
  public void setServletRequest(HttpServletRequest request) {
         this.request = request;
         this.session = request.getSession();
         this.application = session.getServletContext();
  }

}

以上方法中Action配置如下
<?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" />
    <package name="user" extends="struts-default" namespace="/">
        <!--获取web值方法1-->
        <action name="Actionrequest_1" class="com.web.request.Actionrequest_1" method="getRequest1">
               <result name="request1">/request.jsp</result>
        </action>
        <!--获取web值方法2-->
        <action name="Actionrequest_2" class="com.web.request.Actionrequest_2" method="getRequest2">
               <result name="request2">/request2.jsp</result>
        </action>
        <!--获取web值方法3-->
        <action name="Actionrequest_3" class="com.web.request.Actionrequest_3" method="getRequest3">
               <result name="request3">/request3.jsp</result>
        </action>
        <!--获取web值方法4-->
        <action name="Actionrequest_4" class="com.web.request.Actionrequest_4" method="getRequest4">
               <result name="request4">/request4.jsp</result>
        </action>
       
    </package>
</struts>
页面编写如下:
<tr><td><s:property value="#request.r11"/>  ||  <%=request.getAttribute("r11") %></td>  </tr>
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suenpeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值