struts2总结(自己做项目时遇到的问题加上一些网上的资料)
来源:互联网 发布:表格扫描识别软件 编辑:程序博客网 时间:2024/06/06 18:53
/********************************
关于配置:
1.package继承struts-default(struts2中已经配置的)2.当package中abstract属性为true时,下面不能陪action3.跳转类型(常用的):redirect(默认的),dispatcher,chain,redirect-action
这里要注意的是:一般action传值到页面(例如传userList到显示页面)跳转类型为redirect(也可以为chain.),但当一个action需要验证,传一个error时,跳转必须为dispatcher, 因为验证出错后 会跳转到input视图中,在input视图中要显示错误信息,错误信息又是在request空间中存储的,如果为redirect数据就无法传递
关于拦截器:
1.所有的action里的方法都是在拦截器栈中才能得以实现
2.可以在自己的某个action中,加入一个拦截器,例如timer,这时候必须要注意的是,当你在action中自己加拦截器后,默认的拦截器栈就不会起作用了,需要手动引入<package name="mypackage" extends="struts-default"><action name="*user" class="com.tmaic.web.UserAction" method="{1}"><result name="success">main.jsp</result><result name="input">index.jsp</result> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="defaultStactk"></interceptor-ref></action></package>
3.也可以配置自己的拦截器栈,让所有的action都应用,这时引入的就不再是struts-delault而是自己配置的:<interceptor-stack name="myInterceptorStack"><interceptor-ref name="myMethodInterceptor"></interceptor-ref><interceptor-ref name="myTime"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><default-interceptor-ref name="myInterceptorStack"/>
4.如果要写自己的拦截器的话,继承AbstractInterceptor:package com.kaishengit.util;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class MyTimerInterceptor extends AbstractInterceptor{private static final long serialVersionUID = 1L;private String name;@Overridepublic String intercept(ActionInvocation invocation) throws Exception {long startTime = System.currentTimeMillis();String result = invocation.invoke();long execute = System.currentTimeMillis() - startTime;String actionName = invocation.getProxy().getActionName();String method = invocation.getProxy().getMethod();System.out.println("Name:" + name);System.out.println("执行"+actionName+"!"+method+"耗时:" + execute + "ms.");return result;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
5.这里运用到了代理模式,其中invocation.getProxy()得到的是Action的名字6.拦截器只能拦截struts2中的action,而过滤器全都过滤(但过滤器耦合http里的程序)
- struts2总结(自己做项目时遇到的问题加上一些网上的资料)
- 自己做项目的时候遇到的一些简单问题
- 遇到的一些语法问题,网上查到的资料
- 最近做项目遇到的一些问题总结
- 自己遇到的一些问题的总结
- 自己总结遇到的一些问题
- 我自己做的网上项目目录
- 自己Cocoapods遇到的一些问题,做个记录
- 自己做的一些项目
- 自己平时在做项目时候的一些总结
- 网上搜索到的一些资料,做个备份
- 自己遇到的一些问题
- 自己总结遇到的mysql的一些问题
- 总结一下自己Java实习后遇到的一些问题。
- svn同mantis的整合实战(网上资料凌乱,自己做攻略)
- SSM做项目时遇到的问题
- (项目开发)网上的前辈的一些总结
- QT 全局变量所遇见的问题,以及参考网上的解决方法,做个总结,提醒自己
- 学习笔记——struts2标签时间转换
- nfs挂载方法及问题解决
- 汉字编码问题
- 1.1 数组-找出无序数组中最大的N个元素的位置
- C语言中的高级声明--《c和指针》摘要
- struts2总结(自己做项目时遇到的问题加上一些网上的资料)
- java中的i++问题
- A suitable candidate
- 迁移Windows 7 的用户文件夹
- Eclipse一些常用的快捷键
- C语言头文件的使用
- 明源地产ERP实施五步法
- Android Gallery添加多帧gif格式
- 【设计模式·笔记】迭代子模式