利用SpringMVC实现简单的用户登陆拦截

1.首先编写一个简单的登录界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
<form action="/springmvc/Authlogin" method="post">
    用户名:
    <input type="text" name="username">
    密码:
    <input type="text" name="password">
    <input type="submit" value="Submit">
</form>

</body>
</html>

表单中填写的内容将发送给Authlogin这个地址

2.编写一个user类,存放登录时提交的数据

public class UserInfo {
    private String username;

    private String password;

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

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

    public String getUsername(){
        return username;
    }

    public String getPassword(){
        return password;
    }
}

3.Authlogin负责对提交的信息进行判断,如果账号密码正确则将user对象存入Session并跳转至success页面,不正确则返回登录界面。

@RequestMapping("/Authlogin")
public ModelAndView Authlogin(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
    request.setCharacterEncoding("utf-8");
    ModelAndView mv = new ModelAndView();
    String username = request.getParameter("username");//取得表单中传递过来的用户名和密码
    System.out.println("username="+username);
    String password = request.getParameter("password");
    System.out.println("password="+password);
    if(username.equals("Admin") && password.equals("123456")){
        UserInfo user=new UserInfo();
        user.setUsername(username);
        user.setPassword(password);
        HttpSession session=request.getSession();
        session.setAttribute("user",user);
        return new ModelAndView("redirect:/success.jsp");
    }else{
        mv.setViewName("login");
        return mv;
    }

}

因为是简单的功能实现,所以正确的账号密码直接写死在代码中,实际业务可以把账号信息存到数据库里,需要的时候再取出来进行比对。

4.编写登录拦截器

用户访问web项目中的任何一个服务时(除了Authlogin),请求都会被拦截,并进行判断。

如果session中存在user信息,说明用户已登录,访问请求将被放行。如果为空,则返回登录界面

public class PrivilegeInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session=request.getSession();
        UserInfo user=(UserInfo) session.getAttribute("user");
        if (user==null){
            System.out.println("已拦截");
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return false;
        }
        return true;
    }
}

5.编写拦截器配置文件

拦截除Authlogin以外的所有请求

<!--配置拦截器-->
<mvc:interceptors>
    <!--配置拦截器,多个拦截器时,顺序执行-->


    <mvc:interceptor>
        <!--要拦截的具体的方法-->
        <mvc:mapping path="/**"/>

        <mvc:exclude-mapping path="/**/Authlogin"/>

        <!--配置拦截器对象-->
        <bean class="interceptor.PrivilegeInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值