国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何使用Spring管理Filter和Servlet

amuqiao / 1081人閱讀

摘要:利用這種方式就將或者和業(yè)務(wù)對象的依賴關(guān)系用來進行管理,并且不用在中硬編碼要引用的對象名字。配置的的配置完成。推薦使用,應(yīng)為配置上更簡單。

在使用spring容器的web應(yīng)用中,業(yè)務(wù)對象間的依賴關(guān)系都可以用context.xml文件來配置,并且由spring容器來負責依賴對象 的創(chuàng)建。如果要在filter或者servlet中使用spring容器管理業(yè)務(wù)對象,通常需要使用WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext())來獲得WebApplicationContext,然后調(diào)用WebApplicationContext.getBean(“beanName”)來獲得對象的引用,這實際上是使用了依賴查找來獲得對象,并且在filter或者servlet代碼中硬編碼了應(yīng)用對象的bean名字。為了能在filter或者servlet中感知spring中bean,可采用如下步驟來實現(xiàn):

    1、將filter或者servlet作為bean定義在context.xml文件中,和要應(yīng)用的bean定義放在一起;
    2、實現(xiàn)一個filter代理或者servlet代理,該代理用WebApplicationContext來獲得在context.xml中定義的filter或者servlet的對象,并將任務(wù)委托給context.xml中定義的filter或者servlet
   3、在web.xml中用ContextLoaderListener來初始化spring  的context,同時在filter代理或者servlet代理的定義中用初始化參數(shù)來定義context.xml中filter或者servlet的bean名字(或者直接受用代理的名稱獲得相應(yīng)的filter或者servlet的名稱)。
   4、在web.xml中定義filter代理或者servlet代理的mapping。
   利用這種方式就將filter或者servlet和業(yè)務(wù)對象的依賴關(guān)系用spring  來進行管理,并且不用在servlet中硬編碼要引用的對象名字。具體實例如下:

1、spring與web配置
1.1 在applicationContext.xml中定義filter

    
            
              SpringFilter  
            
   
   說明:com.sirui.filter.SpringFilter為實現(xiàn)了javax.servlet.Filter接口的filter
    實現(xiàn)filter代理 實際上,filter代理不需要我們自己來實現(xiàn),Spring提供了兩種現(xiàn)成的filter代理 org.springframework.security.util.FilterToBeanProxy, org.springframework.web.filter.DelegatingFilterProxy,兩者只是在web.xml中的配置上略有不同,下面就讓我們一起看看如何在web.xml中進行配置。

1.2. 配置web.xml

 初始化spring的context ,因為是使用spring來管理,所以在使用filter前先要初始化spring的context,一般來說配置如下:

contextConfigLocation  
   
         /WEB-INF/applicationContext.xml  
   
   
   
   
      org.springframework.web.context.ContextLoaderListener  
   


2、Filter配置:
2.1 FilterToBeanProxy

     springFilter   
    org.springframework.security.util.FilterToBeanProxy  
      
      
        targetBean  
        springFilter  
      

說明:需要為FilterToBeanProxy提供上下文參數(shù),這里我們配置的是targetBean屬性,它告訴spring在context中查找的bean名稱,所以當請求被過濾器攔截后FilterToBeanProxy會在applicationContext.xml中會查找id為springFilter的bean.我們也可以配置targetClass屬性,意思就是查找該類型的bean.

2.2 DelegatingFilterProxy

    springFilter  
      
        org.springframework.web.filter.DelegatingFilterProxy  
      


