亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 在struts2中使用攔截器(interceptor)控制登錄和權限.txt

?? 在jsp servlet中我們通常使用Servlet Filter控制用戶是否登入
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
在jsp servlet中我們通常使用Servlet Filter控制用戶是否登入, 是否有權限轉到某個頁面。在struts2中我們應該會想到他的攔截器(Interceptor), Interceptor在struts2中起著非常重要的作用。 很多struts2中的功能都是使用Interceptor實現的。 

需求:簡單的登入界面,讓用戶輸入用戶名、密碼、記住密碼(remember me)。 如果用戶選中remember me的話, 下次就不需要再登入了(使用cookie實現, 用需要點擊logout取消remeber me功能)。 如果用戶起始輸入的地址不是登入頁面的話,在用戶登入之后需要轉到用戶輸入的起始地址。 

我們先看看LoginInterceptor.java 

Java代碼 
package com.javaeye.dengyin2000.wallet.interceptor;    
   
import java.util.Map;    
   
import javax.servlet.http.Cookie;    
import javax.servlet.http.HttpServletRequest;    
   
import org.apache.commons.lang.StringUtils;    
import org.apache.struts2.StrutsStatics;    
   
import com.javaeye.dengyin2000.wallet.dao.UserDAO;    
import com.javaeye.dengyin2000.wallet.dao.UserNotFoundException;    
import com.javaeye.dengyin2000.wallet.domains.User;    
import com.opensymphony.xwork2.ActionContext;    
import com.opensymphony.xwork2.ActionInvocation;    
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;    
   
public class LoginInterceptor extends AbstractInterceptor {    
    public static final String USER_SESSION_KEY="wallet.session.user";    
    public static final String COOKIE_REMEMBERME_KEY="wallet.cookie.rememberme";    
    public static final String GOING_TO_URL_KEY="GOING_TO";    
        
    private UserDAO userDao;    
   
    @Override   
    public String intercept(ActionInvocation invocation) throws Exception {    
            
        ActionContext actionContext = invocation.getInvocationContext();    
        HttpServletRequest request= (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);    
            
        Map session = actionContext.getSession();    
        if (session != null && session.get(USER_SESSION_KEY) != null){    
            return invocation.invoke();    
        }    
            
        Cookie[] cookies = request.getCookies();    
        if (cookies!=null) {    
            for (Cookie cookie : cookies) {    
                if (COOKIE_REMEMBERME_KEY.equals(cookie.getName())) {    
                    String value = cookie.getValue();    
                    if (StringUtils.isNotBlank(value)) {    
                        String[] split = value.split("==");    
                        String userName = split[0];    
                        String password = split[1];    
                        try {    
                            User user = userDao    
                                    .attemptLogin(userName, password);    
                            session.put(USER_SESSION_KEY, user);    
                        } catch (UserNotFoundException e) {    
                            setGoingToURL(session, invocation);    
                            return "login";    
                        }    
                    } else {    
                        setGoingToURL(session, invocation);    
                        return "login";    
                    }    
                    return invocation.invoke();    
                }    
            }    
        }    
        setGoingToURL(session, invocation);    
        return "login";    
    }    
   
    private void setGoingToURL(Map session, ActionInvocation invocation){    
        String url = "";    
        String namespace = invocation.getProxy().getNamespace();    
        if (StringUtils.isNotBlank(namespace) && !namespace.equals("/")){    
            url = url + namespace;    
        }    
        String actionName = invocation.getProxy().getActionName();    
        if (StringUtils.isNotBlank(actionName)){    
            url = url + "/" + actionName + ".action";    
        }    
        session.put(GOING_TO_URL_KEY, url);    
    }    
        
    public UserDAO getUserDao() {    
        return userDao;    
    }    
   
