SpringMVC-03-拦截器 + 小练习

拦截器与过滤器相似,但拦截器只能拦截控制器类的方法,而过滤器可以拦截所有请求。

自定义拦截器 

                      ------ 实现用户登录后跳转main.jsp页面,否则无法进入main.jsp页面

                 

1、新建类实现HandlerInterceptor

package com.yyl.interceptor;

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

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

public class DemoInterceptor implements HandlerInterceptor{
    // jsp执行完成后执行,记录日志、异常
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		
	}
    // 控制器执行完成后执行
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		// TODO Auto-generated method stub
		
	}
         // 进入控制器前执行,return false,无法进入控制器
	@Override
	public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) throws Exception {
		//System.out.println("执行拦截器");
		String uri = req.getRequestURI();
		System.out.println(uri);
		if(uri.equals("/SpringMVC03-login/Login")){ // 验证是否执行进入登录控制器
			return true;
		}else{                           
			//System.out.println("other");
			Object obj = req.getSession().getAttribute("user");
			if(obj!=null){       // 登录成功则进行跳转
				return true;
			}          
			resp.sendRedirect("/SpringMVC03-login/login.jsp"); // 否则重定向到登录页面
			return false;
		}	
	}

}

2、springmvc.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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc.xsd">
		
		<!-- 扫描注解 -->
		<context:component-scan base-package="com.yyl.controller"></context:component-scan>
		<!-- 注册驱动 -->
		<mvc:annotation-driven></mvc:annotation-driven>
		<!-- 静态资源 -->
		<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
		<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
		<!-- 配置MultipartResolver -->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<!-- <property name="maxUploadSize" value="1024"></property> -->
		</bean>
		<!-- 拦截器  -->
		<mvc:interceptors>
               <!-- 拦截所有 -->
			<bean id="interceptor" class="com.yyl.interceptor.DemoInterceptor"></bean>
<!--  拦截指定的uri请求
      </mvc:interceptors>
		 <mvc:interceptor> 
           <mvc:mapping path="/demo"/>
           <mvc:mapping path="/demo1"/>         
           <mvc:mapping path="/demo2"/>
           <bean class="com.yyl.interceptor.DemoInterceptor"></bean> 
           </mvc:interceptor>
  </mvc:interceptors>  -->
		<!-- 异常 解析器-->
		<bean id="exception" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
			<property name="exceptionMappings" >
				<props>
					<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error.jsp</prop>
				</props>
			</property>
		</bean>
</beans>

3、controller 

import javax.servlet.http.HttpSession;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.yyl.pojo.User;

@Controller
public class DemoController {
	@RequestMapping("Login")
	public String loginMethod(User u,HttpSession session){
		//System.out.println("进入login");
		if(u.getUsername().equals("admin") && u.getPassword().equals("123")){//简单验证
			session.setAttribute("user", u);
			return "/WEB-INF/page/main.jsp";
		}else{
			return "login.jsp";
		}
	}
	
	@RequestMapping("{page}")
	public String main(@PathVariable String page){
		return page;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springboot:是一个基于Java开发的框架,简化了Spring应用的初始化配置和部署过程。它提供了一套开发规范和约定,帮助开发人员快速搭建高效稳定的应用程序。 mybatis-plus:是基于MyBatis的增强工具,提供了一些便捷的CRUD操作方法和代码生成功能,简化了数据库操作的开发工作。它能够轻松集成到SpringBoot应用中,提高开发效率。 springmvc:是一种基于MVC设计模式的Web框架,用于构建Web应用程序。它能够从URL中解析请求参数,并将请求分发给对应的Controller进行处理。SpringMVC提供了一套灵活的配置和注解方式,支持RESTful风格的API开发。 shiro:是一种用于身份验证和授权的框架,可以集成到SpringBoot应用中。它提供了一套简单易用的API,可以处理用户认证、角色授权、会话管理等安全相关的功能。Shiro还支持集成其他认证方式,如LDAP、OAuth等。 redis:是一种开源的内存数据库,采用键值对存储数据。Redis具有高性能、高并发和持久化等特点,常用于缓存、消息队列和分布式锁等场景。在企业级报表后台管理系统中,可以使用Redis来进行缓存数据,提高系统的响应速度和性能。 企业级报表后台管理系统:是一种用于统一管理和生成报表的系统。它通常包括用户权限管理、报表设计、报表生成、数据分析等功能。使用SpringBoot、MyBatis-Plus、SpringMVC、Shiro和Redis等技术,可以快速搭建一个可靠、高效的报表管理系统,满足企业对数据分析和决策的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值