說明:使用DelegatingFilterProxy時不需要配置任何參數(shù),spring會根據(jù)filter-name的名字來查找bean,所以這里spring會查找id為springFilter的bean.
2.3 配置filter的mapping

    springFilter  
    /*  


filter配置完成。推薦使用DelegatingFilterProxy,應(yīng)為配置上更簡單。

3、Servlet 配置
Servlet的配置與Filter的配置十分相似
3.1 在applicationContext.xml中定義servlet

    
            
              SpringServlet  
           
   

說明:com.sirui.servlet.SpringServlet繼承自 javax.servlet.http.HttpServlet
3.2 實現(xiàn)servlet代理,與filter不同,spring沒有為servlet提供代理實現(xiàn),需要我們自己來創(chuàng)建,不過放心,創(chuàng)建一個servlet代理十分簡單,一個具體的實現(xiàn)如下:
package com.sirui.servlet;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class ServletToBeanProxy extends GenericServlet {

private String targetBean;  
private Servlet proxy;  
public void init() throws ServletException {  
            this.targetBean = getInitParameter("targetBean");  
            getServletBean();  
        proxy.init(getServletConfig());  

}
public void service(ServletRequest req, ServletResponse res)

       throws ServletException, IOException {  
      proxy.service(req, res);  
}  
private void getServletBean() {  
          WebApplicationContext wac = WebApplicationContextUtils  
            .getRequiredWebApplicationContext(getServletContext());  
            this.proxy = (Servlet) wac.getBean(targetBean);  
}  

}
說明:相信看了代碼就明白了,它利用targetBean屬性在spring中查找相應(yīng)的servlet,這很像FilterToBeanProxy的方式,所以我為其取名為ServletToBeanProxy。當然,我們也可以使用類似于DelegatingFilterProxy的方式,只需要將上述代碼中標記為黃色的部分修改為this.targetBean=this.getServletName();即可,我們相應(yīng)的命名為DelegatingServletProxy。

    配置web.xml和初始化spring的context 與filter中的說明一致,不再贅述。         

3.3 ServletToBeanProxy

    springServlet  
      
        com.sirui.servlet.proxy.ServletToBeanProxy  
      
      
        targetBean  
        springServlet  
      
    1  


3.4DelegatingServletProxy

    springServlet  
      
        com.sirui.servlet.proxy.DelegatingServletProxy  
      
    1  

3.5 配置servlet的mapping

    springServlet  
    /servlet/*  

servlet的配置完成。推薦使用DelegatingServletProxy,應(yīng)為配置上更簡單。

更多技術(shù)分享盡在java樂園

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70754.html

相關(guān)文章

  • 【圖片抓取】003-JAVA WEB(上)

    摘要:圖片抓取上本項目主要講述項目的搭建和啟動過程,為以后繼續(xù)圖片抓取的業(yè)務(wù)展示做基礎(chǔ)。用于處理請求和響應(yīng)的攔截處理。這樣相比容器直接發(fā)到處理,大大減少了代碼重復工作而且方便統(tǒng)一管理。上下文關(guān)系從上圖可以看出主要在和兩部分做工作。 【圖片抓取】003-JAVA WEB(上) 本項目主要講述java web項目的搭建和啟動過程,為以后繼續(xù)圖片抓取的業(yè)務(wù)展示做基礎(chǔ)。項目中采用tomcat+spr...

    jiekechoo 評論0 收藏0
  • Spring之旅第十站:MVC配置、上傳文件、異常處理、跨重定向請求、為控制器添加通知

    摘要:依賴于對請求的支持。使用解析兼容的沒有構(gòu)造器參數(shù),也沒有要設(shè)置的參數(shù),這樣,在應(yīng)用上下文中,將其聲明為就會非常簡單。默認是沒有限制的整個請求的容量。 Spring MVC 高級的技術(shù) 本章內(nèi)容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結(jié)束 說明 如果你有幸能看到。后面的章節(jié)暫時不更新了,改變學習方式了。重要理解思想,這本書...

    leanote 評論0 收藏0
  • 面試題:SpringMVCStruts2的區(qū)別

    摘要:的入口是,而是這里要指出,和是不同的。以前認為是的一種特殊,這就導致了二者的機制不同,這里就牽涉到和的區(qū)別了。開發(fā)效率和性能高于。的實現(xiàn)機制有以自己的機制,用的是獨立的方式。 1、Struts2是類級別的攔截, 一個類對應(yīng)一個request上下文,SpringMVC是方法級別的攔截,一個方法對應(yīng)一個request上下文,而方法同時又跟一個url對應(yīng),所以說從架構(gòu)本身上SpringMVC...

    isaced 評論0 收藏0
  • 詳談 Filter 過濾器

    摘要:元素用于指定過濾器的完整的限定類名。除此之外,過濾器不會被調(diào)用。參數(shù)用于訪問后續(xù)過濾器。還可以為指定目標資源為某個,例如當用戶訪問時,會執(zhí)行名字為的,這時會執(zhí)行過濾器。防止中文亂碼過濾器項目使用框架時。 文章首發(fā)在CSDN博客,轉(zhuǎn)載請務(wù)必注明以下所有鏈接,否則考慮法律追究責任。 CSDN地址:http://blog.csdn.net/tzs_1041218129/article/det...

    wind5o 評論0 收藏0

發(fā)表評論

0條評論

amuqiao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<