ログインしていない場合、バックグラウンドフォルダー内のページにアクセスすることはできません。ログインするかどうかを判断する方法は?背景はキーディレクトリです。このディレクトリを操作するすべての人は、ログテーブルに記述する必要があります。それを実装する方法は?インターセプターは、実装ソリューションの1つです。
(1)com.geloin.spring.interceptorパッケージにSystemInterceptorを追加し、HandlerInterceptorを継承するようにします
/ ** * * @author geoin */ package com.geloin.spring.interceptor; java.io.printwriterをインポートします。 java.util.iteratorをインポートします。 java.util.mapをインポートします。 javax.annotation.resourceをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 javax.servlet.http.httpservletResponseをインポートします。 Import org.springframework.stereotype.repository; org.springframework.web.servlet.handler.handlerInterceptorAdapterをインポートします。 com.embest.ruisystem.form.systemloggerformをインポートします。 com.embest.ruisystem.form.systemuserformをインポートします。 com.embest.ruisystem.service.systemloggerserviceをインポートします。 com.embest.ruisystem.util.constantsをインポートします。 com.embest.ruisystem.util.datautilをインポートします。 / ** * * @Author Geoin */ @Repository Public Class SystemEnterceptor拡張HandlerInterceptorAdapter {@Resource(name = "SystemLoggerService")Private SystemLoggerService SystemLoggerService; / * *(nonjavadoc) * * @see * org.springframework.web.servlet.handler.interceptoradapter#prehandle *(javax.servlet.http.httpservletrequest、 * javax.servlet.http.httpservletresponse、java.lang.ob. @suppresswarnings({"rawTypes"、 "unchecked"})@override public boolean prehandle(httpservletrequest request、httpservletresponse応答、オブジェクトハンドラー){request.setcharacterencoding( "utf-8"); Response.setcharacterencoding( "utf-8"); Response.setContentType( "text/html; charset = utf-8"); //バックグラウンドセッション制御string [] 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 = request.getSession()。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(/"ページの有効期限が切れ、再びログイン/");"); Builder.Append( "window.top.location.href =/" "); builder.append(constants.basepath); builder.append("/background/index.html/"; </script>"); out.print(builder.toString()); out.close(); falseを返します。 } else {// log文字列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(); 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:インターセプター> <bean /> < /mvc:インターセプター>
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。