package org.gzcgxt.oa.domain;
import lombok.Data;
@Data
public class User {
private Integer id;
private String name;
private String pwd;
}
package org.gzcgxt.oa.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class HttpContext {
/**
* 获取请求对象
* <p>Title: getRequest</p>
* <p>Description: </p>
* @return
*/
public static HttpServletRequest getRequest()
{
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
return attr.getRequest();
}
/**
* 获取响应对象
* <p>Title: getResponse</p>
* <p>Description: </p>
* @return
*/
public static HttpServletResponse getResponse()
{
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
return attr.getResponse();
}
}
package org.gzcgxt.oa.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.gzcgxt.oa.domain.User;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class UserContext {
private static final String USER_IN_STRING = "user_in_session";
/**
* 获取session对象
* <p>Title: getSession</p>
* <p>Description: </p>
* @return
*/
public static HttpSession getSession() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
return request.getSession();
}
/**
* 设置session对象
* <p>Title: setSession</p>
* <p>Description: </p>
* @param user
*/
public static void setSession(User user) {
HttpSession session = UserContext.getSession();
//如果没有传递user 则注销用户
if (user == null) {
session.invalidate();
} else {
//设置session对象
session.setAttribute(USER_IN_STRING, user);
}
}
/**
* 获取登录用户
* <p>Title: getUser</p>
* <p>Description: </p>
* @return
*/
public static User getUser() {
return (User) UserContext.getSession().getAttribute(USER_IN_STRING);
}
}
package org.gzcgxt.oa;
import java.io.IOException;
import org.gzcgxt.oa.domain.User;
import org.gzcgxt.oa.util.HttpContext;
import org.gzcgxt.oa.util.UserContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping("/login")
@SessionAttributes(value="msg")
public class LoginController {
@RequestMapping("/index")
public String index(Model m)
{
return "login/index";
}
@RequestMapping("/checking")
public String checking(@RequestParam("name")String name,@RequestParam("pwd")String pwd,RedirectAttributes ra)
{
System.out.println(name);
System.out.println(pwd);
if(name.equals("admin") && pwd.equals("123456")){
User u=new User();
u.setName(name);
u.setPwd(pwd);
u.setId(110);
UserContext.setSession(u);
return "redirect:/manager/index";
}
ra.addFlashAttribute("msg","用户名或密码错误");
return "redirect:/login/index";
}
@RequestMapping("/quit")
public String quit()
{
UserContext.setSession(null);
return "redirect:/login/index";
}
}
package org.gzcgxt.oa;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/manager")
public class ManagerController {
@RequestMapping("/index")
public String index(Model m)
{
return "index";
}
}
package org.gzcgxt.oa.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gzcgxt.oa.domain.User;
import org.gzcgxt.oa.util.UserContext;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* 登录拦截器
* <p>Title: LoginInterceptor</p>
* <p>Description: </p>
* <p>Company: www.baidu.com</p>
* @author 刘诗华 微信:15390725037
* @date 2019-7-17上午10:13:24
* @version 1.0
*/
public class LoginInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行Handler方法前");
User user = UserContext.getUser();
if(user!=null)
{
return true;
}
response.sendRedirect("/login/index");
return false;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("ModelAndView返回前");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("执行Handler结束");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--@RequestMapping标签MVC注解驱动 -->
<mvc:annotation-driven />
<!--spring组件扫描哪些包 IOC组件扫描器 -->
<context:component-scan base-package="com.gzcgxt.erp" />
<context:component-scan base-package="org.gzcgxt.oa" />
<!-- 配置静态资源文件 原理:将SpringMVC上下文环境中定义一个DefaultServletHttpRequestHandler,对所有前端控制器的请求进行过滤筛选
如果发现当前的请求没有经过映射器,则就把此请求重新交还给Tomcat的默认servlet来处理解析 -->
<mvc:default-servlet-handler />
<!--配置视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 登录拦截器配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login/index"/>
<mvc:exclude-mapping path="/login/checking"/>
<bean id="loginInterceptor" class="org.gzcgxt.oa.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>