`
han2000lei
  • 浏览: 275941 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

springMVC+aspectj实现用户登录验证的问题

阅读更多
遇到了因难,求大神帮助
使用springMVC框架实现登录的验证,用户所有的controller都先通过aspectj,验证session中是否存在用户,如果不存在,则抛出一个自定义异常,返回到登录页面
aspectj代码如下:

/**
 * 判断用户是否登录的切面
 * @author HEC
 *
 */
@Component
@Aspect
@Order(-1)
public class LoginInterceptor {

	@Around("JoinPointExpression.loginCheck()")//切点
	public Object loginCheck(ProceedingJoinPoint point) throws LoginException,Throwable{
		Object result = null ;
		//如果是登录请求,直接放通到Controller中
		if("com.whtax.edu.controller.common.LoginController".equals(point.getSignature().getDeclaringTypeName())){
			
				result = point.proceed();
				
		}else{//非登录请求,进行是否登录拦截判断
			
			if( SysContext.getSession().getAttribute("user") == null ){	//判断session中是否有用户

				throw new LoginException("user not login");//自定义异常,使用异常机制来跳转到页面
				
			}else{
				
					result = point.proceed();
			}
		}
		return result ;
	}
}


springMVC-servlet.xml配置全局异常如下:

	<!-- 总错误处理-->
	<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="com.whtax.edu.exception.LoginException">redirect:/login.jsp</prop>
			</props>
		</property>
 	
	 <property name="defaultErrorView">  
		 	<value>error.jsp</value>
		</property>
		<property name="defaultStatusCode">  
		 	<value>500</value>
		</property>	
		<property name="warnLogCategory">  
			<value>WARN</value>
		</property>		
 
		<property name="order" value="1"></property>
	</bean> 


经测试后发现,我无法捕获自定义的LoginException异常,而是捕获的java.lang.reflect.UndeclaredThrowableException异常,这个异常是切面相关的异常, 只要是使用切面,所有throws 子句中声明的任何异常类,由代理实例上的方法调用抛出此异常。 也就是说,我的LoginException异常由这个异常被这个异常代替了,如果在切面中还有其它异常,也会被这个异常代替,无法区分具体的异常。也就实现不了我这个登录验证的功能。急求大神想助。如果这种方式实现不了,求其它方式。谢谢
分享到:
评论

相关推荐

    SpringMVC+hibernate4.3+Spring4.1整合demo

    通过创建一个简单的登录表单,用户输入用户名和密码,Controller接收请求,调用Service进行验证,Service通过DAO层与数据库交互,最后返回结果给前端。整个过程展示了SSH框架整合后的高效协作。 综上所述,SSH框架...

    SpringMVC+spring+Mybatis+Maven整合

    SpringMVC、Spring和Mybatis是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:SpringMVC处理Web层逻辑,Spring提供IoC(控制反转)和AOP(面向切面编程)等核心功能,而Mybatis则专注于数据库操作。...

    SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版).docx

    SpringMVC、Spring和Mybatis是Java开发中常用的三大开源框架,它们的集成可以构建出高效、稳定且灵活的企业级应用。以下将详细介绍在Eclipse普通版中如何配置这三个框架。 1. **导言** - 目的:本指南旨在帮助...

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    基于SpringMVC+Hibernate4的考勤管理系统+.zip 项目环境 系统:Windows7 X64位系统 IDE:Intellij IDEA 14.0 后端技术选型 J D K 版 本:JDK 1.8 数 据 库:Mysql 5.7 WEB容器:Tomcat 7.0 视图框架:SpringMVC 4.3.6....

    spring+springmvc+mybatis 所需jar包

    这是AspectJ的编织器,用于实现面向切面编程(AOP)。在Spring框架中,AOP常用于日志记录、事务管理、权限控制等,它允许我们定义横切关注点并将其与业务逻辑分离。 2. `jackson-databind-2.5.0.jar`: Jackson是...

    SpringMVC+Spring+Mybatis+Mysql框架所需jar包

    - `aspectjweaver-1.6.11.jar`:AspectJ是一个全面的AOP(面向切面编程)框架,用于实现切面和通知,增强Spring AOP的功能。 - `jackson-mapper-asl-1.9.11.jar`:Jackson库用于JSON序列化和反序列化,方便Java...

    springmvc+spring3.1.0+ibatis2.3.4相关jar包

    Spring MVC 提供了处理 HTTP 请求、数据绑定、验证、视图渲染等功能,让开发者可以更专注于业务逻辑的实现。它具有松耦合、可测试性和高度模块化的特点。在 Spring MVC 中,DispatcherServlet 负责请求分发,...

    springmvc+spring4.x+hibernate4.x整合实现对学生信息的增删改查

    在本项目中,我们主要探讨的是如何将Spring MVC、Spring 4.x 和 Hibernate 4.x 框架整合,以实现对学生信息的CRUD(创建、读取、更新和删除)操作。数据库方面,选用的是Microsoft的SQL Server 2005。下面,我们将...

    SpringMVC拦截器实现登录认证

    SpringMVC拦截器是实现登录认证的一种常见方法,它允许开发者在请求被实际处理之前或之后执行特定的逻辑。本文将深入探讨如何利用SpringMVC拦截器来实现这一功能。 首先,了解SpringMVC的核心组件是必要的。...

    springmvc(完整版)

    - 相关依赖,如 Servlet API、JSTL、Jackson 或 Gson(用于 JSON 处理)、AspectJ(AOP 支持)等。 使用这些 JAR 包,开发者可以快速搭建一个完整的 Spring MVC 环境,进行 Web 应用的开发。记得在项目中正确配置 ...

    hibernate4+spring4+springmvc4+freemarkdemo

    - AOP:了解如何创建切面,定义通知,并使用@AspectJ注解实现面向切面编程。 3. **Spring MVC 4**: - 控制器:创建@Controller注解的类,处理HTTP请求并返回ModelAndView或 ResponseEntity。 - 视图解析:配置...

    springMVC4+spring4+mybatis3整合所需jar包

    在"springMVC4+spring4+mybatis3整合所需jar包"中,我们能找到实现这个框架整合所需要的核心库和其他辅助功能的jar包。下面将详细介绍这些jar包的功能和作用。 1. **Spring Framework**: - spring-context:提供...

    springmvc spring hibernate整合Demo

    这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个完整的CRUD(创建、读取、更新、删除)应用。 Spring MVC 是 Spring 框架的一部分,专门用于构建Web应用程序。它...

    SpringMVC和Hibernate整合所需的jar包

    1. **com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar**:这是AspectJ的工具包,AspectJ是一种面向切面编程(AOP)的实现,SpringMVC和Hibernate整合中可能用到AOP进行事务管理。 2. **hibernate3.jar**:这...

    springMVC-jar包

    在"springmvc_lib"这个压缩包中,通常会包含SpringMVC框架本身以及其他相关依赖,例如Spring核心库、AspectJ(用于AOP编程)、Jackson或Gson(用于JSON序列化和反序列化)、Velocity或Thymeleaf(用于视图渲染)等。...

    尚硅谷SpringMVC源码及PPT

    - AspectJ注解驱动:可以结合AOP实现切面编程,如事务管理。 **PPT讲解部分**可能涵盖了以下主题: - SpringMVC概述 - MVC设计模式 - SpringMVC组件详解 - SpringMVC配置 - 请求处理流程 - 自定义拦截器 - 数据绑定...

    springmvc4和hibernate5整合jar包

    SpringMVC是一个基于模型-视图-控制器(MVC)设计模式的Web应用框架,它将业务逻辑、用户界面和控制逻辑分离,提供松耦合的组件结构。而Hibernate5则通过ORM机制,使得Java对象可以直接与数据库中的表进行交互,降低...

    springmvc 的 lib文件压缩包

    这些库文件共同构成了一个完整的 Spring MVC 应用环境,支持基本的 CRUD(创建、读取、更新、删除)、登录验证、下拉框功能的实现。在实际项目中,开发者通常会根据需求选择合适的库,并通过 Maven 或 Gradle 管理...

    springmvc依赖包

    4. **AspectJ**:用于AOP编程,实现切面和通知。 5. **Log4j或Logback**:日志记录框架,用于调试和监控。 6. **JSTL**:JavaServer Pages Standard Tag Library,用于简化JSP页面的开发。 7. **Servlet和JSP相关...

    SpringMVC实现注解式权限验证的实例

    2. **创建权限拦截器**:然后,我们需要创建一个实现`HandlerInterceptor`的类,并在`preHandle`方法中检查注解,判断当前登录用户是否拥有访问该资源的权限。如果用户未登录或者角色不匹配,则重定向到登录页面或...

Global site tag (gtag.js) - Google Analytics