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>

目录
相关文章
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
4月前
|
JSON 网络架构 数据格式
SpringMVC-REST风格简介及RESTful入门案例
SpringMVC-REST风格简介及RESTful入门案例
35 0
|
5月前
|
存储 安全 前端开发
SpringMVC之综合案例
SpringMVC之综合案例
45 0
|
7月前
|
设计模式 前端开发 JavaScript
【SpringMVC】工作流程及入门案例
【SpringMVC】工作流程及入门案例
24 0
|
5月前
|
JSON 前端开发 Java
学习SpringMvc第二战之【SpringMVC之综合案例】
学习SpringMvc第二战之【SpringMVC之综合案例】
|
1月前
|
前端开发 Java 网络安全
ssh(Spring+Spring mvc+hibernate)简单增删改查案例
ssh(Spring+Spring mvc+hibernate)简单增删改查案例
10 0
|
1月前
|
前端开发 Java
Springmvc入门案例(1)
Springmvc入门案例(1)
7 0
|
6月前
|
JSON 对象存储 数据格式
SpringMvc--综合案例
SpringMvc--综合案例
26 0
|
3月前
|
Java 数据库连接 数据格式
SSM-Spring+SpringMVC+MyBatis整合案例从0到1
SSM-Spring+SpringMVC+MyBatis整合案例从0到1
46 0
|
4月前
|
SQL JSON 前端开发
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
64 0