同一个账户只能在一个客户端登录

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值