    public void setUserDao(UserDAO userDao) {    
        this.userDao = userDao;    
    }    
   
}   
package com.javaeye.dengyin2000.wallet.interceptor;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.StrutsStatics;
import com.javaeye.dengyin2000.wallet.dao.UserDAO;
import com.javaeye.dengyin2000.wallet.dao.UserNotFoundException;
import com.javaeye.dengyin2000.wallet.domains.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
public static final String USER_SESSION_KEY="wallet.session.user";
public static final String COOKIE_REMEMBERME_KEY="wallet.cookie.rememberme";
public static final String GOING_TO_URL_KEY="GOING_TO";
private UserDAO userDao;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext actionContext = invocation.getInvocationContext();
HttpServletRequest request= (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
Map session = actionContext.getSession();
if (session != null && session.get(USER_SESSION_KEY) != null){
return invocation.invoke();
}
Cookie[] cookies = request.getCookies();
if (cookies!=null) {
for (Cookie cookie : cookies) {
if (COOKIE_REMEMBERME_KEY.equals(cookie.getName())) {
String value = cookie.getValue();
if (StringUtils.isNotBlank(value)) {
String[] split = value.split("==");
String userName = split[0];
String password = split[1];
try {
User user = userDao
.attemptLogin(userName, password);
session.put(USER_SESSION_KEY, user);
} catch (UserNotFoundException e) {
setGoingToURL(session, invocation);
return "login";
}
} else {
setGoingToURL(session, invocation);
return "login";
}
return invocation.invoke();
}
}
}
setGoingToURL(session, invocation);
return "login";
}
private void setGoingToURL(Map session, ActionInvocation invocation){
String url = "";
String namespace = invocation.getProxy().getNamespace();
if (StringUtils.isNotBlank(namespace) && !namespace.equals("/")){
url = url + namespace;
}
String actionName = invocation.getProxy().getActionName();
if (StringUtils.isNotBlank(actionName)){
url = url + "/" + actionName + ".action";
}
session.put(GOING_TO_URL_KEY, url);
}
public UserDAO getUserDao() {
return userDao;
}
public void setUserDao(UserDAO userDao) {
this.userDao = userDao;
}
}


首先判斷session中有沒有用戶信息, 如果有的話繼續, 如果沒有的話,檢查cookie中有沒有rememberme的值,如果有的話,用==分割, 取得用戶名密碼進行登入。如果沒有這個用戶的話,記錄下request的action地址然后轉到登入頁面。如果驗證有這個用戶,則繼續下面的interceptor。 如果cookie中沒有信息的話,則記錄request的action地址然后轉到登入頁面。 以上就是LoginInterceptor的全部代碼。 

下面我們看看struts.xml 


Java代碼 
<?xml version="1.0" encoding="UTF-8"?>    
   
<!DOCTYPE struts PUBLIC     
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
    "http://struts.apache.org/dtds/struts-2.0.dtd">    
   
<struts>    
    <package name="default" extends="struts-default">    
        <interceptors>    
            <interceptor name="loginInterceptor" class="loginInterceptor"></interceptor>    
            <interceptor-stack name="loginDefaultStack">    
                <interceptor-ref name="loginInterceptor"></interceptor-ref>    
                <interceptor-ref name="defaultStack"></interceptor-ref>    
            </interceptor-stack>    
        </interceptors>    
        <default-interceptor-ref name="loginDefaultStack"></default-interceptor-ref>    
        <global-results>    
            <result name="login" type="redirect">/login.jsp</result>    
        </global-results>         
        <action name="index" class="indexAction">    
            <result>/index.jsp</result>    
        </action>    
        <action name="logout" class="logoutAction"></action>    
            
        <action name="login" class="loginAction" method="login">    
            <result type="redirect">${goingToURL}</result>    
            <result name="input">/login.jsp</result>    
            <interceptor-ref name="defaultStack"></interceptor-ref>    
        </action>    
            
        <action name="register" class="registerAction">    
            <result type="redirect">/login.jsp</result>    
            <result name="input">/register.jsp</result>    
            <interceptor-ref name="defaultStack"></interceptor-ref>    
        </action>    
    </package>    
</struts>   
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor" class="loginInterceptor"></interceptor>
<interceptor-stack name="loginDefaultStack">
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginDefaultStack"></default-interceptor-ref>
<global-results>
<result name="login" type="redirect">/login.jsp</result>
</global-results>
<action name="index" class="indexAction">
<result>/index.jsp</result>
</action>
<action name="logout" class="logoutAction"></action>
<action name="login" class="loginAction" method="login">
<result type="redirect">${goingToURL}</result>
<result name="input">/login.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
<action name="register" class="registerAction">
<result type="redirect">/login.jsp</result>
<result name="input">/register.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>


