2017-03-06 38 views
1

我想知道如何在WEB-INF的某個目錄下直接訪問JSP頁面,並且在/路徑上運行Spring,而無需爲轉發視圖編寫任何控制器。如何用Spring加載直接訪問JSP頁面?

例如,我有一個項目myapp結構如下:

src 
WebRoot 
`-- WEB-INF 
    |-- public 
    | `-- example.jsp 
    |-- views 

現在,我想直接前往http://localhost/myapp/public/example沒有實施任何控制器訪問example.jsp

我試過到目前爲止:

  1. 添加<mvc:resources mapping="/public/**" location="/WEB-INF/public/"/>到我的上下文XML,但它只是將無法正常工作,容器不斷抱怨HTTP 404 - PAGE NOT FOUND /public/example.jsp

  2. 將內部資源視圖解析器添加到我的上下文xml。

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="prefix"> 
         <value>/WEB-INF/</value> 
        </property> 
        <property name="suffix"> 
         <value>.jsp</value> 
        </property> 
    </bean> 
    

    ,但我不知道下一步該怎麼做,我也許把很多JSP頁面/WEB-INF/public下,所以寫控制器爲他們每個人將是乏味的。

是否有任何規範的方式來做到這一點?請幫忙!

+0

你想要做這樣的事情瀏覽器類型/這重定向example.jsp頁? –

+0

@ T.Jung問題已更新。 –

+0

你甚至不應該嘗試。如果您需要直接訪問JSP,則應將其存儲在WEB-INF之外。 JSP不是一個**靜態**資源。它通過servlet容器編譯成servlet,並且該編譯代碼由servlet容器調用。 –

回答

1

彈簧mvc我們有一個選項 <mvc:view-controller path="/" view-name="example"/>。 HTTP://本地主機:8080/MyApp的/家是我的權利

,當你在

+0

它解決了我的問題,但是,查看名稱應該是'public/example' –

+0

@JerryChin:''行確實聲明瞭一個控制器來服務於視圖... –

+0

@SergeBallesta但在我的情況下,這是解決問題的最簡單方法。你不這麼認爲嗎? –

1

嘗試類似的東西在你的分發程序Servlet:

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:prefix="/WEB-INF/jsp/" 
     p:suffix=".jsp" /> 

當JSP文件夾中包含了JSP文件。從控制器你可以直接使用jsp名稱。你不需要提及上述定義的jsp文件夾。

+0

我想直接從瀏覽器**訪問JSP頁面**而沒有實現控制器,上面的工作是否會起作用? –

+0

您已標記spring mvc,其中'c'表示控制器...您應該使用控制器處理請求映射並加載jsps –

+0

如果只有一個自包含的JSP頁面,並且我希望用戶直接訪問它,就像訪問靜態資源的方式一樣,我該怎麼做? –