Struts和servlet不能共存問題解決方法

2022-09-27 03:45:09 字數 1143 閱讀 1746

在乙個專案中,如果我們既用到了struts2又用到了servlet,專案執行時有可能無法正常訪問servlet,原因是在配置struts的過濾器的時候,攔截了所有請求。

struts2

www.cppcns.comattern>/*

下面是servlet的配置

myservlet

com.itmyhome.myservlet

myservlet

/myservlet

當我們在頁面發出請求時,struts2將會攔截所有請求,對於servlet請求將不能夠正常響應

報錯資訊為:http status 404 - there is no action mapped for namespace / and action name myservlet.

這是因為struts2把servlet當成action了,因為servlet和action都是沒有字尾的.

解決方法:

下面介紹三種方法

方法1:

在servlet後面加上.servlet結尾,包括web.xml配置檔案中和頁面上使用servlet的地方(當然是什麼都可以,比如hello)程式設計客棧

myservlet

/myservlet.servlet

頁面訪問 http://localhost:8080/project/myservlet.servlet

方法2:

在strut中的的節點下面新增struts2處理的請求字尾 常量:

該屬性指定需要struts2處理的請求字尾,該屬性的預設值是action,即所有匹配*.action的請求都由struts2處理。

如果使用者需要指定多個請求字尾,則多個字尾之間以英文逗號(,)隔開。

方法3:

在web.xml中修改struts2攔截頁面請求的配置:

原來的struts2

org.apache.struts2.dispatcher.filterdispatcher

struts2

/*改為

struts2

*.action

www.cppcns.comame>struts2

*.jsp

struts2

/admin/*

程式設計客棧servlet的請求路徑不改變

總結

struts 和servlet的關係

可以說struts2本質還是乙個servlet 在s1中用於整體控制的是乙個servlet s2中是乙個filter,其實也可把它看作是servlet 只是對servlet進一步的封裝罷了 打個比方 做web專案,好比建房子。servlet好比木材,用一根根的木材搭,也可蓋起房子,只是速度慢而已 而...

struts 和servlet的關係

可以說struts2本質還是乙個servlet 在s1中用於整體控制的是乙個servlet s2中是乙個filter,其實也可把它看作是servlet 只是對servlet進一步的封裝罷了 打個比方 做web專案,好比建房子。servlet好比木材,用一根根的木材搭,也可蓋起房子,只是速度慢而已 而...

struts2和servlet的區別

1.struts2是基於對servlet的封裝。2.struts2開發效率更高,更簡潔。3.struts2能夠通過預設的 自動獲取請求引數,而且能夠自動轉換成對應的資料型別。前提要求是在對應的action類中 定義對應的屬性 而且屬性名要與對應的請求引數的key保持一致,並提供set,get方法。主...