SSM(4) —— 登录验证(拦截)

在没有登录之前,访问其他页面都会被拦截,然后跳转到登录页面。

一. 编写拦截器类

package com.server.interceptor;

import com.server.common.Constants;
import com.server.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;

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

public class LoginInterceptor implements HandlerInterceptor {
    @Override    //该方法在控制器方法执行之前执行
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果用户还没有登录,则跳转到登录页面
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute(Constants.SESSION_USER);
        if(user == null){
            response.sendRedirect(request.getContextPath() + "/loginPage");
            return false;
        }
        return true;
    }
}

二. 配置拦截器

在spring-mvc.xml内配置拦截器

    <!-- 配置拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>                     <!-- 拦截所有页面 -->
            <mvc:exclude-mapping path="/"/>              <!-- 排除拦截index页面 -->
            <mvc:exclude-mapping path="/loginPage"/>     <!-- 排除拦截login页面 -->
            <mvc:exclude-mapping path="/login"/>         <!-- 排除拦截login请求 -->
            <mvc:exclude-mapping path="/registerPage"/>  <!-- 排除拦截register页面 -->
            <mvc:exclude-mapping path="/register"/>      <!-- 排除拦截register请求 -->
            <bean class="com.server.interceptor.LoginInterceptor"></bean>  <!-- 添加拦截器类 -->
        </mvc:interceptor>
    </mvc:interceptors>

三. 测试

    @RequestMapping("/managerPage")
    public String goToManager(){
        return "limit/manager";
    }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>首页</title>
    <%    //获取当前工程的路径
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
    %>
    <base href="<%=basePath%>">
</head>
<body>
    <%-- 如果用户还没有登录,显示登录和注册菜单--%>
    <c:if test="${empty sessionScope.sessionUser}">
        <a href="loginPage"><input type="button" value="登录"/></a>
        <a href="registerPage"><input type="button" value="注册"/></a>
    </c:if>
    <%-- 如果用户已经登录,显示欢迎用户和注销--%>
    <c:if test="${not empty sessionScope.sessionUser}">
        欢迎${sessionScope.sessionUser.username}
        <a href="logout"><input type="button" value="退出"/></a>
    </c:if>

    <a href="managerPage"><input type="button" value="管理"/></a>
</body>
</html>

在没有登录之前,点击管理按钮,会跳转到登录页面,当登录完成之后,点击管理按钮,才会跳到管理页面。

四. 最终目录形式

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM (Spring + Spring MVC + MyBatis) 是一个常用的 Java Web 开发框架。在 SSM 中进行登录验证通常需要使用 Spring MVC 的控制器(Controller)来处理客户端的请求,并通过 MyBatis 访问数据库进行验证。以下是一个简单的示例代码来演示如何在 SSM 中进行登录验证: 首先,创建一个登录页面(例如 login.jsp),包含用户名和密码的输入框以及登录按钮。 然后,创建一个 LoginController 类,并在其中定义一个处理登录请求的方法。该方法通过接收请求参数,获取用户名和密码,并调用业务逻辑进行验证。 ```java @Controller public class LoginController { @Autowired private UserService userService; @RequestMapping("/login") public String login(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("username"); String password = request.getParameter("password"); User user = userService.getUserByUsername(username); if (user != null && user.getPassword().equals(password)) { // 登录成功 // 可以设置用户信息到 Session 中或生成 Token 返回给客户端 return "success"; } else { // 登录失败 return "error"; } } } ``` 在上述代码中,UserService 是一个业务逻辑的接口,可以通过依赖注入的方式获取具体实现。getUserByUsername 方法用来根据用户名查询用户信息。 最后,在 Spring 的配置文件中配置相关的组件和视图解析器。 这只是一个简单的示例,实际情况可能会更加复杂,例如需要使用加密算法对密码进行加密、引入权限验证等。希望以上代码能够帮助你进行 SSM登录验证。如果有更多的问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值