spring mvc拦截器实现用户登录权限验证案例-亚博电竞手机版

本节将通过拦截器来完成一个用户登录权限验证的 web 应用 springmvcdemo07,具体要求如下:只有成功登录的用户才能访问系统的亚博vip888主页面 main.jsp,如果没有成功登录而直接访问亚博vip888主页面,则拦截器将请求拦截,并转发到登录页面 login.jsp。当成功登录的用户在系统亚博vip888主页面中单击“退出”链接时回到登录页面。 具体实现步骤如下:

1)创建应用

创建 web 应用 springmvcdemo07,并将 spring mvc 相关的 jar 包复制到 lib 目录中。

2)创建 pojo 类

在 springmvcdemo07 的 src 目录中创建 pojo 包,并在该包中创建 user 类,具体代码如下:
 public class user {     private string uname;     private string upwd;     //省略setter和getter方法 }

3)创建控制器类

在 springmvcdemo07的 src 目录中创建 controller 包,并在该包中创建控制器类 usercontroller,具体代码如下:
 package controller;  import javax.servlet.http.httpsession; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; import pojo.user;  @controller public class usercontroller {     /**      * 登录页面初始化      */     @requestmapping("/tologin")     public string initlogin() {         return "login";     }      /**      * 处理登录功能      */     @requestmapping("/login")     public string login(user user, model model, httpsession session) {         system.out.println(user.getuname());         if ("zhangsan".equals(user.getuname())                 && "123456".equals(user.getupwd())) {             // 登录成功,将用户信息保存到session对象中             session.setattribute("user", user);             // 重定向到亚博vip888主页面的跳转方法             return "redirect:main";         }         model.addattribute("msg", "用户名或密码错误,请重新登录! ");         return "login";     }      /**      * 跳转到亚博vip888主页面      */     @requestmapping("/main")     public string tomain() {         return "main";     }      /**      * 退出登录      */     @requestmapping("/logout")     public string logout(httpsession session) {         // 清除 session         session.invalidate();         return "login";     } }

4)创建拦截器类

在 springmvcdemo07的 src 目录中创建 interceptor 包,并在该包中创建拦截器类 logininterceptor,具体代码如下:
 package 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 {         // 获取请求的url         string url = request.getrequesturi();         // login.jsp或登录请求放行,不拦截         if (url.indexof("/tologin") >= 0 || url.indexof("/login") >= 0) {             return true;         }         // 获取 session         httpsession session = request.getsession();         object obj = session.getattribute("user");         if (obj != null)             return true;         // 没有登录且不是登录页面,转发到登录页面,并给出提示错误信息         request.setattribute("msg", "还没登录,请先登录!");         request.getrequestdispatcher("/web-inf/jsp/login.jsp").forward(request,                 response);         return false;     }      @override     public void aftercompletion(httpservletrequest arg0,             httpservletresponse arg1, object arg2, exception arg3)             throws exception {         // todo auto-generated method stub     }      @override     public void posthandle(httpservletrequest arg0, httpservletresponse arg1,             object arg2, modelandview arg3) throws exception {         // todo auto-generated method stub     } }

5)配置拦截器

在 web-inf 目录下创建配置文件 springmvc-servlet.xml 和 web.xml。web.xml 的代码和 springmvcdemo07 一样,这里不再赘述。在 springmvc-servlet.xml 文件中配置拦截器 logininterceptor,具体代码如下:
                                                                                                                      

6)创建视图 jsp 页面

在 web-inf 目录下创建文件夹 jsp,并在该文件夹中创建 login.jsp 和 main.jsp。 login.jsp 的代码如下:
 <%@ page language="java" contenttype="text/html; charset=utf-8"     pageencoding="utf-8"%>     insert title here       ${msg }     
用户名:
密码:
main.jsp 的代码如下:
 <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>     insert title here       当前用户:${user.uname }

7)发布并测试应用

首先将 springmvcdemo07 应用发布到 tomcat 服务器并启动 tomcat 服务器,然后通过地址“http://localhost:8080/springmvcdemo07/main”测试应用,运行效果如图 1 所示。 图 1没有登录直接访问亚博vip888主页面的效果 从图 1 可以看出,当用户没有登录而直接访问系统亚博vip888主页面时请求将被登录拦截器拦截,返回到登录页面,并提示信息。如果用户在用户名框中输入“zhangsan”,在密码框中输入“123456”,单击“登录”按钮后浏览器的显示结果如图 2 所示。如果输入的用户名或密码错误,浏览器的显示结果如图 3 所示。 图 2成功登录的效果 图 3用户名或密码错误 当单击图 2 中的“退出”链接后,系统将从亚博vip888主页面返回到登录页面。
展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图