Spring MVC,拦截器实现session控制

时间:2025-04-16 17:46:53

        本文基于Spring MVC 注解,让Spring跑起来

        未登录,不允许访问background文件夹内的页面,那如何判断是否登录呢?background是关键目录,每个操作该目录的人都需要写在日志表中,如何实现呢?拦截器是实现方案之一。

        (1) 在包中添加SystemInterceptor,并使其继承HandlerInterceptor

/**
 *
 * @author geloin
 * @date 2012-3-27 下午2:29:35
 */
package ;

import ;
import ;
import ;

import ;
import ;
import ;

import ;
import ;

import ;
import ;
import ;
import ;
import ;

/**
 * 
 * @author geloin
 * @date 2012-3-27 下午2:29:35
 */
@Repository
public class SystemInterceptor extends HandlerInterceptorAdapter {

	@Resource(name = "systemLoggerService")
	private SystemLoggerService systemLoggerService;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * #preHandle
	 * (,
	 * , )
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {

		("UTF-8");
		("UTF-8");
		("text/html;charset=UTF-8");

		// 后台session控制
		String[] noFilters = new String[] { "", "",
				"", "" };
		String uri = ();

		if (("background") != -1) {
			boolean beFilter = true;
			for (String s : noFilters) {
				if ((s) != -1) {
					beFilter = false;
					break;
				}
			}
			if (beFilter) {
				Object obj = ().getAttribute(
						);
				if (null == obj) {

					// 未登录
					PrintWriter out = ();
					StringBuilder builder = new StringBuilder();
					("<script type=\"text/javascript\" charset=\"UTF-8\">");
					("alert(\"页面过期,请重新登录\");");
					("=\"");
					();
					("/background/\";</script>");
					(());
					();
					return false;
				} else {
					// 添加日志
					String operateContent = (uri);
					if (null != operateContent) {
						String url = (("background"));
						String ip = ();
						Integer userId = ((SystemUserForm) obj).getId();
						SystemLoggerForm form = new SystemLoggerForm();
						(userId);
						(ip);
						(operateContent);
						(url);
						(form);
					}
				}
			}
		}

		Map paramsMap = ();

		for (Iterator<> it = ().iterator(); it
				.hasNext();) {
			 entry = ();
			Object[] values = (Object[]) ();
			for (Object obj : values) {
				if (!(obj)) {
					throw new RuntimeException("有非法字符:" + obj);
				}
			}
		}

		return (request, response, handler);
	}

}

        (2) 修改,让spring管理拦截器

<mvc:interceptors>
	<bean class="" />
</mvc:interceptors>