這應該相對簡單,但我還沒有找到如何執行它的說明。將請求解釋爲JSP而不是通過servlet
我的設置是一個簡單的web應用程序,通過一個servlet處理每個請求(我將這個問題稱爲MyEverythingServlet)。這裏是我的web.xml的稍作修改的版本:
<servlet>
<servlet-name>MyEverythingServlet</servlet-name>
<servlet-class>blah.blah.blah.MyEverythingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyEverythingServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
眼下,該servlet是非常簡單的,要麼做了一些工作(當work.do是路徑的一部分),如果沒有指定一個.txt文件在道路上,我們會做一些驗證,然後加載該文件併發送文本作爲響應:
response.getOutputStream().print(content);
我希望做的是兩種:
- 在Servlet中,如果請求是一個.jsp文件的URL,我想成爲能夠在將字符串寫入響應之前讓容器解釋JSP scriptlet部分/ taglib的內容。
- 更改我的web.xml以使其處理MyEverythingServlet外部的.jsp文件。
你是否建議我在我的web.xml文件中使用過濾器和過濾器映射代替servlet映射?然後,我會讓過濾器查找* .jsp,並對這些請求(chain.doFilter())不做任何處理? Filter如何將非JSP請求發送到MyEverythingServlet? – 2010-09-07 21:28:18
你也可以這樣做(只有當這些非JSP文件在公共webcontent之外,並且你不得不使用'FileInputStream'來讀取它們)。然後,您應該將servlet映射到更具體的url模式,並使用匹配此模式的URL來分發請求(我會反過來質疑Filter ..的值)。但是如果這些文件在公共webcontent中,那麼繼續過濾鏈就足夠了。 servletcontainer的內置默認servlet將爲您提供非JSP文件。 – BalusC 2010-09-07 21:30:59
好吧,我認爲唯一缺少的就是Filter如何將請求轉發給MyEverythingServlet。 – 2010-09-07 21:41:00