SpringMVC-07-拦截器
1.首先写一个登录页面
$Title$ 登录页面 首页
2.写相应的请求
package com.yyf.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;@Controller@RequestMapping("/user")public class LoginController { @RequestMapping("/main") public String main(){ return "main"; } @RequestMapping("/goLogin") public String GOLogin(){ return "login"; } @RequestMapping("/login") public String login(String username, String password, HttpSession session, Model model){ model.addAttribute ("username",username); session.setAttribute ("userInfo",username); return "main"; } @RequestMapping("/GOOut") public String GOOut(HttpSession session,String username){ session.removeAttribute (username); return "login"; }}
3。编写拦截器及登录和主页界面 同时增加一个注销的功能,移除sessionID
首页 首页
正在登录的用户:${username}
注销
登录 用户名 密码
package com.yyf.config;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession ();// 已经登录的情况下可以放行 if (session.getAttribute ("userInfo")!=null){ return true; }// 登录页面也可以放行 if (request.getRequestURI ().contains ("/goLogin")){ return true; }// 第一次走登录页面也可以放行 if (request.getRequestURI ().contains ("/login")) { return true; } request.getRequestDispatcher ("/WEB-INF/jsp/login.jsp").forward (request,response); return false; }}