Struts2框架與servlet共存問題

2021-12-30 04:03:46 字數 1824 閱讀 4095

今天在做乙個專案的時候遇到了乙個很奇怪的問題,這個專案的一部分是之前用servlet寫的,但是後邊打算用struts寫,再加入struts框架配置後發現原先的那部分不能正常訪問了,之前沒這麼做過所以很納悶,struts2配置自認為寫的很熟了,應該沒什麼問題啊,struts.xml檔案改了又改還是找不到錯誤,後來在看到web.xml時突然眼前一亮。。

原來是所有的請求都被struts2攔截了,struts2把servlet當成action了,因為servlet和action都是沒有字尾的。很是悲劇,要想使servlet和struts各司其職只能是限制struts的攔截範圍了,

這裡在struts.xml的配置裡邊加乙個這個就可以限制struts只攔截action型別的請求了,當然在發起請求時也是要寫清楚http://***/xx.action了這個action就不能向之前那樣省掉了。下面給出網上的幾種方法:方式一:修改servlet的相關配置,統一在servlet後面加上「.servlet」1.修改web.xml配置檔案形如:

jqueryajaxservlet

com.clzhang.sample.struts2.servlet.jqueryajaxservlet

jqueryajaxservlet

/servlet/jqueryajax.servlet

2.修改呼叫servlet的地方,形如:

......

$.ajax(

public void dofilter(servletrequest req, servletresponse resp,

filterchain chain) throws ioexception, servletexception else

// 第二種方式 (二選 一)

/**if (this.includes.contains(target)) else */}

private arraylist includes = new arraylist();

public void init(filterconfig config) throws servletexception

}2.修改web.xml,類似如下格式:

<?xml version="1.0" encoding="utf-8"?>

redisp

com.clzhang.sample.struts2.filterservlet

redisp

/*struts2

org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter

struts2

/*jqueryajaxservlet

com.clzhang.sample.struts2.servlet.jqueryajaxservlet

jqueryajaxservlet

/servlet/jqueryajax

jsonviewservlet

com.clzhang.sample.struts2.servlet.jsonviewservlet

jsonviewservlet

/servlet/jsonview

index.jsp

index.html

注意,redisp必須放置於struts2之前,這樣才能夠保證它們能夠按照正常的順序處理,否則會出錯。

struts2動態方法呼叫訪問servletAPI

struts2動態方法呼叫 動態方法呼叫 在struts2中動態方法呼叫有三種方式,動態方法呼叫就是為了解決乙個action對應多個請求的處理,以免action太多 第一種方式 指定method屬性 這種方式我們前面已經用到過,類似下面的配置就可以實現 redirect web inf jsppag...

struts2概述與框架搭建

一開始學習struts2比較好奇的應該是為什麼會叫 2吧,查了一下,之前有大神寫了乙個struts1,但是是基於servlet的,我們知道servlet有他的限制,而另乙個小組開發了乙個叫webwork的框架,兩個人商量一下把對方的整合在一起,但畢竟struts的作者名聲大,所以沿用了struts的...

Struts2驗證框架

action配置中一定要設定input返回頁面 新增驗證只要建立驗證的xml檔案 在action同包下,建立 action類名 validation.xml 如 validateaction建立validateaction validation.xml 注意 1.要驗證的方法不能叫input.2.這...