暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java Web实战 | 拦截器案例:用户登录权限验证

997

在配置文件中如果只定义了一个拦截器,程序首先执行拦截器类中的preHandle()方法。如果preHandle()方法返回false,则中断后续所有代码的执行。如果该方法返回true,程序将继续执行处理器以处理请求。当处理器执行过程中没有出现异常时,会执行拦截器中的postHandle()方法。postHandle()方法执行后会通过相关资源向客户端返回响应,并执行拦截器的afterCompletion()方法;如果处理器执行过程中出现异常,将跳过拦截器中的postHandle()方法,直接由前端控制器渲染异常页面返回响应,最后执行拦截器中的afterCompletion()方法。

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


01

创建实体类

创建一个名为User的实体类,用于封装当前用户的用户名和密码。


02

创建控制器

控制器代码如文件15-1所示。

【文件15-1】MyLoginController.java

如文件15-1所示,在客户端请求登录页面(login.jsp)和主页面(main.jsp)时,请求都需要由前端控制器转发,所以在第12~15行和第31~34行增加两个处理器,分别负责转发访问登录页和访问主页的请求。第16~30行定义了用户登录处理器,当验证过用户名和密码后,将用户信息写入session域,并重定向到main.jsp。第35~40行新增处理器logout(),用来处理用户的注销请求,当用户单击“退出”超链接时,注销session对象并重定向到登录页。


03

创建拦截器

创建一个名为com.example.springmvc.interceptor的包,在该包中创建一个名为LoginInterceptor的拦截器。重写preHandler()方法对请求进行拦截。如果用户未经登录而请求相关资源,则执行拦截。判断用户是否登录的标准是HttpSession对象中是否存储了用户信息。拦截器代码如文件15-2所示。

【文件15-2】LoginInterceptor.java


04

配置拦截器

修改Spring MVC的配置文件,除了配置包扫描、注解驱动、视图解析器外,还要增加拦截器配置,代码如下:


05

编写JSP文件,执行测试

在WEB-INF/jsp文件夹下,创建两个JSP文件,一个登录页login.jsp,一个主页面main.jsp,代码分别如文件15-3,文件15-4所示。

【文件15-3】login.jsp

如文件15-3所示,表单输入域的名字 name 和pwd要与实体类的属性名一致,这样当表单提交时,表单输入域的值,可作为请求参数值自动映射给实体类User的相关属性。

【文件15-4】main.jsp

启动Tomcat服务器,在浏览器的地址栏输入“http://localhost:8080/springmvc/tologin”,填入用户名和密码后,可登录主页,如图15-1所示。

单击“退出”超链接后会返回登录页。此时,将地址栏的地址修改为“http://localhost:8080/springmvc/main”,在没有登录的情况下访问主页,这个请求会被拦截器拦截并将请求转发给login.jsp页面,浏览器显示的结果如图15-2所示。读者还可以自行验证用户名、密码错误情况下的运行结果,此处略。


实例讲解

Java Web程序设计实战

精彩回顾


一文读懂Java Web是什么?

设计一个监听器

JDBC案例:实现图书管理

MVC案例:用户登录验证

开发一个MyBatis

设计一个简单的Spring应用程序

Spring AOP开发

Spring MVC案例:设计一个简单的Web应用


07

参考书籍


↑↑↑点击上方图片查看图书详情↑↑↑


《Java Web程序设计与项目案例(微课视频版)》

ISBN:9787302625698

作者:郭煦

定价:59.90元

扫码优惠购书


内容简介

本书是一本以案例为基础的图书,非常适合具备一定Java基础的读者学习。 通过本书的学习,读者可以实现从Java Web入门级开发到运用Spring、Spring MVC和MyBatis三大框架进阶开发的跨越。

全书分为两部分,共有16章。

第一部分为Java Web开发基础,包括第1~7章。

第1章是概述,主要介绍Java Web开发的常用技术、概念和术语,以及HTTP概述等。 

第2章是JSP,主要介绍JSP基础语法、运行原理和内置对象等。

第3章是Servlet,主要介绍Servlet基础、Servlet配置、Servlet常用接口、会话跟踪技术等。

第4章是EL和JSTL。

第5章是过滤器和监听器,主要介绍过滤器编程接口、监听器编程接口和应用案例。

第6章是JDBC,主要介绍JDBC常用API、JDBC综合案例和数据库连接池等。第7章是Web开发模型,主要介绍JavaBean技术、JSP开发模型、MVC设计模式和应用案例。

第二部分为Java Web开发框架,包括第8~16章。

第8章是MyBatis,主要介绍MyBatis简介及入门程序、MyBatis配置、MyBatis映射与综合案例、MyBatis关联映射、MyBatis缓存与动态SQL等。

第9章是MyBatis注解开发,主要介绍MyBatis基础注解、动态SQL注解和关联查询注解。

第10章是Spring IoC,主要介绍Spring概述、控制反转、Bean实例化、依赖注入、Bean的作用域、Spring的组件装配。

第11章是Spring AOP,主要介绍Spring AOP简介、Spring AOP开发基础、AspectJ AOP开发等。

第12章是Spring 数据库开发,主要介绍JdbcTemplate、JdbcTemplate的常用方法、Spring事务管理(基于XML方式和基于注解方式的事务管理)、Spring整合非关系数据库(Redis和MongoDB)。

第13章是Spring MVC基础,主要介绍Spring MVC简介、Spring MVC工作流程、Spring MVC功能组件、视图解析器等。

第14章是Spring MVC控制器,主要介绍控制器相关注解、请求映射、请求转发与重定向、数据绑定和JSON数据交互。

第15章是Spring MVC高级特性,主要介绍拦截器、异常处理和文件上传与下载。

第16章是SSM框架整合,结合后端项目案例,介绍基于XML方式整合和注解方式整合框架,并提供了Vue.js客户端和微信小程序客户端代码。

附录A~D以数字资源形式展示,分别介绍在Eclipse中配置Maven、MySQL的安装与设置、Vue.js客户端代码和微信小程序客户端代码。







    文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论