大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 struts2攔截器配置和使用

struts2攔截器配置和使用

更新時間:2021-07-30 16:18:39 來源:動力節點 瀏覽1058次

攔截器是Struts2最強大的特性之一,它是一種可以讓用戶在Action執行之前和Result執行之后進行一些功能處理的機制。

說到攔截器interceptor,就會想到過濾器filter

過濾器filter是對所有的東西進行過濾,包括.css,.js,.jpg等這些內容都過濾;

攔截器interceptor是對action進行攔截,是屬于struts的工具。

這里以實現登錄驗證為例來進行攔截器的使用

首先創建一個Login類:

package com.dao;

public class Login {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

然后配置struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="myin" class="com.util.Interceptor"></interceptor>
            <interceptor name="login" class="com.util.SuccessInterceptor"></interceptor> <!--具體的name和class必須寫,指定這個攔截器的位置和名稱方便下面調用-->
            <interceptor-stack name="newStack">
                <interceptor-ref name="login"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 這個是系統默認的Stack,如果你只調用上面自己寫的Stack,則會只執行login攔截器的方法,很多地方會發生錯誤接收不到值-->
            </interceptor-stack>
        </interceptors>
        
        <global-results>    <!--這個是公共類,所有的action都會走這個results -->
            <result name="nologin">/Login/login.jsp</result>
        </global-results>
        <action name="Login_login" class="com.controller.LoginAction" method="login">
            <result>/Login/login.jsp</result>
        </action>
        <action name="Login_success" class="com.controller.LoginAction" method="success">
            <result>/Login/success.jsp</result>
        </action>
        <action name="*_*" class="com.controller.{1}Action" method="{2}">
            <interceptor-ref name="newStack"></interceptor-ref> 
            
            <result>
                {1}/{2}.jsp
            </result>
        </action>
    </package>

</struts>

配置LoginAction.java:

package com.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.tomcat.jni.User;

import com.dao.Login;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<Login>,SessionAware {
    private Map<String,Object> session ;
    private Login user = new Login();
    
    public String login(){
        return SUCCESS;
    }
    public String success(){
        java.util.List<String> uid = new ArrayList<String>();
        uid.add("admin");
        uid.add("zhangsan");
        uid.add("lisi");
        uid.add("wangwu");
        ActionContext context=ActionContext.getContext();
        session=context.getSession();
        Object obj = session.get("user");
        if(obj==null){
            
            if(uid.contains(user.getUsername())){
                session.put("user", user.getUsername());
                return SUCCESS;
            }
            else{
                return "nologin";
            }
            
        }
        else{
            return SUCCESS;
        }
        
        
    }
    @Override
    public void setSession(Map<String, Object> arg0) {
        // TODO 自動生成的方法存根
        this.session=arg0;
        
    }
    @Override
    public Login getModel() {
        
        return user;
    }
}

配置SuccessInterceptor.java:

package com.util;

import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;


public class SuccessInterceptor extends AbstractInterceptor {
    private Map<String,Object> session ;
    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        System.out.println("asdasdas");
        session= ActionContext.getContext().getSession();
        if(session.get("user")==null){
            return "nologin";
        }
        return arg0.invoke();
    }

}

實現login.jsp頁面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Login</h2>
<form action="Login_success">
username:<input type="text" name="username" ><br>
password:<input type="text" name="password" ><br>
<input type="submit" value="go" >
</form>
</body>
</html>

實現success.jsp頁面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>success</h2>
username:<s:property value="#session.user" /><br>
password:<s:property value="password" />

<s:debug></s:debug>
</body>
</html>

攔截器的配置

1.SuccessInterceptor.java文件為攔截器的配置,繼承自AbstractInterceptor接口。

2.配置struts.xml文件

<package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="myin" class="com.util.Interceptor"></interceptor>
            <interceptor name="login" class="com.util.SuccessInterceptor"></interceptor>//自己定義的一個名為login的攔截器,調用自com.util.SuccessInterceptor
            <interceptor-stack name="newStack">
                <interceptor-ref name="login"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>//自定義一個名為newStack的攔截器,里面包含login的攔截器和defaultStack默認的攔截器
        </interceptors>
        
        <global-results>
            <result name="nologin">/Login/login.jsp</result>
        </global-results>//通用走nologin的時候都走此處
        <action name="Login_login" class="com.controller.LoginAction" method="login">
            <result>/Login/login.jsp</result>
        </action>
        <action name="Login_success" class="com.controller.LoginAction" method="success">
            <result>/Login/success.jsp</result>
        </action>
        <action name="*_*" class="com.controller.{1}Action" method="{2}">
            <interceptor-ref name="newStack"></interceptor-ref> //調用自定義的攔截器
            
            <result>
                {1}/{2}.jsp
            </result>
        </action>
    </package>

在攔截器中使用內置對象

1.ActionContext獲取Map.

2.ServletActionContext獲取HttpSession

3.實現SessionAware接口

以上就是動力節點小編介紹的"struts2攔截器配置和使用",希望對大家有幫助,想了解更多可查看Struts2視頻教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品久久久久久一区二区 | 久久毛片免费看一区二区三区 | 免费区欧美一级毛片 | 久久久亚洲欧洲日产国码二区 | 天天爽夜夜爽天天做夜夜做 | 亚洲毛片免费观看 | 久久精品视频免费 | 久久亚洲美女久久久久 | 国产高清美女一级a毛片久久w | 日本一片免费观看高清完整 | 欧美午夜性刺激在线观看免费 | 亚洲性大片 | 久久精品在线播放 | 四虎影永久在线观看网址 | 国语毛片 | 正在播放一区 | 亚洲精品你懂的 | 青娱乐国产在线视频 | 日日干夜夜操 | 天海翼一区二区在线观看 | 久久99精品国产 | 婷婷 综合网站 | 国产综合一区二区 | 一级二级毛片 | 波多野结衣免费播放 | 99久久精品费精品国产 | 亚洲一区二区三区视频 | 亚洲自拍第二页 | 中文字幕天天躁夜夜狠狠综合 | 99久久99| 可以直接看的毛片 | 私人午夜影院 | 亚洲好色网 | 欧美性猛交aa一级 | 天堂网一区 | 东北老妇露脸xxxxx | 婷婷六月激情在线综合激情 | 一本色道久久综合一区 | 亚洲国产一区二区三区 | 91精品成人福利在线播放 | 欧日韩不卡在线视频 |