关于Action总结

来源:互联网 发布:飞行燃料走淘宝 编辑:程序博客网 时间:2024/06/06 03:29

1.      Action入门:helloworld;

2.      Namespace:

    (1)   决定action的访问路径。

(2)      它默认是””,这样可以收所有路径的action

(3)  可以写成/ 或者/TanZi,对应的访问路径就是/index.action,/TanZi/index.action

(4)  Namespace最好也用模块来进行命名

3.      定义自己的Action 

(1)具体视力的返回可以由用户自己定义的Action来决定

(2)具体的手段是根据返回的字符串找到的对应的配置项来决定视图的内容

(3)具体Action实现可能是一个普通的java类,里面有public String execute方法或者实现Action接口。

(4)不过最常用的是从ActionSuppoort继承,好处在于可以直接使用Struts2封装好的方法

 

4.      路径设置

        

5.      调用Action的自定义方法

(1)action访问时不一定会调用execute方法。

(2)可以配置文件中配置Action的时候用method=来指定执行哪个方法也可以在url地址中动态指定(动态方法调用DMI)

6.      通配符

    *是表示所有。。{1}代表第一个星所代表的意思

7.      接收用户输入

(1)会自动接收url传来的数据。自动的意思是说:会自动调用对应的set方法

(2)当接收到action时,先把DTO数据填好

(3) 用modelDriven接收参数

 

 

8.      乱码问题解决

(1)在struts中加一句<constant name=”struts.i18n.encoding” value=”GBK”/>

(2)要查struts要到哪查?

9.      简单数据校验

然后现把数据从value Stack contents中读出来。

10.  Action中访问web元素

关于分类:

对于(map类型)request. session .applicationyy

方法一: 

public class LoginAction1 extendsActionSupport {private Map request;private Map session;private Map application;public LoginAction1(){           request=(Map)ActionContext.getContext().get("request");//得到request           session=ActionContext.getContext().getSession();//得到session           application=ActionContext.getContext().getApplication();//得到application}public String execute(){           request.put("r", "r帅哥");           session.put("s坛子","s帅哥");           application.put("a坛子","a帅哥");           return SUCCESS;}} 

 

方法二:

能过实现RequestAware ,SessionAware,ApplicationAware等相对应的接口

packagecom.tanliu.Login;importjava.util.Map;importorg.apache.struts2.interceptor.ApplicationAware;importorg.apache.struts2.interceptor.RequestAware;importorg.apache.struts2.interceptor.SessionAware;importcom.opensymphony.xwork2.ActionSupport;publicclass LoginAction2 extends ActionSupport implementsRequestAware,SessionAware,ApplicationAware{ private Map<String, Object> request;private Map<String, Object> session;private Map<String, Object> application;       public String execute(){           request.put("r", "r2帅哥");           session.put("s坛子","s2帅哥");           application.put("a坛子","a2帅哥");           return SUCCESS;}@Overridepublic void setApplication(Map<String,Object> arg0) {           this.application=arg0;          }@Overridepublic void setSession(Map<String,Object> arg0) {           this.session=arg0;          }@Overridepublic void setRequest(Map<String,Object> arg0) {           this.request=arg0;          }}


真实型的:HttpServletRequest,HttpServletSession, ServletContex

使用方法:实现ServletRequestAware接口

实现代码:

packagecom.tanliu.Login; importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importorg.apache.struts2.interceptor.ServletRequestAware; importcom.opensymphony.xwork2.ActionSupport; publicclass LoginAction3 extends ActionSupport implements ServletRequestAware { private HttpServletRequest request;  private HttpSession session;private ServletContext application;public String execute(){           request.setAttribute("r2","r3帅哥"); //注入的方法有所有同           session.setAttribute("s坛子","s2帅哥");           application.setAttribute("a坛子","a2帅哥");           return SUCCESS;          }@Overridepublic voidsetServletRequest(HttpServletRequest request) {           this.request=request;           this.session=request.getSession();           this.application=session.getServletContext();                 }} 


当数据传前端时会自动专是相对应的对象。如(map)request->request

在前端表现可分为两种:<s:propertyvalue="#request.r"/>|<%=request.getAttribute("r")%>其它三个也是一样。

 

11.  包含模块配置文件

作用:把开发中的配置文件合并起来

实现:在strust文件中<include file=”login.xml”/>

 

12.  默认Action

意义:方便当url找不到的。然后就转到一个默认的jsp.好比别人访问一个不存在的内部时。可以跳到指定的地址。

实现:<default-action-refname=”index”></default-action-ref>


0 0
原创粉丝点击