package controller;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.log4j.Logger;
public class UserSessionListener implements HttpSessionListener {
private static Logger logger = Logger.getLogger(UserSessionListener.class.getName());
public void sessionCreated(HttpSessionEvent arg0) {
logger.info("sessionCreated.......");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
logger.info("sessionDestroyed.......");
}
}
package controller; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dto.UserDTO; public class UserSessionFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServletResponse = (HttpServletResponse) response; UserDTO userDTO = (UserDTO) httpServletRequest.getSession().getAttribute("userDTO"); if (userDTO == null) { httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/login.jsp"); } else { chain.doFilter(httpServletRequest, httpServletResponse); } } public void init(FilterConfig filterConfig) throws ServletException { } }
package controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import dto.UserDTO;
public class LoginController extends AbstractController {
private static Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
UserDTO userDTO = new UserDTO(userName,password);
if(sessionMap.containsKey(userName)){
HttpSession session = sessionMap.get(userName);
session.invalidate();
}
HttpSession httpSession = request.getSession();
httpSession.setAttribute("userDTO", userDTO);
sessionMap.put(userName, httpSession);
Map<String, List<String>> model = new HashMap<String, List<String>>();
ModelAndView modelAndView = new ModelAndView("index", model);
return modelAndView;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd">
<beans>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<description> 视图解析器index,则URL=/WEB-INF/jsp/index.jsp </description>
<property name="prefix">
<description>视图前缀为/WEB-INF/jsp/</description>
<value>/jsp/</value>
</property>
<property name="suffix">
<description>视图后缀为.JSP</description>
<value>.jsp</value>
</property>
</bean>
<bean id="loginController" class="controller.LoginController" />
<bean id="logoutController" class="controller.LogoutController" />
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">loginController</prop>
<prop key="/logout.do">LogoutController</prop>
</props>
</property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<servlet-name>servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>*.screen</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>controller.UserSessionListener</listener-class>
</listener>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>controller.UserSessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>
</web-app>