我們是使用的默認的interceptor stack是loginInterceptor, 如果你需要讓不登入的用戶也能訪問的話,你需要配置你的action使用defaultStack。 我們這里的login, register使用的就是defaultStack。 這里要注意的是success的result是我們用LoginInterceptor設過來的值。 這樣我們就能夠轉到用戶輸入的起始頁面。 下面我們再來看看login.jsp 和 loginAction 


Java代碼 
<%@taglib prefix="s" uri="/struts-tags" %>    
<%@ page language="java" contentType="text/html; charset=UTF-8"   
    pageEncoding="UTF-8"%>    
<html>    
<head>    
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
    <title>Wallet-Login</title>    
</head>    
<body>    
<h2>Login</h2>     
<s:actionmessage/>    
<s:actionerror/>    
<s:form action="login" method="post" validate="false" theme="xhtml">    
<s:textfield name="loginName" label="Username"></s:textfield><br/>    
<s:password name="password" label="Password"></s:password><br/>    
<s:checkbox label="Remember Me" name="rememberMe"></s:checkbox>    
<s:submit value="%{'Login'}"></s:submit>     
</s:form>    
<a href="register.jsp">Register</a>    
</body>    
</html>   
<%@taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wallet-Login</title>
</head>
<body>
<h2>Login</h2>
<s:actionmessage/>
<s:actionerror/>
<s:form action="login" method="post" validate="false" theme="xhtml">
<s:textfield name="loginName" label="Username"></s:textfield><br/>
<s:password name="password" label="Password"></s:password><br/>
<s:checkbox label="Remember Me" name="rememberMe"></s:checkbox>
<s:submit value="%{'Login'}"></s:submit>
</s:form>
<a href="register.jsp">Register</a>
</body>
</html>



Java代碼 
package com.javaeye.dengyin2000.wallet.actions;    
   
import java.util.Map;    
   
import javax.servlet.http.Cookie;    
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    
   
