SSM-拦截器 demo

摘要:整理一个简单的拦截器模板,放上源码

拦截器逻辑
1.拦截想跳过登陆的所有请求
2,不拦截要登陆的请求
3.登陆失败后会跳到自己所在的页面

实现效果

1网站首页

在这里插入图片描述


2登陆界面

在这里插入图片描述


3登陆成功

在这里插入图片描述


4登陆失败.

会弹出登陆失败的信息,然后重新刷新该页面

在这里插入图片描述


2相关的文件有:

com.how2java.interceptor.LoginInterceptor

package com.how2java.interceptor; //当前文件所在目录文件目录

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

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

public class LoginInterceptor implements HandlerInterceptor{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
		
		HttpSession httpSession = request.getSession();
		String url = request.getRequestURI();
		//除了login.jsp是可以公开访问的,其余的URL都进行拦截

        Object object = httpSession.getAttribute("userName");//获取session中userName
        if(object != null){ //判断userName是否为非空,如果为非空,则表示已登录,可继续操作 即将这个请求传给相应的控制器

            return true;
        }else{ //如果为空,则表示未登录,返回登录界面 进行登陆
			request.setAttribute("msg", "你还有没有登录,请先登录!");
			//转发至登录页面
            request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
        }

        return false;

	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		
	}

}

com.how2java.controller.LoginController

package com.how2java.controller;

import javax.servlet.http.HttpSession;
import javax.swing.*;

import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.awt.*;

@Controller
public class LoginController {
	
	@RequestMapping("login.action")
	public String login(String userName,String userPass,HttpSession session) {
		System.out.println(userName);
		System.out.println(userPass);
		System.err.println(1);

		session.setAttribute("userName",userName);

		if(userName.equals("admin") && userPass.equals("123"))
		{
			return "index";
		}

		//如果登陆失败就重新返回登陆页面

		JOptionPane.showMessageDialog(null, "登陆失败", "alert", JOptionPane.ERROR_MESSAGE);
		return "login";
	}



}

springMVC.xml


    <mvc:interceptors>
        <mvc:interceptor >
            <mvc:mapping path="/login2"/>
            <mvc:exclude-mapping path="/login"/>
            <bean class="com.how2java.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

WEB-INF/jsp/index.jsp 登陆成功后的index

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<span>你已成功进入本系统</span>
</body>
</html>

WEB-INF/jsp/login.jsp

<%--
  Created by IntelliJ IDEA.
  User: dell
  Date: 2019/4/21
  Time: 13:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <a href="http://localhost:8080/listCategory"> 测试路径 </a><br>
    <a href="http://localhost:8080/index"> 测试拦截器 </a>
</head>
<body>

</body>
</html>

index.jsp 网站的index

<%--
  Created by IntelliJ IDEA.
  User: dell
  Date: 2019/4/21
  Time: 13:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <a href="http://localhost:8080/listCategory"> 测试路径 </a><br>
    <a href="http://localhost:8080/index"> 测试拦截器 </a>
</head>
<body>

</body>
</html>

源码

https://download.csdn.net/download/qq_26769591/11146992

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章