本文基于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>