로그인하지 않은 경우 배경 폴더의 페이지에 액세스 할 수 없습니다. 로그인할지 여부를 결정하는 방법? 배경은 주요 디렉토리입니다. 이 디렉토리를 운영하는 모든 사람은 로그 테이블에 작성해야합니다. 구현하는 방법? 인터셉터는 구현 솔루션 중 하나입니다.
(1) com.geloin.spring.interceptor 패키지에 SystemInterceptor를 추가하고 HandlerInterceptor를 상속합니다.
/ ** * * @author geoin */ package com.geloin.spring.interceptor; import java.io.printwriter; import java.util.iterator; java.util.map import; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; org.springframework.stereotype.repository import; org.springframework.web.servlet.handler.handlerinterceptoradapter import; 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 geoin */ @repository public class systeminterceptor 확장 핸들러 interceptorAdapter {@Resource (name = "SystemLoggerService") private systemLoggerService SystemLoggerService; / * * * (비 Javadoc) * * @see * @see * org.spramework.web.servlet.handler.handlerinterceptoradapter#prehandle * (javax.servlet.http.httpervletrequest, * javax.servlet.http.htttp.httpervletresponse, java.lang.lang.lang.lang.lang.lang. @suppresswarnings ({ "rawtypes", "unchecked"}) @override public boolean prehandle (httpservletrequest request, httpservletreponse 응답, 개체 핸들러) 예외 {request.setcharacterencoding ( "utf-8"); 응답 .SetchAracterEncoding ( "UTF-8"); Response.setContentType ( "Text/Html; charset = utf-8"); // 배경 세션 제어 문자열 [] nofilters = new String [] { "login.html", "vericode.html", "index.html", "logout.html"}; 문자열 uri = request.getRequesturi (); if (uri.indexof ( "background")! = -1) {boolean befilter = true; for (string s : nofilters) {if (uri.indexof (s)! = -1) {befilter = false; 부서지다; }} if (befilter) {object obj = requestsession (). getAttribute (constants.logined); if (null == obj) {// printwriter에 로그인하지 않음 = response.getWriter (); StringBuilder Builder = New StringBuilder (); builder.append ( "<script type =/"text/javaScript/"charset =/"utf-8/">"); builder.append ( "alert (/"page 만료, 다시 로그인하십시오/");"); builder.append ( "wind out.print (builder.toString ()); out.close (); 거짓을 반환합니다. } else {// 로그 문자열 추가 OperateContent = constants.operateContent (uri); if (null! = OperateContent) {String url = uri.substring (uri.indexof ( "background")); 문자열 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 (); hasnext ();) {map.entry entry = it.next (); 개체 [] 값 = (Object []) entry.getValue (); for (object obj : values) {if (! dataUtil.isvalueSucced (obj)) {throw new runtimeexception ( "불법 문자가 있습니다 :" + obj); }}} return super.prehandle (요청, 응답, 핸들러); }}(2) Spring이 인터셉터를 관리하도록 Context-dispatcher.xml을 수정하십시오
<mvc : 인터셉터> <bean /> < /mvc : 인터셉터>
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.