`

struts2和springmvc登录拦截器实现

 
阅读更多

   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;
		}
	}

	}
 
}

 

 

     

 

分享到:
评论

相关推荐

    struts2+hibernate整合增删改查加注册登录Demo包含数据库自动建表语句

    1. **整合配置**:整合Struts2和Hibernate需要在Struts的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,以便在Action执行时自动开启和关闭Session。 2. **实体类和映射文件**:为了使用...

    ssm配置及struts文件,拦截器.zip

    最后,"struts2拦截器详解之二:深入理解struts2拦截器机制.txt"和"Struts2自定义拦截器.txt"文件详细阐述了Struts2的拦截器机制。拦截器是Struts2的核心特性之一,它们是围绕Action执行的一系列拦截动作,可以在...

    maven+struts2+spring+mybatis+springMVC

    它提供了强大的拦截器机制,可以灵活地扩展和定制应用程序的行为,同时支持多种结果类型和模板技术,如FreeMarker、JSP等,使得视图层的实现更加多样化。 3. Spring:Spring 是一个全面的Java企业级应用开发框架,...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。

    Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

    Struts2提供了更强大的动作类和拦截器机制,可以实现复杂的业务逻辑控制。它整合了多种开源技术,如Freemarker和Tiles,为视图层提供了更多的选择。Struts2还支持国际化和主题,增强了用户体验。 5. **Hibernate**...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2 SpringMVC等共20多份课件资料.rar

    struts2_9_拦截器 共32页.pptx struts2_10_转换器 共22页.pptx struts2_11_插件 共51页.pptx struts2_表单校验失败跳input视图问题 共13页.pptx SpringMVC_1_开发环境搭建 共41页.pptx SpringMVC_2_HelloWorld 共19...

    简单了解SpringMVC与Struts2的区别

    在拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。 再者,SpringMVC的入口是servlet,而Struts2是filter,这也导致了二者的...

    springmvc-struts

    Struts2是其升级版,设计更灵活,支持更多的插件和拦截器,增强了可扩展性,提供了更丰富的控制结构和更强大的异常处理机制。 【MyBatis】 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射...

    Struts2,JSF,SpringMVC快速入门Demo

    Struts2的核心在于Action类,它是业务逻辑的载体,通过Interceptor拦截器进行处理,实现了请求和响应的分离。此外,Struts2支持多种结果类型和视图技术,如JSP、FreeMarker、Velocity等。 **JSF** JSF是Java平台上...

    struts2,spring4,spring mvc,hibernate4,mybatis的三大框架(三套)

    它提供了强大的Action类、拦截器和结果类型等功能,帮助开发者实现业务逻辑和视图的分离。Struts2还支持多种视图技术,如JSP、FreeMarker等,方便开发者构建用户界面。 Spring4是Spring框架的第四个主要版本,它是...

    某著名培训机构struts2+mybatis+springMVC整合代码

    Struts2还提供了丰富的拦截器机制,允许开发者添加自定义的行为,如权限验证、日志记录等,极大地增强了应用程序的功能和可维护性。 **MyBatis** 是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,...

    Struts2+spring+ibatis三大框架整合实例

    Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...

    SpringMVC PPT_springmvc_

    SpringMVC 的拦截器(Interceptor)允许在请求处理前后执行自定义逻辑,例如登录检查、日志记录、性能监控等。拦截器通过 HandlerInterceptor 接口实现。 九、数据绑定与验证 SpringMVC 提供了自动的数据绑定功能,...

    SpringMVC教程及实现原理

    - **org.springframework.beans-3.0.5.RELEASE.jar**:包含用于简化Bean操作的接口和实现,如BeanFactory、BeanWrapper等。 - **org.springframework.context-3.0.5.RELEASE.jar**:构建在beans包基础之上,增强了对...

    Java SpringMVC 学习路线.pdf

    在对比SpringMVC与Struts2时,可以发现两者在设计思想和实现细节上有所区别。SpringMVC作为新起之秀,在市场使用率上已经超过了Struts2。SpringMVC的控制器是基于方法级别的拦截,而Struts2则是基于类级别的拦截。...

    SpringMVC.docx

    SpringMVC的拦截器用于在请求处理前后进行预处理和后处理: 1. HandlerExecutionChain回顾,了解处理链的概念。 2. HandlerInterceptor接口,定义了preHandle、postHandle和afterCompletion方法。 3. 拦截器执行顺序...

    Servlet、Struts、SpringMVC对于表单重复提交的解决方案

    总结来说,Servlet、Struts和SpringMVC都提供了各自的解决方案来防止表单重复提交,主要方法包括使用Session、令牌机制、重定向和拦截器等。开发者可以根据项目需求选择合适的方式来实现,确保应用的稳定性和数据...

    springmvc+mybatis面试题

    1. 性能上:Struts1 &gt; SpringMVC &gt; Struts2,因为Struts2的拦截器链相比SpringMVC更复杂。 2. 开发效率:SpringMVC和Struts2相似,比Struts1更快。 【核心入口类】 SpringMVC的核心入口类是DispatchServlet;Struts...

    struts2,hibernate,spring,springmvc,mybatis

    `day54_struts_拦截器,国际化,重复提交`表明这个部分可能涵盖了Struts2的拦截器机制,它允许开发者在请求处理前后插入自定义逻辑,如身份验证、日志记录等。国际化(i18n)则涉及如何支持多种语言,而防止重复提交...

    ext3+struts2+hibernate+spring的CRUD+分页

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了控制器层的开发,提供了一系列的拦截器和插件来处理用户请求,进行业务逻辑验证和结果转发。在CRUD操作中,Struts2可以很好地协调...

Global site tag (gtag.js) - Google Analytics