当前位置:   article > 正文

Spring+SpringMVC+MP登录案例(含拦截器)_mp的拦截器拦截

mp的拦截器拦截

技术框架

后端:Spring、Spring MVC、Mybatis-Plus

前端:HTML、CSS、Layui、JS、Jquery

 

功能模块技术

1、用户的每一个请求使用了SpringMVC 拦截器技术,没有登录的用户自动重定向到登录页

2、统一请求模式,使用Restful风格对后端发起请求

3、使用druid数据库连接池技术,进行对数据库连接资源进行管理

4、对已登录的用户使用session进行存储用户信息,登录拦截器拦截的规则就是判断session里有无对应的用户信息来进行拦截

 

数据库结构

用户表(tb_user) 

e233074ca8764fefb532020359b83f49.png

 

订单表(tb_orders)

58836aeac2ad4be08df14eb4eb09c8c8.png

 

项目文件结构

d5fc2b69595d4705a99dce497c480dc5.png

 

项目效果

登录页

b1f72aec0f124e138f84bf79b6251557.png

 

首页(展示当前登录用户的订单信息)

c40182173eb14e679835898bc0c3091f.png

 

 

项目核心文件

Tomcat服务器配置文件 (web.xml)

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4. <web-app>
  5. <display-name>Archetype Created Web Application</display-name>
  6. <!-- Tomcat容器上下文配置参数-->
  7. <context-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>classpath:spring.xml</param-value>
  10. </context-param>
  11. <!-- 注册SpringMVC提供的过滤器,解决乱码问题-->
  12. <filter>
  13. <filter-name>CharacterEncodingFilter</filter-name>
  14. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  15. <init-param>
  16. <param-name>encoding</param-name>
  17. <param-value>UTF-8</param-value>
  18. </init-param>
  19. </filter>
  20. <filter-mapping>
  21. <filter-name>CharacterEncodingFilter</filter-name>
  22. <url-pattern>/*</url-pattern>
  23. </filter-mapping>
  24. <!-- 加载SpringMVC容器 -->
  25. <listener>
  26. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  27. </listener>
  28. <!-- 注册前端控制器-->
  29. <servlet>
  30. <servlet-name>DispatcherServlet</servlet-name>
  31. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  32. <init-param>
  33. <param-name>contextConfigLocation</param-name>
  34. <param-value>classpath:springmvc.xml</param-value>
  35. </init-param>
  36. <load-on-startup>1</load-on-startup>
  37. </servlet>
  38. <servlet-mapping>
  39. <servlet-name>DispatcherServlet</servlet-name>
  40. <url-pattern>/</url-pattern>
  41. </servlet-mapping>
  42. <welcome-file-list>
  43. <welcome-file>/page/login.html</welcome-file>
  44. </welcome-file-list>
  45. </web-app>

 

spring.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  7. <!-- 包扫描 -->
  8. <context:component-scan base-package="com"></context:component-scan>
  9. <import resource="springdao.xml"></import>
  10. </beans>

 

springmvc.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 配置Controller扫描 -->
  10. <context:component-scan base-package="com.controller" />
  11. <!-- 配置注解驱动 -->
  12. <mvc:annotation-driven />
  13. <!-- 配置静态资源映射 -->
  14. <mvc:resources location="/static/css/" mapping="/css/**" />
  15. <mvc:resources location="/static/js/" mapping="/js/**" />
  16. <mvc:resources location="/static/layui/" mapping="/layui/**" />
  17. <mvc:resources location="/static/layer/" mapping="/layer/**" />
  18. <!-- Servlet默认处理器-->
  19. <mvc:default-servlet-handler></mvc:default-servlet-handler>
  20. <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>
  21. <!-- 配置拦截器 -->
  22. <mvc:interceptors>
  23. <mvc:interceptor>
  24. <mvc:mapping path="/**" />
  25. <!-- 配置不拦截请求的地址 -->
  26. <mvc:exclude-mapping path="/page/login.html" />
  27. <mvc:exclude-mapping path="/css/**" />
  28. <mvc:exclude-mapping path="/" />
  29. <mvc:exclude-mapping path="/js/**" />
  30. <mvc:exclude-mapping path="/layui/**" />
  31. <mvc:exclude-mapping path="/layer/**" />
  32. <mvc:exclude-mapping path="/login" />
  33. <bean class="com.inteceptor.LoginInterceptor" />
  34. </mvc:interceptor>
  35. </mvc:interceptors>
  36. </beans>

springdao.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  7. <!-- 加载数据库配置文件 -->
  8. <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
  9. <!-- 创建Druid数据库连接池-->
  10. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  11. <property name="driverClassName" value="${db.driver}"></property>
  12. <property name="url" value="${db.url}"></property>
  13. <property name="username" value="${db.username}"></property>
  14. <property name="password" value="${db.password}"></property>
  15. </bean>
  16. <!-- 创建sqlsessionFactory的Bean 工厂 -->
  17. <!-- 这里使用的是 mybatis-plus 创建的MybatisSqlSessionFactoryBean-->
  18. <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
  19. <!-- 设置数据源 -->
  20. <property name="dataSource" ref="dataSource"></property>
  21. <!--设置mybaits的配置文件 这里有两用设置方法 这里是方法一 使用mybatis.xml 的配置文件设置 -->
  22. <property name="configLocation" value="classpath:mybatis.xml"></property>
  23. </bean>
  24. <!--mapper scan-->
  25. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  26. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
  27. <property name="basePackage" value="com.mapper"></property>
  28. </bean>
  29. </beans>

 

mybatis.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <setting name="logImpl" value="stdout_logging" />
  8. <setting name="mapUnderscoreToCamelCase" value="true"/>
  9. </settings>
  10. </configuration>

 

db.properties文件(这里的数据库配置信息需要改成你自己的,比如密码和驱动)

  1. db.driver=com.mysql.cj.jdbc.Driver
  2. db.url=jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8&allowMultiQueries=true
  3. db.username=root
  4. db.password=123456

 

登录拦截器(LoginInterceptor)

  1. package com.inteceptor;
  2. import org.springframework.web.servlet.HandlerInterceptor;
  3. import org.springframework.web.servlet.ModelAndView;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. public class LoginInterceptor implements HandlerInterceptor {
  7. @Override
  8. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  9. //获取Session
  10. Object user = request.getSession().getAttribute("user");
  11. System.out.println("执行拦截器");
  12. System.out.println(user);
  13. //检查用户是否登录
  14. if (user != null){
  15. //用户已经登录就直接放行
  16. return true;
  17. }else {
  18. //没有登录,就重定向到登录页
  19. response.sendRedirect("/page/login.html");
  20. }
  21. return false;
  22. }
  23. @Override
  24. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  25. }
  26. @Override
  27. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  28. }
  29. }

 

LoginController控制器

  1. package com.controller;
  2. import com.model.entity.R;
  3. import com.model.entity.User;
  4. import com.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import java.io.IOException;
  10. @RestController
  11. public class LoginController {
  12. @Autowired
  13. private UserService userService;
  14. @PostMapping("/login")
  15. public R login(@RequestBody User user, HttpServletRequest request){
  16. User one = userService.findByPwd(user);
  17. if (one != null){
  18. request.getSession().setAttribute("user",one);
  19. return R.ok("登录成功");
  20. }
  21. return R.fail("账号或密码错误");
  22. }
  23. @GetMapping("/logout")
  24. public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
  25. request.getSession().removeAttribute("user");
  26. response.sendRedirect("/page/login.html");
  27. }
  28. }

最后,无偿给大家整个项目文件,看评论区

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/740399
推荐阅读
相关标签
  

闽ICP备14008679号