import org.apache.commons.lang.StringUtils;    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片你懂的| 色综合中文综合网| 亚洲色图欧美激情| 欧美丰满少妇xxxxx高潮对白| 国产一区二区三区日韩| 亚洲精品国产无套在线观| 精品人在线二区三区| 91成人看片片| 成人黄色软件下载| 精品一区免费av| 五月婷婷欧美视频| 亚洲欧美日韩中文播放| 久久久久久久久免费| 欧美挠脚心视频网站| 97精品国产露脸对白| 久久福利视频一区二区| 亚洲亚洲人成综合网络| 中文字幕中文字幕在线一区 | 欧美午夜一区二区| 成人av片在线观看| 国产成人啪免费观看软件| 青青草97国产精品免费观看无弹窗版| 国产精品福利在线播放| 久久先锋影音av鲁色资源| 51久久夜色精品国产麻豆| 欧美在线视频日韩| 99精品1区2区| 成人精品gif动图一区| 激情综合色播五月| 免费在线观看视频一区| 亚洲一区二区三区爽爽爽爽爽 | 欧美精品久久天天躁| 一本大道久久a久久精二百| 成人免费观看av| 国产99久久久国产精品潘金| 狠狠狠色丁香婷婷综合激情| 麻豆freexxxx性91精品| 日韩精品91亚洲二区在线观看| 一区二区三区欧美| 成人免费视频在线观看| 国产精品三级电影| 日本一区二区动态图| 国产欧美中文在线| 国产精品嫩草99a| 中文字幕av一区二区三区免费看| 久久无码av三级| 久久久国产精品麻豆| 国产日产欧产精品推荐色 | 中文字幕av一区二区三区高| 中文av一区二区| 亚洲人成精品久久久久久| 亚洲人成网站影音先锋播放| 亚洲黄色av一区| 亚洲v日本v欧美v久久精品| 免费久久精品视频| 国产精品一区一区| 成人亚洲精品久久久久软件| 不卡大黄网站免费看| 欧美性猛交xxxxxxxx| 欧美一级精品大片| 2023国产精品| 国产精品久久久久久久第一福利| 亚洲色大成网站www久久九九| 亚洲精品中文字幕在线观看| 午夜激情久久久| 精品一区二区三区在线观看| 国产成人8x视频一区二区 | 久久久久久久久久美女| 国产精品久久久久久久久快鸭| 亚洲精选视频免费看| 日本vs亚洲vs韩国一区三区二区 | heyzo一本久久综合| 成人av电影免费在线播放| 99麻豆久久久国产精品免费优播| 99久久精品国产麻豆演员表| 国产成人在线免费观看| 色噜噜狠狠成人中文综合| 欧美色视频在线| 欧美人xxxx| 久久综合色婷婷| 中文字幕亚洲精品在线观看| 樱桃视频在线观看一区| 亚洲mv在线观看| 九九国产精品视频| 91麻豆蜜桃一区二区三区| 欧美三级视频在线| 精品剧情v国产在线观看在线| 久久综合九色综合97婷婷女人| 国产精品视频线看| 亚洲成人激情社区| 狠狠色综合日日| 国产揄拍国内精品对白| 在线亚洲+欧美+日本专区| 91精品欧美一区二区三区综合在 | 91在线国产观看| 欧美在线一二三四区| 精品国产一区二区三区四区四| 久久久91精品国产一区二区三区| 久久久91精品国产一区二区精品| 亚洲免费av观看| 精品在线观看视频| 色综合亚洲欧洲| 精品国产一区二区精华| 亚洲人成亚洲人成在线观看图片| 日韩高清一区二区| 色域天天综合网| 久久一日本道色综合| 日韩av电影天堂| 北条麻妃国产九九精品视频| 26uuu另类欧美亚洲曰本| 亚洲另类中文字| 粉嫩aⅴ一区二区三区四区五区| 欧美午夜免费电影| 亚洲欧美一区二区三区国产精品 | 国产一区二区三区黄视频| 欧美丰满少妇xxxbbb| 国产精品久久久久永久免费观看| 精品综合久久久久久8888| 欧美视频在线不卡| 亚洲精品高清在线观看| 国产白丝网站精品污在线入口| 91精品一区二区三区在线观看| 亚洲欧美电影院| 成人免费看黄yyy456| 久久综合国产精品| 日本怡春院一区二区| 91国产免费观看| 中文字幕一区二区不卡| 狠狠色狠狠色合久久伊人| 欧美日韩www| 亚洲精品视频在线| 99精品视频中文字幕| 国产亚洲一区二区三区| 狠狠色丁香婷婷综合久久片| 欧美大片日本大片免费观看| 性做久久久久久免费观看欧美| thepron国产精品| 欧美国产禁国产网站cc| 激情文学综合插| 日韩欧美中文字幕制服| 日韩精品一级二级| 91精品国产综合久久香蕉的特点 | 亚洲精品日韩专区silk| 97久久精品人人做人人爽50路| 国产日韩欧美在线一区| 国产福利不卡视频| 久久久精品黄色| 久久99精品一区二区三区三区| 精品国产网站在线观看| 久久国内精品自在自线400部| 欧美一区二区啪啪| 夜夜揉揉日日人人青青一国产精品| 成人美女视频在线观看| 欧美大片顶级少妇| 国产中文一区二区三区| 久久色视频免费观看| 国产成人啪免费观看软件| 久久色中文字幕| 成人免费视频免费观看| 国产精品午夜在线| 成人开心网精品视频| 国产精品激情偷乱一区二区∴| 99国产精品视频免费观看| 亚洲精品日韩综合观看成人91| 在线观看视频一区二区欧美日韩| 亚洲综合自拍偷拍| 欧美日韩国产免费一区二区 | 日本一区二区不卡视频| 91色婷婷久久久久合中文| 亚洲免费观看高清完整| 欧美日韩精品系列| 久久99最新地址| 久久久久久久久伊人| 在线亚洲精品福利网址导航| 亚洲一区二区三区不卡国产欧美| 欧美电影免费观看高清完整版在线观看 | 色悠悠久久综合| 亚洲成av人片一区二区| 国产午夜精品福利| 91网页版在线| 狠狠狠色丁香婷婷综合久久五月| 久久婷婷国产综合国色天香| 成人a免费在线看| 亚洲国产va精品久久久不卡综合| 欧美日韩高清一区| 国产成人精品免费在线| 国内精品国产成人国产三级粉色| 国产喷白浆一区二区三区| 99riav久久精品riav| 日本亚洲免费观看| 精品久久人人做人人爰| 色婷婷国产精品| 精品一区二区日韩| 综合电影一区二区三区 | 美国毛片一区二区| 午夜国产不卡在线观看视频| 一本大道综合伊人精品热热| 日本不卡免费在线视频| 国产精品久久免费看| 欧美午夜影院一区|