《智慧制造生产管理系统》项目Java源代码详解(实体层和拦截器)

目录

三、com.test.domain 实体层

3.1 ClientMessage.java

3.2 Permission.java

3.3 Role.java

3.4 TBusiness.java

3.5 TOrder.java

3.6 TOrderDetail.java

3.7 TProduct.java

3.8 TShoppingcartdetail.java

3.9 TStock.java

3.10 TThreshold.java

3.11 TUserRole.java

3.12 TXinDai.java

3.13 User.java

四、com.test.interceptor 拦截器层

4.1 Authorizatelnterceptor.java

4.2 LoginInterceptor.java


三、com.test.domain 实体层

3.1 ClientMessage.java
3.2 Permission.java
3.3 Role.java
3.4 TBusiness.java
3.5 TOrder.java
3.6 TOrderDetail.java
3.7 TProduct.java
3.8 TShoppingcartdetail.java
3.9 TStock.java
3.10 TThreshold.java
3.11 TUserRole.java
3.12 TXinDai.java
3.13 User.java

四、com.test.interceptor 拦截器层

4.1 Authorizatelnterceptor.java
package com.test.interceptor;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.test.annotation.RequirePermission;
import com.test.domain.Permission;
import com.test.domain.User;

// 权限验证拦截器
public class AuthorizateInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        
        // 1.获取访问接口对应的权限
        HandlerMethod method = (HandlerMethod) handler;
        RequirePermission requirePermission = method.getMethod().getAnnotation(RequirePermission.class);
        if (requirePermission == null) {
            return true; // 如果没有标记 RequirePermission 注解,不进行权限验证,直接通过
        }
        
        // 2.获取用户所有权限(目录+菜单+按钮)
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("loginUser");
        List<Permission> permissionList = user.getPermissionList();
        
        // 3.当前请求方法需要的权限
        String privilege = requirePermission.value();
        
        // 判断权限
        for (Permission permission : permissionList) {
            if (permission.getType() != 1) {
                if (privilege.indexOf(permission.getCode()) > -1) {
                    return true; // 如果用户拥有该权限,允许访问
                }
            }
        }
        
        // 如果用户没有权限,重定向到403页面或其他指定的页面
        response.sendRedirect("/403.jsp"); 
        return false;
    }
    
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        // 请求完成后的处理,通常用于资源清理等
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        // 处理完请求后的处理,通常用于日志记录或修改响应
    }

}

这段代码实现了一个权限验证拦截器,主要作用如下:

1. **权限控制**:拦截器用于对用户访问的请求进行权限控制。在应用中,不是所有用户都具有相同的权限,有些请求可能仅限于特定角色或权限的用户访问。这拦截器的主要作用是检查用户是否具有访问特定请求方法所需的权限。

2. **注解支持**:通过使用注解 `@RequirePermission`,可以为控制器方法指定需要的权限。这使得开发者可以在代码中明确指定每个方法的权限要求,而不是将权限验证逻辑硬编码到每个方法中。

3. **用户权限验证**:拦截器在 `preHandle` 方法中获取当前用户的权限列表,通常是从用户登录会话中获取的。然后,它检查用户是否具有访问当前请求方法所需的权限,这是通过比较方法需要的权限与用户实际拥有的权限来实现的。

4. **重定向到403页面**:如果用户没有所需的权限,拦截器会将请求重定向到403页面,通常是权限不足或拒绝访问的页面。这有助于提供友好的错误信息和用户体验。

总之,这段代码的作用是在用户请求到达控制器方法之前,验证用户是否具有足够的权限来执行该请求,以确保应用的安全性和数据保护。如果用户没有所需的权限,将用户重定向到适当的错误页面或执行其他相应的拒绝访问操作。这有助于实现访问控制和权限管理。

4.2 LoginInterceptor.java
package com.test.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

// 登录拦截器
public class LoginInterceptor implements HandlerInterceptor {
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		
		// 获取用户会话
		HttpSession session = request.getSession();
		
		// 检查会话中是否已经存在登录用户信息
		Object userObj = session.getAttribute("loginUser");
		if (userObj != null) {
			// 用户已登录,允许继续请求
			return true;
		}
		
		// 用户未登录,重定向到登录页面
		response.sendRedirect("index.jsp"); // 重定向到登录页面,可以根据实际情况修改跳转路径
		// 也可以使用以下方式转发到登录页面(注释掉的部分)
		// request.getRequestDispatcher("login.jsp").forward(request, response);
		
		// 返回 false 表示请求终止,不会继续执行后续的处理器或控制器
		return false;
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// 请求完成后的处理,通常用于资源清理等
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception {
		// 处理完请求后的处理,通常用于日志记录或修改响应
	}
}

这段代码实现了一个登录拦截器(Login Interceptor),其主要作用是控制用户访问受限资源或页面的权限,确保只有已登录的用户能够访问受保护的页面。以下是这段代码的作用:

1. **用户登录验证**:拦截器在用户请求到达控制器方法之前执行,它首先检查用户会话(`HttpSession`)中是否已存在登录用户信息。如果会话中存在登录用户信息(`loginUser`),则表示用户已经登录,允许继续请求执行。

2. **未登录用户处理**:如果用户未登录(即会话中不存在登录用户信息),拦截器将执行以下操作:
   - 重定向(`response.sendRedirect("index.jsp")`):将用户重定向到登录页面。这通常是登录页面的路径,但您可以根据实际情况自定义路径。
   - 或者使用请求转发(`request.getRequestDispatcher("login.jsp").forward(request, response)`):将用户请求转发到登录页面。

3. **请求终止**:返回 `false` 表示请求终止,不会继续执行后续的处理器或控制器。这意味着用户必须登录后才能访问受保护的资源,否则请求将被拦截。

总之,这段代码的作用是确保用户必须经过身份验证并登录后才能访问某些页面或资源。如果用户未登录,他们将被重定向到登录页面以完成登录操作。这有助于维护应用程序的安全性和用户访问控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java拦截器是在请求到达目标方法之前或之后,对请求进行拦截、处理或修改的一种机制。在SpringMVC中,可以通过实现HandlerInterceptor接口来编写拦截器。 下面是一个实现拦截器的示例: 1. 创建一个类实现HandlerInterceptor接口,并实现其三个方法:preHandle、postHandle和afterCompletion。 ```java public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行调用(Controller方法调用之前) System.out.println("拦截器 preHandle 方法被调用"); return true; // 只有返回true才会继续向下执行,返回false取消当前请求 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) System.out.println("拦截器 postHandle 方法被调用"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要用于进行资源清理工作) System.out.println("拦截器 afterCompletion 方法被调用"); } } ``` 2. 在SpringMVC的配置文件中配置拦截器。 ```xml <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.example.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors> ``` 上述代码中,将拦截器配置为对所有请求进行拦截。也可以根据需要进行配置。 通过以上配置,拦截器就可以在请求到达Controller之前、之后和整个请求结束后执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值