博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM项目整合——10SpringMVC拦截器
阅读量:3958 次
发布时间:2019-05-24

本文共 2304 字,大约阅读时间需要 7 分钟。

SSM项目整合——10SpringMVC拦截器

本节我们利用SpringMVC的拦截器来实现我们的登录功能。
新建
LoginController

@Controllerpublic class LoginController {
@RequestMapping("login") public String login(){
return "items/login"; }}

新建login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    登录      
姓名:
密码:

新建Welcome.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    欢迎您的登录欢迎你的到来

接下来我们的做法就是实现访问localhost:8080/login.do时:

1.如果已经登录,直接让拦截器放行到欢迎界面

2.如果没有登录但是姓名与密码均正确也放行到欢迎界面
3如果没有登录但是姓名与密码有误在回到登录界面(但是我们这里会把该用户注册再次登录即可成功)

上面的功能需要配置拦截器:

新建LoginInterceptor,让其实现HandlerInterceptor接口:

public class LoginInterceptor implements HandlerInterceptor {
@Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
} @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}}

HandlerInterceptor接口三个方法:

1.preHandle:在执行Controller之前执行该方法,如果它返回true则放行执行Controller

2.postHandle:在执行Controller之后未返回视图前执行该方法
3.afterCompletion:在执行Controller之后且返回视图后执行该方法

这里只用到第一个,接下来我们改写preHandle的内容:

String name = httpServletRequest.getParameter("name"); String password = httpServletRequest.getParameter("password"); HttpSession session = httpServletRequest.getSession(); //如果用户存在,且已经登录直接跳到欢迎 if(session.getAttribute("name")!=null){
if(session.getAttribute("name").equals(name)&&session.getAttribute("password").equals(password)){
httpServletRequest.getRequestDispatcher("/WEB-INF/views/items/Welcome.jsp").forward(httpServletRequest,httpServletResponse); return true; } }else{
session.setAttribute("name",name); session.setAttribute("password",password); httpServletRequest.getRequestDispatcher("/WEB-INF/views/items/login.jsp").forward(httpServletRequest,httpServletResponse); }return false;

我们还需配置那些路径可以拦截,下面的内容在springmvc.xml里面:

在这里插入图片描述

转载地址:http://dalzi.baihongyu.com/

你可能感兴趣的文章
软件设计
查看>>
程序编码
查看>>
软件测试
查看>>
软件维护
查看>>
软件项目管理
查看>>
面向过程的分析方法
查看>>
面向数据流的设计方法
查看>>
软件设计基础
查看>>
UML的基本结构
查看>>
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
查看>>
用例图(UseCase Diagram)—UML图(一)
查看>>
类图(Class diagram)—UML图(二)
查看>>
对象图(Object Diagram)—UML图(三)
查看>>
活动图(Activity Diagram)—UML图(四)
查看>>
状态图(Statechart Diagram)—UML图(五)
查看>>
时序图(Sequence Diagram)—UML图(六)
查看>>
构件图(Component Diagram)—UML图(八)
查看>>
部署图(Deployment Diagram)—UML图(九)
查看>>
协作图(Collaboration Diagram)—UML图(七)
查看>>
什么是RUP
查看>>