interceptor拦截器实现后台登录拦截

1、配置spring-mvc.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: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.xsd
                            http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!--1、注解驱动-->
    <mvc:annotation-driven/>

    <!--2、静态资源过滤-->
    <mvc:default-servlet-handler/>

    <!--3、扫描包:controller,interceptors-->
    <context:component-scan base-package="com.ku.controller,com.ku.interceptors"/>

    <!--4、视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--5、配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--这里可以添加需要拦截的请求-->
            <mvc:mapping path="/manager/main"/>
            <!-- 
                <mvc:mapping path="/**"/>: /** 表示拦截所有请求,
                <mvc:exclude-mapping path="/client/video"/> :表示不拦截 /client/video请求
            -->
            <!--<mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/client/video"/>-->
            <ref bean="loginIntercept"></ref>
        </mvc:interceptor>
    </mvc:interceptors>

    <mvc:view-controller path="/" view-name="index"></mvc:view-controller>
    <mvc:view-controller path="/manager/main" view-name="manager/main"></mvc:view-controller>
    <mvc:view-controller path="/client/video" view-name="client/video"></mvc:view-controller>
    <mvc:view-controller path="/manager/managerLogin" view-name="manager/managerLogin"></mvc:view-controller>

</beans>

注意点:扫描包要扫描到interceptors

2、编写LoginIntercept.java文件

LoginIntercept类实现HandlerInterceptor接口,并重写其中的方法,在preHandle方法里进行验证是否登录

package com.ku.interceptors;

import com.ku.pojo.Admin;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Component
public class LoginIntercept implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Admin loginAdmin = (Admin) request.getSession().getAttribute("loginAdmin");
        if(loginAdmin != null){
            return true;
        } else {
            response.sendRedirect(request.getContextPath()+"/manager/managerLogin");
            return false;
        }

    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }

}

注意点:@Component注解别忘了

3、编写jsp页面

  1. index.jsp
<%--
  Created by IntelliJ IDEA.
  User: aria
  Date: 2022/4/20
  Time: 8:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>

    <a href="${pageContext.request.contextPath}/client/video">前往视频专区</a><br>
    <a href="${pageContext.request.contextPath}/manager/main">前往后台管理</a>

</body>
</html>

  1. video.jsp
<%--
  Created by IntelliJ IDEA.
  User: aria
  Date: 2022/4/20
  Time: 8:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>视频专区</title>
</head>
<body>
    视频专区
</body>
</html>

  1. main.jsp
<%--
  Created by IntelliJ IDEA.
  User: aria
  Date: 2022/4/20
  Time: 8:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>后台主页</title>
</head>
<body>
    后台主页<br>
    管理员姓名:${sessionScope.loginAdmin.adminName}
</body>
</html>

  1. managerLogin.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: aria
  Date: 2022/4/20
  Time: 9:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>

    <form action="${pageContext.request.contextPath}/manager/login" method="post">
        用户名:<input type="text" name="adminName"><br>
        密 码:<input type="password" name="adminPassword"><br>
        <input type="submit" value="登录">
    </form>
    <c:if test="${msg != null}">
        ${msg}
    </c:if>
</body>
</html>

4、项目结构

项目使用到了MyBatis逆向工程生成mapper和pojo。controller和service这里也不展示了,如果搜到这篇文章那应该这些文件的编写都不是问题
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oneMoe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值