当前位置: 首页 > news >正文

springmvc权限拦截器

配置文件spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"    
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"    
    xmlns:context="http://www.springframework.org/schema/context"    
    xmlns:mvc="http://www.springframework.org/schema/mvc"    
    xsi:schemaLocation="     
           http://www.springframework.org/schema/beans     
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
           http://www.springframework.org/schema/context     
           http://www.springframework.org/schema/context/spring-context-3.0.xsd    
           http://www.springframework.org/schema/mvc     
           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
    <!-- 注解扫描包 -->
    <context:component-scan base-package="com.web.controller" />  
	      
    <!-- 开启注解 -->
    <mvc:annotation-driven/>
    

 	<mvc:view-controller path="/" view-name="redirect:/user/logUI" /> 
<!-- 	<mvc:view-controller path="/" view-name="redirect:/home/index" /> -->
    <!-- 静态资源访问 -->
    <mvc:resources location="/FlatUI/" mapping="/FlatUI/**"/>
    <mvc:resources location="/PAS_V1/" mapping="/FlatUI/**"/>
    <mvc:resources location="/img/" mapping="/img/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/script/" mapping="/script/**"/>
    <mvc:resources location="/style/" mapping="/style/**"/>
   
    	
    <!-- ViewResolver 视图解析器 --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/> 
        <property name="suffix" value=".jsp"/> 
    </bean>
    <!-- 上传文件 -->
     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
          <property name="defaultEncoding"  value="UTF-8"/> 
          <property name="maxUploadSize"    value="1048576000"/> 
          <property name="maxInMemorySize"  value="40960"/> 
    </bean>    
     
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <bean class="com.web.controller.util.CommonInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
	<!-- json转换器 -->
	<!--<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
		<property name="supportedMediaTypes" value="application/json" />
	</bean> -->

     
</beans>

 

拦截器源码

package com.web.controller.util;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.web.controller.entity.User;

public class CommonInterceptor implements HandlerInterceptor {
	private Log log = LogFactory.getLog(this.getClass());
	@Override
	public void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {
		log.info("==============执行顺序: 2、postHandle================");   
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		log.info("==============执行顺序: 1、preHandle================");   
        String requestUri = request.getRequestURI();  
        String contextPath = request.getContextPath();  
        String url = requestUri.substring(contextPath.length());  
        
        log.info("requestUri:"+requestUri);    
        log.info("contextPath:"+contextPath);    
        log.info("url:"+url);    
        //System.out.println(">>>: " + url);
        // 判断路径是登出还是登录验证,是这两者之一的话执行Controller中定义的方法
        if(url.startsWith("/user/logUI") || url.endsWith("/user/logout")) {
            return true;
        }
        
        // 进入登录页面,判断session中是否有key,有的话重定向到首页,否则进入登录界面
        if(url.startsWith("/user/login/")) {        	
            if(request.getSession() != null && request.getSession().getAttribute("usersession") != null) {
            	return true;  
            } 
            else {   
            	response.sendRedirect("/portal/user/logUI");
            	return false;
            }
        }   
        return true;
	}
}

 

usercontroller中的login代码

下面对用户名和密码是否为空的判断非常重要, 如果是用户已登录状态, 会造成空指针异常

@RequestMapping("/login")
	public String login(String loginName, String password, HttpSession session,HttpServletRequest request){
		//session.invalidate();
		User user = null;
		if(loginName!=null&&password!=null){
		    user = userService.findByLoginNameAndPassword(loginName, password);}
		
		if(user == null){
			request.setAttribute("loginError", "用户名或者密码错误");			
			return "/userController/loginUI";
		}
		else{
			session.setAttribute("usersession", user);
		}
		return "/homeController/index";
	}

 

转载于:https://www.cnblogs.com/wujixing/p/5910062.html

相关文章:

  • 使用PowerShell 监控运行时间和连接情况
  • leetcode70
  • Linux相关免费软件下载链接地址
  • Python   Pexpect
  • 前端组件化Polymer入门教程(3)——快速入门
  • 仿天猫超市收藏抛物线动画工具库
  • jq的所有事件
  • iOS移动开发周报-第22期
  • Makefile-入门与进阶【转】
  • PHP 合并数组 追加数组例子
  • django文件上传下载
  • 【228】◀▶ Excel 函数说明?
  • lvm 动态扩展
  • 开启总结之路
  • ios 缺少合规证明
  • [译] React v16.8: 含有Hooks的版本
  • 10个最佳ES6特性 ES7与ES8的特性
  • CEF与代理
  • Codepen 每日精选(2018-3-25)
  • Django 博客开发教程 16 - 统计文章阅读量
  • docker python 配置
  • JAVA SE 6 GC调优笔记
  • Laravel 菜鸟晋级之路
  • LeetCode29.两数相除 JavaScript
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue2.0 实现互斥
  • 第十八天-企业应用架构模式-基本模式
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 前端性能优化--懒加载和预加载
  • 如何在 Tornado 中实现 Middleware
  • 什么软件可以剪辑音乐?
  • 为什么要用IPython/Jupyter?
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Java数据解析之JSON
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​linux启动进程的方式
  • #define,static,const,三种常量的区别
  • #Linux(帮助手册)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1)虚拟机的安装与使用,linux系统安装
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ros//EnvironmentVariables)ros环境变量
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)c++ std::pair 与 std::make
  • (转)大型网站架构演变和知识体系
  • (转)关于多人操作数据的处理策略
  • .java 9 找不到符号_java找不到符号
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @SentinelResource详解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)