اعتراض صفحات JSP وتحقق مما إذا تم تسجيل الدخول
في الآونة الأخيرة ، استخدمت Struts2 للقيام بمشروع وتحتاج إلى اعتراض JSP للتحقق مما إذا كان قد تم تسجيله ، ولكن سلسلة مرشح Struts2 يمكنها فقط تصفية الإجراءات. في وقت لاحق وجدت أنه في web.xml ، يمكن إضافة مرشح فئة تنفيذ javax.servlet.filter مباشرة إلى مرشح JSP. يرجى الاطلاع على الرمز
فئة تنفيذ مرشح
<span style = "font-size: 18px ؛"> package com.common ؛ استيراد java.io.ioException ؛ استيراد javax.servlet.filter ؛ استيراد javax.servlet.filterchain ؛ استيراد javax.servlet.filterConfig ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.servletrequest ؛ استيراد javax.servlet.servletResponse ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.httpservlet ؛ استيراد javax.servlet.httpservlet ؛ استيراد javax.servlet. javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ يمتد LoginFilter من الفئة العامة HttPservlet Fairments {Private Static Final Long SerialVersionuid = 1L ؛ Override public void dofilter (request servletRequest ، استجابة servletResponse ، سلسلة filterchain) يلقي IoException ، servletexception {httpservletrequest req = (httpservletrequest) طلب ؛ httpservletresponse res = (httpservletresponse) ؛ String path = req.getContextPath () ؛ سلسلة indexPath = req.getScheme ()+": //"+req.getServerName ()+":"+req.getServerPort ()+path+"/pages/login.jsp" ؛ if (req.getRequesturi (). endswith ("login.jsp")) {chain.dofilter (request ، response) ؛ يعود؛ } loginUser = req.getSession (). getAttribute ("<strong> <span style =" color:#ff0000 ؛ "> loginsession </span> </strong>") ؛ if (logInUser == null) {res.SendRedirect (indexPath) ؛ يعود؛ } chain.dofilter (طلب ، استجابة) ؛ } Override public void init (filterConfig arg0) يلقي servleTexception {// todo method method method}} </span> طريقة تسجيل الدخول:
<span style = "font-size: 18px ؛"> public string login () {login login = new login () ؛ //.....check تسجيل معلومات تسجيل الدخول ctx ctx = actionContext.getContext () ؛ الخريطة <string ، object> session = ctx.getSession () ؛ Session.put ("<strong> <span style =" color:#ff0000 ؛ "> loginsession </span> </strong>" ، login) ؛ إرجاع "النجاح" ؛ } </span> web.xml التكوين
<ilipter> <iliter-name> setlog </filter-name> <ilter-class> com.common.loginfilter </filter-class> </filter> <filter mapping> <lipter-name> setlog </filter-name> <Url-patern>/pages/home.jsp </url-pattern <erl-page/* <Url-pattern>/pages/content/*</url-pattern> <url-pattern>/pages/*</url-pattern> <Url-pattern>/pages/vodtask/*</url-patern> </filed-mapping>
لاحظ أنه إذا تم استخدام إطار على الصفحة ، فقد يتسبب ذلك في الجلسة إلى وقت الخروج وتسجيل الخروج إلى صفحة تسجيل الدخول. في هذا الوقت ، يتم عرض صفحة تسجيل الدخول على صفحة فرعية من الإطار. الحل: أضف الكود التالي إلى صفحة تسجيل الدخول.
<span style = "font-size: 18px ؛"> <script language = "javaScript"> if (top! = window) top.location.href = window.location.href ؛ </script> </span>
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!