2010-08-05 19 views
5

把jsp(應該是輕鬆的單)
如何重定向URL在web.xml

我如何可以重定向模式亞達的所有URL * .js文件到我的具體的jsp。
將這個除了我的web.xml工作:

<servlet-mapping> 
     <servlet-name>MySpecific.jsp</servlet-name> 
     <url-pattern>yada*.js</url-pattern> 
</servlet-mapping> 

也許我必須使用javax.servlet.Filter的用於這一目的?

回答

11

我會將這些文件放在名爲/yada的文件夾中,然後使用的/yada/*

如果你不想這樣做,那麼在過濾器中手動確定它確實是唯一的手段。


更新:根據您的更新,你實際上有第二個問題,這是不是從你最初的問題直接顯而易見的:「?如何聲明JSP文件作爲servlet」 。答案是:使用<jsp-file>而不是<servlet-class>

<servlet> 
    <servlet-name>foo.jsp</servlet-name> 
    <jsp-file>/foo.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>foo.jsp</servlet-name> 
    <url-pattern>/foo/*</url-pattern> 
</servlet-mapping> 

不過,正如評論中所述,這不是最佳實踐。這聽起來在JSP文件中原始的Java代碼,你應該在所有範圍內avoid

+0

但servlet-name屬性可以直接指向一個jsp文件而不是一個servlet嗎? – Spiderman 2010-08-05 12:51:12

+0

哦,我以爲你已經有了一個''。不,你不能一個人做。在''中使用''而不是'',它會起作用。但它不是推薦的方式。 JSP是這個錯誤的工具。在JSP中的原始Java代碼應該[全部避免](http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files)。 – BalusC 2010-08-05 12:55:31

+0

我們不知道他是否在使用原始的java代碼(我認爲他不是) – helios 2010-08-05 12:59:28

1

根據服務器的情況,你可以放在url-pattern中的東西是非常有限的。

兩個是有效的:

  • 絕對路徑(不含通配符)
  • * .EXT

使規範不匹配。我真的會使用過濾器。 PS:不要忘記在生成的JSP中指定<%頁面sourceEncoding = ... contentType = ...%> :)。內容類型應包括字符集= xxxxx

+0

好的,但我如何從過濾器轉發到JSP。我必須在forward命令之後或之前調用'chain.doFilter()'。我必須打電話給它,如果pattarn被發現或只有當模式沒有被發現 – Spiderman 2010-08-05 13:20:12

+0

我繼續這個線程http://stackoverflow.com/questions/3415240/forward-request-from-a-filter 因爲我目前不能在這個線程中寫更多的評論,但問題還沒有解決 – Spiderman 2010-08-05 13:44:07