2011-10-25 142 views
0

我想了解請求的工作原理。不幸的是,我首先被編碼,然後才理解。Web應用程序URL訪問java

幾年前,我在java中編寫了一些非常基本的web應用程序,並且它按預期工作。在其主網頁(.JSP)我有以下的菜單按鈕之一:

<p><a href="home.jsp">test</a></p> 

我目前正在寫新的Web應用程序和忘記了很多。這一次,我正在用Spring MVC做正確的事情。我無法真正理解爲什麼這段代碼不再把我帶到當前web應用程序中的home.jsp中,爲什麼一開始我在老應用程序中使用它。

Apache給出:請求的資源()不可用。

這並不是說我需要這種直接交互,而只是試圖瞭解資源是否可以通過URL訪問? Spring MVC爲我提供了額外的安全性,只有servlet處理請求才能產生視圖?我錯過了一些非常微不足道的東西嗎?

此外,在同一個舊的Web應用程序菜單中,我直接鏈接到了servlet,但是目前我無法在新的webapp中直接引用這個servlet。我可以提出相關的請求,這些請求將由servlet捕獲,但不能以其名稱命名。

Apache給出:請求的資源()不可用。

參考的servlet從菜單:

<% if((String) session.getAttribute("passengerFound") != null){ %> 
<a href="TripRecentBook"><img style="border:0" src="menuButtons/My Trips.png" alt="My Trips"/></a> <%} %> 

謝謝,我敢打賭,這是非常簡單的。我真的想明白,請幫助。我知道它與Front Controller(dispatcherServlet)有關,但我無法在我的腦海中形成合乎邏輯和堅定的解釋。

回答

2

它只是我想了解資源是否通過URL

都可以訪問 總之,沒有。使用Spring MVC時的默認行爲和推薦配置是將Spring DispatcherServlet映射到url模式,這意味着所有請求都發送到DispatcherServlet。開箱即用,dispatcher-servlet不會爲靜態資源請求提供服務。如果需要的話,兩個主要選項是

  1. 地圖DispatcherServlet會比根另一個模式,Spring MVC的部分用途不同隔離到子上下文
  2. 添加資源映射到你的Spring上下文(您applicationContext.xml中)。

<mvc:resources mapping="/res/**" location="/res/" />

這上面會告訴Spring MVC的把所有的請求/ RES/**作爲靜態資源的請求(如圖片等),這些資源的物理位置在/ RES /文件夾在應用程序根目錄中。

+0

你是正確的。我有我的.css在那裏和ProjectName/resources/screen.css直接請求工程。因此,如果沒有我明確告訴處理什麼類型的請求以及如何處理,就沒有辦法從我的應用程序中獲取任何資源,從而使我們獲得更好的安全性。謝謝。 – Aubergine

0

你可能只是缺少一個「/」爲"/home.jsp",而不是"home.jsp"

+0

不,我不這樣做,你的也不工作:-)我認爲上面的帖子顯示了我將在幾分鐘內閱讀的情況。 – Aubergine