57SpringMVC - 拦截器案例

简介: 57SpringMVC - 拦截器案例

处理流程

  1. 有一个登录页面,需要写一个Controller访问登录页面
  2. 登录页面有一提交表单的动作。需要在Controller中处理。
    a)判断用户名密码是否正确(在控制台打印)
    b)如果正确,向session中写入用户信息(写入用户名username)
    c)跳转到商品列表
  3. 拦截器。
    a)拦截用户请求,判断用户是否登录(登录请求不能拦截)
    b)如果用户已经登录。放行
    c)如果用户未登录,跳转到登录页面。

编写登录jsp

<%@ 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>
    <form action="${pageContext.request.contextPath }/user/login.action">
      <label>用户名:</label>
      <br>
      <input type="text" name="username">
      <br>
      <label>密码:</label>
      <br>
      <input type="password" name="password">
      <br>
      <input type="submit">
    </form>
  </body>
</html>

用户登陆Controller

@Controller
@RequestMapping("user")
public class UserController {
  /**
   * 跳转到登录页面
   * 
   * @return
   */
  @RequestMapping("toLogin")
  public String toLogin() {
    return "login";
  }
  /**
   * 用户登录
   * 
   * @param username
   * @param password
   * @param session
   * @return
   */
  @RequestMapping("login")
  public String login(String username, String password, HttpSession session) {
    // 校验用户登录
    System.out.println(username);
    System.out.println(password);
    // 把用户名放到session中
    session.setAttribute("username", username);
    return "redirect:/item/itemList.action";
  }
}

编写拦截器

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
  // 从request中获取session
  HttpSession session = request.getSession();
  // 从session中获取username
  Object username = session.getAttribute("username");
  // 判断username是否为null
  if (username != null) {
    // 如果不为空则放行
    return true;
  } else {
    // 如果为空则跳转到登录页面
    response.sendRedirect(request.getContextPath() + "/user/toLogin.action");
  }
  return false;
}

配置拦截器

只拦截商品的url,所以需要修改ItemController,让所有的请求都必须以item开头,如下图:

在springmvc.xml配置拦截器

<mvc:interceptor>
  <!-- 配置商品被拦截器拦截 -->
  <mvc:mapping path="/item/**" />
  <!-- 配置具体的拦截器 -->
  <bean class="cn.itcast.ssm.interceptor.LoginHandlerInterceptor" />
</mvc:interceptor>

目录
相关文章
SpringMVC之拦截器和异常处理器
【1月更文挑战第20天】SpringMVC之拦截器和异常处理器
133 0
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
|
10月前
|
前端开发 Java UED
SpringMVC全局异常处理+拦截器使用+参数校验
通过使用 SpringMVC 的全局异常处理、拦截器和参数校验,可以有效提升 Web 应用程序的安全性、稳定性和用户体验。这些技术的合理应用,不仅可以保证代码的健壮性,还能提高代码的可维护性,为开发高质量的 Web 应用程序提供了坚实的基础。
236 6
|
前端开发 Java Apache
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
166 0
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
SpringMVC入门到实战------3、@RequestMapping注解(超详细基础知识+实际代码案例)
该博客文章详细介绍了SpringMVC中`@RequestMapping`注解的使用方法,包括其功能、位置、value属性、method属性、params属性、headers属性以及支持的路径风格和占位符,并通过实际代码案例展示了如何建立请求与控制器方法之间的映射关系。
SpringMVC入门到实战------3、@RequestMapping注解(超详细基础知识+实际代码案例)
SpringMVC拦截器的介绍,拦截器的基本实现,拦截器链配置
SpringMVC拦截器的介绍,拦截器的基本实现,拦截器链配置
213 2
|
前端开发 Java 应用服务中间件
SpringMvc拦截器和手写模拟SpringMvc工作流程源码详解
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。 M: Model,模型层,指工程中的JavaBean,作用是处理数据。 JavaBean分为两类: 1.实体类Bean:专门存储业务数据的,如Student User等 2.业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问。
199 2