Spring MVC 차단기 세션 제어 상세 정보
(1)com에 있습니다.geloin.spring.interceptor 패키지에 SystemInterceptor를 추가하고 HandlerInterceptor를 계승합니다
/**
*
* @author geloin
*/
package com.geloin.spring.interceptor;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.embest.ruisystem.form.SystemLoggerForm;
import com.embest.ruisystem.form.SystemUserForm;
import com.embest.ruisystem.service.SystemLoggerService;
import com.embest.ruisystem.util.Constants;
import com.embest.ruisystem.util.DataUtil;
/**
*
* @author geloin
*/
@Repository
public class SystemInterceptor extends HandlerInterceptorAdapter {
@Resource(name = "systemLoggerService")
private SystemLoggerService systemLoggerService;
/*
* (non-Javadoc)
*
* @see
* org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle
* (javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse, java.lang.Object)
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// session
String[] noFilters = new String[] { "login.html", "veriCode.html",
"index.html", "logout.html" };
String uri = request.getRequestURI();
if (uri.indexOf("background") != -1) {
boolean beFilter = true;
for (String s : noFilters) {
if (uri.indexOf(s) != -1) {
beFilter = false;
break;
}
}
if (beFilter) {
Object obj = request.getSession().getAttribute(
Constants.LOGINED);
if (null == obj) {
//
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");
builder.append("alert(\" , \");");
builder.append("window.top.location.href=\"");
builder.append(Constants.basePath);
builder.append("/background/index.html\";</script>");
out.print(builder.toString());
out.close();
return false;
} else {
//
String operateContent = Constants.operateContent(uri);
if (null != operateContent) {
String url = uri.substring(uri.indexOf("background"));
String ip = request.getRemoteAddr();
Integer userId = ((SystemUserForm) obj).getId();
SystemLoggerForm form = new SystemLoggerForm();
form.setUserId(userId);
form.setIp(ip);
form.setOperateContent(operateContent);
form.setUrl(url);
this.systemLoggerService.edit(form);
}
}
}
}
Map paramsMap = request.getParameterMap();
for (Iterator<Map.Entry> it = paramsMap.entrySet().iterator(); it
.hasNext();) {
Map.Entry entry = it.next();
Object[] values = (Object[]) entry.getValue();
for (Object obj : values) {
if (!DataUtil.isValueSuccessed(obj)) {
throw new RuntimeException(" :" + obj);
}
}
}
return super.preHandle(request, response, handler);
}
}
(2) context-dispatcher를 수정합니다.xml,spring 관리 차단기
<mvc:interceptors>
<bean class="com.geloin.spring.interceptor.SystemInterceptor" />
</mvc:interceptors>
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.