遇到了因难,求大神帮助
使用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异常由这个异常被这个异常代替了,如果在切面中还有其它异常,也会被这个异常代替,无法区分具体的异常。也就实现不了我这个登录验证的功能。急求大神想助。如果这种方式实现不了,求其它方式。谢谢
分享到:
相关推荐
通过创建一个简单的登录表单,用户输入用户名和密码,Controller接收请求,调用Service进行验证,Service通过DAO层与数据库交互,最后返回结果给前端。整个过程展示了SSH框架整合后的高效协作。 综上所述,SSH框架...
SpringMVC、Spring和Mybatis是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:SpringMVC处理Web层逻辑,Spring提供IoC(控制反转)和AOP(面向切面编程)等核心功能,而Mybatis则专注于数据库操作。...
SpringMVC、Spring和Mybatis是Java开发中常用的三大开源框架,它们的集成可以构建出高效、稳定且灵活的企业级应用。以下将详细介绍在Eclipse普通版中如何配置这三个框架。 1. **导言** - 目的:本指南旨在帮助...
基于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....
这是AspectJ的编织器,用于实现面向切面编程(AOP)。在Spring框架中,AOP常用于日志记录、事务管理、权限控制等,它允许我们定义横切关注点并将其与业务逻辑分离。 2. `jackson-databind-2.5.0.jar`: Jackson是...
- `aspectjweaver-1.6.11.jar`:AspectJ是一个全面的AOP(面向切面编程)框架,用于实现切面和通知,增强Spring AOP的功能。 - `jackson-mapper-asl-1.9.11.jar`:Jackson库用于JSON序列化和反序列化,方便Java...
Spring MVC 提供了处理 HTTP 请求、数据绑定、验证、视图渲染等功能,让开发者可以更专注于业务逻辑的实现。它具有松耦合、可测试性和高度模块化的特点。在 Spring MVC 中,DispatcherServlet 负责请求分发,...
在本项目中,我们主要探讨的是如何将Spring MVC、Spring 4.x 和 Hibernate 4.x 框架整合,以实现对学生信息的CRUD(创建、读取、更新和删除)操作。数据库方面,选用的是Microsoft的SQL Server 2005。下面,我们将...
SpringMVC拦截器是实现登录认证的一种常见方法,它允许开发者在请求被实际处理之前或之后执行特定的逻辑。本文将深入探讨如何利用SpringMVC拦截器来实现这一功能。 首先,了解SpringMVC的核心组件是必要的。...
- 相关依赖,如 Servlet API、JSTL、Jackson 或 Gson(用于 JSON 处理)、AspectJ(AOP 支持)等。 使用这些 JAR 包,开发者可以快速搭建一个完整的 Spring MVC 环境,进行 Web 应用的开发。记得在项目中正确配置 ...
- AOP:了解如何创建切面,定义通知,并使用@AspectJ注解实现面向切面编程。 3. **Spring MVC 4**: - 控制器:创建@Controller注解的类,处理HTTP请求并返回ModelAndView或 ResponseEntity。 - 视图解析:配置...
在"springMVC4+spring4+mybatis3整合所需jar包"中,我们能找到实现这个框架整合所需要的核心库和其他辅助功能的jar包。下面将详细介绍这些jar包的功能和作用。 1. **Spring Framework**: - spring-context:提供...
这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个完整的CRUD(创建、读取、更新、删除)应用。 Spring MVC 是 Spring 框架的一部分,专门用于构建Web应用程序。它...
1. **com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar**:这是AspectJ的工具包,AspectJ是一种面向切面编程(AOP)的实现,SpringMVC和Hibernate整合中可能用到AOP进行事务管理。 2. **hibernate3.jar**:这...
在"springmvc_lib"这个压缩包中,通常会包含SpringMVC框架本身以及其他相关依赖,例如Spring核心库、AspectJ(用于AOP编程)、Jackson或Gson(用于JSON序列化和反序列化)、Velocity或Thymeleaf(用于视图渲染)等。...
- AspectJ注解驱动:可以结合AOP实现切面编程,如事务管理。 **PPT讲解部分**可能涵盖了以下主题: - SpringMVC概述 - MVC设计模式 - SpringMVC组件详解 - SpringMVC配置 - 请求处理流程 - 自定义拦截器 - 数据绑定...
SpringMVC是一个基于模型-视图-控制器(MVC)设计模式的Web应用框架,它将业务逻辑、用户界面和控制逻辑分离,提供松耦合的组件结构。而Hibernate5则通过ORM机制,使得Java对象可以直接与数据库中的表进行交互,降低...
这些库文件共同构成了一个完整的 Spring MVC 应用环境,支持基本的 CRUD(创建、读取、更新、删除)、登录验证、下拉框功能的实现。在实际项目中,开发者通常会根据需求选择合适的库,并通过 Maven 或 Gradle 管理...
4. **AspectJ**:用于AOP编程,实现切面和通知。 5. **Log4j或Logback**:日志记录框架,用于调试和监控。 6. **JSTL**:JavaServer Pages Standard Tag Library,用于简化JSP页面的开发。 7. **Servlet和JSP相关...
2. **创建权限拦截器**:然后,我们需要创建一个实现`HandlerInterceptor`的类,并在`preHandle`方法中检查注解,判断当前登录用户是否拥有访问该资源的权限。如果用户未登录或者角色不匹配,则重定向到登录页面或...