SpringBoot拦截器

SpringBoot拦截器

创建数据库
在这里插入图片描述
Entity

package com.example.fuxi.Entity;

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Mapper

package com.example.fuxi.Mapper;

import com.example.fuxi.Entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {
    User Sel(int id);

    User login(String username,String password);

    int register(User user);
}

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.fuxi.Mapper.UserMapper">

    <resultMap id="ClassesResult" type="com.example.fuxi.Entity.User">
        <result property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>

    </resultMap>
    <select id="Sel" resultType="com.example.fuxi.Entity.User">
    select * from user where id = #{id}
    </select>

    <select id="login" resultType="com.example.fuxi.Entity.User">
    SELECT * FROM user where username = #{param1} and password = #{param2}
    </select>

    <insert id="register" parameterType="com.example.fuxi.Entity.User">
        INSERT INTO user (username, password) VALUES (#{username}, #{password})
    </insert>
</mapper>

Service

package com.example.fuxi.Service;

import com.example.fuxi.Entity.User;



public interface UserService {
    User Sel(int id);

    User login(String username,String password);

    int register(User user);
}

ServiceImpl

package com.example.fuxi.Service.ServiceImpl;

import com.example.fuxi.Entity.User;
import com.example.fuxi.Mapper.UserMapper;
import com.example.fuxi.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
@Autowired
    private UserMapper userMapper;
@Override
public User Sel(int id){
    return userMapper.Sel(id);
}

    public User login(String username, String password) {
        return userMapper.login(username,password);
    }

    public int register(User user) {
        return userMapper.register(user);
    }

}

Controller

package com.example.fuxi.Controller;

import com.example.fuxi.Entity.User;

import com.example.fuxi.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/user")
public class UserController {
  @Autowired
  private UserService userService;


    //跳转首页(登录页)
    @RequestMapping("/toIndex")
    public String show(){
        return "index";
    }
    @RequestMapping("/toIndexs")
    public String showd(){
        return "toIndexs";
    }

    //登录操作
    @RequestMapping("/loginUser")
    public String login(User user, HttpServletRequest request) {
        String username = user.getUsername();
        String password = user.getPassword();
        User u1 = userService.login(username, password);
        if (u1 == null) {
            return "redirect:/user/toIndexs";
        } else {
            request.getSession().setAttribute("session_user", user);//登录成功后将用户放入session中,用于拦截
//            return "登录成功";
            return "redirect:/student/index";
        }
    }
    //跳转注册页
    @RequestMapping("/toRegister")
    public String toRegister(){
        return "register";
    }
    //注册操作
    @RequestMapping("/register")
    public String register(User user){
        int su = userService.register(user);
        if(su==0){
            System.out.println("----");
        }
        return "welcome";
    }

    //测试未登陆拦截页面
    @RequestMapping("/welcome")
    public String welcome(){
        return "welcome";
    }

    //退出登录
    @RequestMapping("/outUser")
    public void outUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.getSession().removeAttribute("session_user");
        response.sendRedirect("/user/toIndex");
    }
}

创建一个工具包
在这里插入图片描述
SessionInterceptor

package com.example.fuxi.intercetor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class SessionInterceptor implements WebMvcConfigurer {
/**
     * 自定义拦截器,添加拦截路径和排除拦截路径
     * addPathPatterns():添加需要拦截的路径
     * excludePathPatterns():添加不需要拦截的路径
     */

    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        List list = new ArrayList();
        list.add("/user/toIndex");
        list.add("/user/loginUser");
        list.add("/user/toRegister");
        list.add("/user/register");
        list.add("/user/toIndexs");
        registry.addInterceptor(new UserInterceptor()).addPathPatterns("/**").excludePathPatterns(list);

    }
}

UserInterceptor

package com.example.fuxi.intercetor;

import com.example.fuxi.Entity.User;
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;
import java.io.IOException;

@Component
public class UserInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
        System.out.println("执行到了preHandle方法");
        System.out.println(handler);
        User user = (User) request.getSession().getAttribute("session_user");
        if (user==null){
            response.sendRedirect(request.getContextPath()+"/user/toIndex");//拦截后跳转的方法
            System.out.println("已成功拦截并转发跳转");
            return false;
        }
        System.out.println("合格不需要拦截,放行");
        return true;
    }

//     * 处理请求完成后视图渲染之前的处理操作
//     * 通过ModelAndView参数改变显示的视图,或发往视图的方法


    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        System.out.println("执行了postHandle方法");
    }

//     * 视图渲染之后的操作
//

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
        System.out.println("执行到了afterCompletion方法");
    }
}

拦截后的登录页面 index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style type="text/css">
        body{
            background:url(/imctemp-rainy/11.jpg)  no-repeat center center;
            background-size:cover;
            background-attachment:fixed;
            background-color:#CCCCCC;
            color: aquamarine;
            line-height:50px;
            text-align: center;
        }
    </style>
    <title>Title</title>
</head>
<body>

<form action="/user/loginUser" method="post" >
    请输入用户名进行登录--<input type="text" name="username" id="userName"/><br>
    请你输入密码进行登录--<input type="password" name="password" id="passWord"/><br>
    <input type="submit" value="登录验证"/>
    <a href="/user/toRegister">--注册--</a>
</form>
</body>
</html>

注册缠账号密码页面 register

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/user/register" method="post">
    请输入用户名--<input type="text" name="username" id="userName"/><br>
    请你输入密码--<input type="password" name="password" id="passWord"/><br>
    <input type="submit" value="Register"/>
</form>
</body>
</html>

注册完后的跳转页面 welcome

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
注册或登录后才能看到的界面

<a href="/user/outUser">退出登录</a>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值