就是自定义拦截器的问题,初学,困扰了我一天,大家帮忙解释下,谢谢:
拦截器:
public class MyInterceptor implements Interceptor{ public void destroy() {
System.out.println("调用拦截器的destroy方法");
//(1)destory()方法在拦截器实例销毁前调用,请问什么时候销毁拦截器实例,reload程序的时候没有调用该方法啊?
}
public void init() {
System.out.println("调用拦截器的init方法");
}
public String intercept(ActionInvocation invocation) throws Exception {
Long start = System.currentTimeMillis();
System.out.println("开始计数");
String r = invocation.invoke();//返回"success"
Long end = System.currentTimeMillis();
System.out.println(end - start);
System.out.println("计数完毕");
System.out.println(r);
return "add"; //(2)请问这边为什么可以写成任意的字符串,原理是什么?
}
}
struts.xml文件
<struts>
<package name="default1" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myIntcpt" class="com.wjf.action.MyInterceptor"></interceptor>
</interceptors>
<global-results>
<result name="add">/add.jsp</result>
</global-results>
<action name="test" class="com.wjf.action.TestAction">
<result>/success.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myIntcpt"></interceptor-ref>
</action>
</package>
</struts>
action:
public class TestAction extends ActionSupport{ public String execute() throws Exception {
System.out.println("执行了action的execute方法");
return super.execute();
}
public String add(){
System.out.println("执行了add的add方法");
return "add";
}
}
解决方案 »
- java中ArrayList的add方法值覆盖问题。
- 我用URL來下載文件,速度很慢,怎麼解決?
- 同一包内变量使用问题
- JAVA(JSP)开发困惑-为什么我对jsp看不到希望
- 问一下,jbrander 能否支持跨平台?????
- 高分通过 SCJP 的看这里:300分相送(先给100不够再加)
- java.exe-应用程序错误(程序一运行就报错)
- 各位大虾怎么解决java swing 在win2000下的中文??(加100分)
- 对于一个不经常上网的java学者来说,有学习java的好办法吗?因为一些软件总是要上网下载的,软件店又买不到,怎么办?求救!!!
- 中文问题求助
- sax的简单问题
- 动态数据生成问题,求解
<package name="default1" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myIntcpt" class="com.wjf.action.MyInterceptor"></interceptor>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="myIntcpt" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="add">/add.jsp</result>
</global-results>
<action name="test" class="com.wjf.action.TestAction">
<result>/success.jsp</result>
<interceptor-ref name="mydefault"></interceptor-ref>
</action>
</package>
</struts>
Long start = System.currentTimeMillis();
System.out.println("开始计数");
String r = invocation.invoke();//返回"success"
Long end = System.currentTimeMillis();
System.out.println(end - start);
System.out.println("计数完毕");
System.out.println(r);
return r; //这里并不是返回的是任意值,返回的是invocation.invoke()执行后的结果,所以返回的应该是r才对,因为这个拦截器还要将执行后的结果返回给下一个烂机器,这样程序才能正确的执行
}
对于struts采用的设计模式建议你看一看java的设计模式
值随便该,但是并不会影响结果,这是为什么?
http://zhidao.baidu.com/question/174503645.html,这个是百度人家提问的,没有找到答案啊?