今天上午试着使用拦截器,根据网上的搜索,将自己的Action中配置了一个框架自带的拦截器:timer。但是,当我运行时,不但没有发现控制台输出什么粗略耗时统计之类的东西,居然还报出了500错误,说是什么空指针,杯具啊!
到最后,在网上看到一位老兄的一句话,突然来了灵感!
" 如果为Action指定了一个拦截器,则系统默认的拦截器栈将会失去作用。为了继续使用默认拦截器,所以上面配置文件中手动引入了默认拦截器。"
经典啊!原来是这里出问题了,于是,我就赶紧将action配置中又引入了struts框架的一个basicStack拦截器栈,终于OK了!!
<!-- Basic stack -->
<interceptor-stack name="basicStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<struts>
<!-- 引入struts框架的配置文件 -->
<include file="struts-default.xml"></include>
<package name="struts2_test" extends="struts-default">
<action name="userCase" class="com.harry.demo.actions.UsercaseAction">
<!-- 配置一个拦截器 -->
<interceptor-ref name="basicStack"></interceptor-ref>
<interceptor-ref name="timer" />
<result name="input">/index.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
控制台输出的信息如下:
2011-3-18 9:52:14 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Executed action [//userCase!login] took 31 ms.
努力学习!刚碰到问题的时候是有点儿郁闷,但是千万不能灰心,要鼓起勇气,战胜困难,并且记录下来,这就是学习经验!!
分享到:
相关推荐
在Java Web应用开发中,Struts2框架提供了一种非常实用的方法来解决这个问题——通过使用`tokenSession`拦截器。相比于传统的`token`拦截器,`tokenSession`提供了更加灵活和友好的用户体验。本文将深入探讨`token...
1. **配置拦截器**:在你的Struts2配置文件(通常是`struts.xml`或`struts-default.xml`)中,添加`token`拦截器到拦截器栈中。例如: ```xml <param name="includeMethods">input,back,cancel,browse ...
`org.apache.struts2.interceptor`包定义了内置的拦截器,例如身份验证、异常处理等,开发者可以根据需要自定义拦截器。 最后,`org.apache.struts2.util`和`org.apache.struts2.validators`包提供了实用工具类和...
6. **注解驱动**:Struts2支持使用注解来声明Action、方法映射、拦截器等,减少了XML配置的复杂性。 **两者之间的主要区别** 1. **架构**:Struts1基于单一Action模型,而Struts2引入了拦截器栈,使架构更加灵活。 ...
1. **拦截器(Interceptors)**:Struts 2的核心是拦截器,它们按照预定义的顺序执行,增强了处理请求的能力,如日志、异常处理、验证等。 2. **配置方式**:Struts 2的配置更为灵活,可以使用XML(struts.xml或...
然而,这只是基础,Struts2还有许多高级特性,如拦截器、插件、国际化、Ajax支持以及更复杂的Action配置等,这些都是构建大型企业级应用时必不可少的工具。在实际开发中,理解并熟练运用这些特性,将有助于提升应用...
在实现上,开发者可以在JSP表单页面中使用标签生成唯一的token标识,并在struts.xml文件中配置相应的token拦截器以及invalid.token结果视图。 在配置示例代码中,开发者需要在login.jsp页面中加入<s:token></s:...
在Eclipse中,开发者可以利用这些特性,通过创建Struts2项目,编写Action类,配置Action和结果,设置拦截器,以及使用Struts标签库来快速构建一个功能完善的Web应用。同时,Eclipse的代码提示和自动完成功能也会极大...
1. **拦截器(Interceptors)**:这是Struts2的一大创新,允许开发者定义一系列处理请求和响应的中间件,可以用于日志记录、事务管理、权限控制等各种用途。 2. **OGNL(Object-Graph Navigation Language)**:...
例如,在`struts-default.xml`文件中定义了一个默认的拦截器栈`defaultStack`,其中包含了`actionTokenInterceptor`和`TokenSessionStoreInterceptor`两个拦截器,用于执行令牌的验证工作。 ```xml ...
- Struts2的拦截器或自定义过滤器会检测到这个Cookie,读取其值并解密。 - 检查解密后的Token是否存在于服务器的Session中。如果存在,说明该用户已经通过了身份验证,可以直接跳转到主页面,实现自动登录效果;...
`<interceptor-ref name="token">`表示使用了令牌拦截器,`<param name="strict">true</param>`表示开启严格模式,即当令牌失效时,会抛出异常,而不是简单地返回输入页面。 此外,`TokenAwareActionSupport`类是...
1. **配置Action**:在Struts的配置文件(struts.xml或struts.properties)中,为需要防止重复提交的Action添加一个拦截器,通常是`token`和`tokenSession`拦截器。 2. **生成Token**:在Action的准备方法(Prepare...
Struts2的核心是使用拦截器处理用户请求,这种设计使得业务逻辑控制器与Servlet API能够解耦。拦截器链在处理用户请求时,会自动应用如工作流(workflow)、验证(validation)或文件上传等通用功能。当请求到达...
1. **Struts2框架**:Struts2提供了全面的MVC架构支持,包括动作(Action)类、拦截器(Interceptor)、结果(Result)类型等。开发者通过编写Action类来处理用户的请求,并通过配置Struts2的XML配置文件来定义这些...
在本文中,我们将深入探讨如何使用ExtJS框架的Tree组件,结合JSON数据格式以及Struts 2框架,来实现Ajax动态加载树形结构的节点。这是一项常见的需求,特别是在构建可扩展、用户友好的Web应用时,动态加载的树结构...
3. 参数传递:EXT请求中的分页参数或树节点ID可以通过Struts2的拦截器或ActionContext传递给Action,以便进行正确的数据查询和处理。 总结来说,EXT的分页和树形结构功能在构建复杂的Web应用程序中起着至关重要的...
Struts2框架通过拦截器处理HTTP请求,将业务逻辑与视图层分离,提高了代码的可维护性和可扩展性。 5. **Eclipse与Maven集成**:Eclipse通过Maven插件(M2Eclipse)实现了对Maven的支持。用户可以在Eclipse中直接...