Struts2 登录拦截器实现
struts.xml中的配置
<!-- 配置登录拦截器 --> <package name="struts-interceptor" extends="struts-default"> <interceptors> <!-- 配置一个自定义登录拦截器 --> <interceptor name="n" class="com.baidu.pengbw.interceptor.LoginInterceptor"></interceptor> <!-- 配置一个拦截器集合,引入自定义的拦截器 --> <interceptor-stack name="dd"> <!-- 先引入系统默认的拦截器的集合 --> <interceptor-ref name="defaultStack" /> <interceptor-ref name="n"/> </interceptor-stack> </interceptors> <!-- 重新设置默认拦截器 --> <default-interceptor-ref name="dd"/> <!-- 全局结果,不再局限于某个具体的action而是对所有action中的跳转都能访问 --> <global-results> <result name="global_login" type="redirect">/web/login.do</result> </global-results> </package>
<!-- 配置登录拦截器 -->
<package name="struts-interceptor" extends="struts-default">
<interceptors>
<!-- 配置一个自定义登录拦截器 -->
<interceptor name="n" class="com.org.shilong.interceptor.LoginInterceptor"></interceptor>
<!-- 配置一个拦截器集合,引入自定义的拦截器 -->
<interceptor-stack name="dd">
<!-- 先引入系统默认的拦截器的集合 -->
<interceptor-ref name="defaultStack" />
<interceptor-ref name="n"/>
</interceptor-stack>
</interceptors>
<!-- 重新设置默认拦截器 -->
<default-interceptor-ref name="dd"/>
<!-- 全局结果,不再局限于某个具体的action而是对所有action中的跳转都能访问 -->
<global-results>
<result name="global_login" type="redirect">/web/login.do</result>
</global-results>
</package>
com.org.shilong.interceptor.LoginInterceptor
public class LoginInterceptor extends MethodFilterInterceptor {
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
Object userInfo = invocation.getInvocationContext().getSession().get("userInfo"); //从session中获取当前登录用户
if(null!=userInfo){
return invocation.invoke();//如果有用户登录 则继续下边的操作
}else{
return "global_login"; //否则 <result name="global_login" type="redirect">/web/login.do</result>
}
}
}
在其他struts.xmlz中包继承 struts-interceptor 则就进行拦截
springmvc拦截器的实现
spring中的配置
<!-- 对项目中的所有类进行扫描以完成Bean创建并进行自动注入。 支持 @Controller、@Service 以及 @Repository 和 @Component --> <mvc:annotation-driven/> <context:component-scan base-package="com.baidu.pengbw.controller" /> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**/*.do"/> //对所有以.do结尾的拦截 <bean class="com.baidu.pengbw.interceptor.LoginIntercepter"></bean> </mvc:interceptor> </mvc:interceptors>
public class LoginIntercepter extends HandlerInterceptorAdapter { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion"); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandler"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String path=request.getServletPath(); if(path.matches(".*/((login)|(logout)|(code)).*")){ return true; }else{ User user=(User) request.getSession().getAttribute("user"); if(null!=user){ return true; }else{ response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; } } } }
相关推荐
1. **整合配置**:整合Struts2和Hibernate需要在Struts的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,以便在Action执行时自动开启和关闭Session。 2. **实体类和映射文件**:为了使用...
最后,"struts2拦截器详解之二:深入理解struts2拦截器机制.txt"和"Struts2自定义拦截器.txt"文件详细阐述了Struts2的拦截器机制。拦截器是Struts2的核心特性之一,它们是围绕Action执行的一系列拦截动作,可以在...
它提供了强大的拦截器机制,可以灵活地扩展和定制应用程序的行为,同时支持多种结果类型和模板技术,如FreeMarker、JSP等,使得视图层的实现更加多样化。 3. Spring:Spring 是一个全面的Java企业级应用开发框架,...
总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。
Struts2提供了更强大的动作类和拦截器机制,可以实现复杂的业务逻辑控制。它整合了多种开源技术,如Freemarker和Tiles,为视图层提供了更多的选择。Struts2还支持国际化和主题,增强了用户体验。 5. **Hibernate**...
struts2_9_拦截器 共32页.pptx struts2_10_转换器 共22页.pptx struts2_11_插件 共51页.pptx struts2_表单校验失败跳input视图问题 共13页.pptx SpringMVC_1_开发环境搭建 共41页.pptx SpringMVC_2_HelloWorld 共19...
在拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。 再者,SpringMVC的入口是servlet,而Struts2是filter,这也导致了二者的...
Struts2是其升级版,设计更灵活,支持更多的插件和拦截器,增强了可扩展性,提供了更丰富的控制结构和更强大的异常处理机制。 【MyBatis】 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射...
Struts2的核心在于Action类,它是业务逻辑的载体,通过Interceptor拦截器进行处理,实现了请求和响应的分离。此外,Struts2支持多种结果类型和视图技术,如JSP、FreeMarker、Velocity等。 **JSF** JSF是Java平台上...
它提供了强大的Action类、拦截器和结果类型等功能,帮助开发者实现业务逻辑和视图的分离。Struts2还支持多种视图技术,如JSP、FreeMarker等,方便开发者构建用户界面。 Spring4是Spring框架的第四个主要版本,它是...
Struts2还提供了丰富的拦截器机制,允许开发者添加自定义的行为,如权限验证、日志记录等,极大地增强了应用程序的功能和可维护性。 **MyBatis** 是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,...
Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...
SpringMVC 的拦截器(Interceptor)允许在请求处理前后执行自定义逻辑,例如登录检查、日志记录、性能监控等。拦截器通过 HandlerInterceptor 接口实现。 九、数据绑定与验证 SpringMVC 提供了自动的数据绑定功能,...
- **org.springframework.beans-3.0.5.RELEASE.jar**:包含用于简化Bean操作的接口和实现,如BeanFactory、BeanWrapper等。 - **org.springframework.context-3.0.5.RELEASE.jar**:构建在beans包基础之上,增强了对...
在对比SpringMVC与Struts2时,可以发现两者在设计思想和实现细节上有所区别。SpringMVC作为新起之秀,在市场使用率上已经超过了Struts2。SpringMVC的控制器是基于方法级别的拦截,而Struts2则是基于类级别的拦截。...
SpringMVC的拦截器用于在请求处理前后进行预处理和后处理: 1. HandlerExecutionChain回顾,了解处理链的概念。 2. HandlerInterceptor接口,定义了preHandle、postHandle和afterCompletion方法。 3. 拦截器执行顺序...
总结来说,Servlet、Struts和SpringMVC都提供了各自的解决方案来防止表单重复提交,主要方法包括使用Session、令牌机制、重定向和拦截器等。开发者可以根据项目需求选择合适的方式来实现,确保应用的稳定性和数据...
1. 性能上:Struts1 > SpringMVC > Struts2,因为Struts2的拦截器链相比SpringMVC更复杂。 2. 开发效率:SpringMVC和Struts2相似,比Struts1更快。 【核心入口类】 SpringMVC的核心入口类是DispatchServlet;Struts...
`day54_struts_拦截器,国际化,重复提交`表明这个部分可能涵盖了Struts2的拦截器机制,它允许开发者在请求处理前后插入自定义逻辑,如身份验证、日志记录等。国际化(i18n)则涉及如何支持多种语言,而防止重复提交...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了控制器层的开发,提供了一系列的拦截器和插件来处理用户请求,进行业务逻辑验证和结果转发。在CRUD操作中,Struts2可以很好地协调...