有关Struts2的个人总结:
2015-12-25 13:55
477 查看
一、多分发的方法:
1、通过action元素的method属性来指定action调用的方法。
途径:(1)查找与method属性值完全一致的方法;(2)查找doMethod()形式的方法。(一些方法别名需要,因为有些关键字不能使用,就可以在前面加do)
2、动态方法调用(Dynamic Method Invocation,DMI)
eg:actionName!methodName.action3、运用通配符:
eg:actionName_*eg:*_*
设置*参数时,使用 {1} {2} {3}
二、result的结果类型:
1、默认:dispather2、chain:用于Action链式处理
3、redirect:用于重定向到另外的URL
4、redirctAction:用于重定向到另外的action映射
5、plainText:用于显示某个特定页面的原始内容(即页面的代码)
三、Action中接收客户端输入的方法:
1、使用领域对象接收客户端输入,需提供对象的getter/setter方法eg:
public class MyAction extends ActionSupport{ private User user = new User(); //property: username和password @Override public String execute() throws Exception { //... return SUCCESS; } public User getUser(){ return user; } public void setUser(User user){ this.user=user; } }
2、使用ModelDriven接口,该接口中只有一个方法:public T getModel();
eg:
public class MyAction extends ActionSupport implements ModelDriven{ private User user = new User(); //property: username和password @Override public String execute() throws Exception { //... return SUCCESS; } @Override public User getModel(){ return user; } }
3、使用action的属性接收客户端的输入需提供属性的getter/setter方法
eg:
public class MyAction extends ActionSupport { private String username; private String password; @Override public String execute() throws Exception { //... return SUCCESS; } public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } }
四、页面对应不同方式填写参数
①、领域对象:user.username/user.password②、ModelDriven:username/password
③、属性取值:username/password
五、访问request、session和application对象
1、与Servlet API解耦的访问方式:
(1)、使用ActionContext
ActionContext context = ActionContext.getContext();Map request = (Map)context.get("request");
Map session = context.getSession();
Map application = context.getApplication();
request.put(key,value);
session.put(key,value);
页面参数获取:(使用EL表达式)
${requestScope.key} ${sessionScope.user.username} ${applicationScope.key}
(2)、implements RequestAware、SessionAware、ApplicationAware
eg:public class MyAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{ private static final long serialVersionUID = 1L; private Map request; private Map session; private Map application; public String execute(){ return SUCCESS; } public void setRequest(Map request) { this.request = request; } public void setSession(Map session) { this.session = session; } public void setApplication(Map application) { this.application = application; } }
说明:Action类实现三个接口,框架在运行时会调用这三个接口中的方法,向Action类中注入request、session和application对象。
2、与Servlet API耦合的访问方式(直接访问)
(1) org.apache.struts2.ServletActionContext extends ActionContext
该类下静态方法:①、public static HttpServletRequest getRequest(){}
②、public static ServletContext getServletContext(){}
③、public static HttpServletResponse getResponse(){}
此处:HttpSession可以通过HttpServletRequest对象来得到。
(2)、通过ActionContext对象的get()方法:
①、HttpServletRequest request = ActionContext.getContext().get(SerlvetActionContext.HTTP_REQUEST);②、ServletContext context = ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);
③、HttpServletResponse response = ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
(3)、implemets ServletRequestAware和ServletContextAware接口
eg:public class MyAction extends ActionSupport implements ServletRequestAware,ServletContextAware{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private ServletContext context; public String execute(){ return SUCCESS; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setServletContext(ServletContext context) { this.context = context; } }说明:由struts2框架向Action实例注入HttpServletRequest和ServletContext对象,需要重写接口中的方法。
相关文章推荐
- Spring Task定时设置
- 深入浅出java并发
- spring mvc+spring+mybatis+ajax实现登录验证
- Spring
- 一个加密解密的小工具
- spring多数据源的配置和使用
- JAVA中字符串问题
- JAVA中字符串问题
- JAVA环境配置
- 修改Eclipse 45秒超时
- JAVA-中介者设计模式
- Spring-IOC
- Java虚拟机字节码指令
- sftp plugin for eclipse 集成
- JAVA实现排队论
- JavaWeb课程设计_宿舍管理系统01
- web设置session超时时间
- 在web.xml中注册IntrospectorCleanupListener监听器以解决spring mvc等框架可能产生的内存泄露问题
- Java基础学习总结(33)——Java8 十大新特性详解
- Java基础学习总结(33)——Java8 十大新特性详解