添加login拦截器
在lgon拦截器实现除了登录页面,其他页面都验证session是否有name属性,否则跳转到登录页面
spring-mvx.xml
<mvc:interceptors>
<!-- 拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.xwx.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
LoginInterceptor .java
package com.xwx.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoginInterceptor implements HandlerInterceptor {
public static Logger log = Logger.getLogger(HandleInterceptor1.class.getName());
/**
* 在Handle执行前 执行
* return true 继续执行 false不继续执行
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
log.debug("LoginInterceptor ...... preHandle");
String currentUrl = request.getRequestURI();
if(currentUrl.lastIndexOf("login") > 0){
return true;
}
HttpSession session = request.getSession();
if(session.getAttribute("name") == null){
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
return true;
}
/**
* 在modelAndView 执行前 执行
*/
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
log.debug("LoginInterceptor ...... postHandle");
}
/**
* 在 Handle 执行后 执行
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
log.debug("LoginInterceptor ...... afterCompletion");
}
}
登录退出实现
验证帐号密码,如果正确就添加到session。我这里只是简单实现了一个登录例子,只做参考,正式环境需要使用数据库验证等等。
LoginController.java
package com.xwx.controller;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/login")
public class LoginController {
private static Logger log = Logger.getLogger(LoginController.class.getName());
@RequestMapping("/login")
public String login(HttpSession session, String name, String password){
log.debug(name);
log.debug(password);
if(name.equals("admin") && password.equals("123456")){
session.setAttribute("name", name);
log.debug("redirect:/user/index.do");
return "redirect:/user/index.do";
} else {
return "redirect:/login.jsp";
}
}
@RequestMapping("/logout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/login.jsp";
}
}
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>add</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/login/login.do" method="post">
<p>
<label>name: </label> <input type="text" name="name" value="${name }" >
</p>
<p>
<label>password: </label> <input type="password" name="password" value="">
</p>
<p>
<input type="submit" name="" value="提交">
</p>
</form>
</body>
</html>