日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义拦截器用于用户登录的

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义拦截器用于用户登录的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1 2 1、編寫一個類,實現com.opensymphony.xwork2.interceptor.Interceptor 3 2、主要實現public String intercept(ActionInvocation invocation) throws Exception{}方法 4 該方法的返回值就相當于動作的返回值 5 如果調用了String result = invocation.invoke();得到了動作類的返回的值。 6 public String intercept(ActionInvocation invocation) throws Exception { 7 //判斷用戶是否登錄 8 HttpSession session = ServletActionContext.getRequest().getSession(); 9 Object obj = session.getAttribute("user"); 10 if(obj==null){ 11 return "login"; 12 }else{ 13 return invocation.invoke();//調用動作方法 14 } 15 } 16 3、攔截器定義好后,一定要在配置文件中進行注冊: 17 <interceptors> 只是定義攔截器,并沒有起作用 18 <interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"></interceptor> 19 </interceptors> 20 4、配置文件中的動作,要通過 21 <interceptor-ref name="permissionInterceptor"></interceptor-ref>使用該攔截器 22 注意:一旦動作中使用了自定義的攔截器,那么默認的就不起作用了。一般應該采用如下的做法: 23 <interceptor-ref name="defaultStack"></interceptor-ref> 24 <interceptor-ref name="permissionInterceptor"></interceptor-ref> 25 26 多個動作類都要使用的話,可以通過package來進行組合。

?

?struts.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 4 "http://struts.apache.org/dtds/struts-2.1.7.dtd"> 5 <struts> 6 <constant name="struts.devMode" value="true"></constant> 7 <!-- <constant name="struts.ui.theme" value="simple"></constant>--> 8 9 <package name="mydefault" extends="struts-default"> 10 <interceptors> 11 <interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"></interceptor> 12 <interceptor-stack name="mydefaultstack">            <!-- 集總定義的棧內容 --> 13 <interceptor-ref name="defaultStack"></interceptor-ref> 14 <interceptor-ref name="permissionInterceptor"></interceptor-ref> 15 </interceptor-stack> 16 </interceptors> 17 </package> 18 <package name="user" namespace="/user" extends="mydefault"> 19 <action name="login" class="cn.itcast.domain.User" method="login">  <!--用于處理 login.jsp 中提交的表單,登錄的請求--> 20 <result name="success">/</result> 21 <result name="login">/login.jsp</result> 22 </action> 23 <action name="user_*" class="cn.itcast.domain.User" method="{1}"> 24 <interceptor-ref name="mydefaultstack"></interceptor-ref>      <!--攔截器 引用--> 25 <result name="success">/listUsers.jsp</result> 26 <result type="redirectAction" name="delOk">user_listUsers</result> 27 <result name="input">/{1}.jsp</result> 28 <result name="saveOk">/success.jsp</result> 29 <result name="editOk">/success.jsp</result> 30 <result name="editUI">/editUser.jsp</result> 31 <result name="showUser">/showUser.jsp</result> 32 <result name="login">/login.jsp</result>          <!--讓攔截器 找的結果--> 33 </action> 34 <action name="download" class="cn.itcast.domain.User" method="download"> 35 <interceptor-ref name="mydefaultstack"></interceptor-ref>              <!-- 方便使用一個 --> 36 <result type="stream" name="success"> 37 <param name="contentType">application/octet-stream</param> 38 <param name="inputStream">inputStream</param><!-- 輸入是對應的動作類中的那個字段--> 39 <param name="contentDisposition">attachment;filename=${filename}</param><!-- 要下載的文件名--> 40 </result> 41 <result name="login">/login.jsp</result> 42 </action> 43 </package> 44 </struts>

?java文件

1 package cn.itcast.interceptor; 2 3 import javax.servlet.http.HttpSession; 4 5 import org.apache.struts2.ServletActionContext; 6 7 import com.opensymphony.xwork2.ActionInvocation; 8 import com.opensymphony.xwork2.interceptor.Interceptor; 9 10 public class PermissionInterceptor implements Interceptor { 11 12 @Override 13 public void destroy() { 14 15 } 16 17 @Override 18 public void init() { 19 System.out.println("PermissionInterceptor intercept init"); 20 } 21 22 @Override 23 public String intercept(ActionInvocation invocation) throws Exception { 24 System.out.println("PermissionInterceptor intercept "); 25 HttpSession session = ServletActionContext.getRequest().getSession(); 26 Object obj = session.getAttribute("user"); 27 if(obj==null){ 28 return "login";        //返回到 struts.xml中對應的 action下面的result name="longin" 頁面 29 }else{ 30 return invocation.invoke(); 31 } 32 } 33 34 }

?

User.java中的

1 public String login() 2 { 3 User user=service.login(username, password); 4 if(user==null) 5 return LOGIN; 6 else 7 { 8 ServletActionContext.getRequest().getSession().setAttribute("user", user); 9 return SUCCESS; 10 } 11 }

?

總結

以上是生活随笔為你收集整理的自定义拦截器用于用户登录的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。