2015-11-28 40 views
0

我有以下關於如何在這個特定的Spring MVC配置中實現路由的問題。有些懷疑與Spring MVC中的顯式頁面映射有關,究竟是如何工作的?

所以,到指定的文件MVC-config.xml中我有以下MVC配置:

<!-- other option is UrlFilenameViewController --> 
<mvc:view-controller path="/" view-name="/index"/> 
<mvc:view-controller path="/index.html" view-name="/index"/> 
<mvc:view-controller path="/html5.html" view-name="/html5/html5"/> 
<mvc:view-controller path="/about.html" view-name="/about"/> 
<mvc:view-controller path="/admin/admin.html" view-name="/admin/admin"/> 
<mvc:view-controller path="/login.html" view-name="/form/login"/> 
<mvc:view-controller path="/denied.html" view-name="/error/denied"/> 
<mvc:view-controller path="/rest.html" view-name="/rest/rest"/> 
<mvc:view-controller path="/file.html" view-name="/file/file"/> <!-- Mapping per l'empio dell'upload file --> 
<mvc:view-controller path="/cookieView.html" view-name="/cookie/cookieView"/> 
<mvc:view-controller path="/jstl.html" view-name="/jstl/jstl"/> 
<mvc:view-controller path="/audiovideo.html" view-name="/audiovideo/audiovideo"/>  
<mvc:view-controller path="/jdbc.html" view-name="/jdbc/jdbc"/> 
<mvc:view-controller path="/orm.html" view-name="/orm/orm"/> 
<mvc:view-controller path="/scope.html" view-name="/scope/scope"/> 
<mvc:view-controller path="/maintenance.html" view-name="/maintenance"/> 
<mvc:view-controller path="/security.html" view-name="/security/security"/> 
<mvc:view-controller path="/controller.html" view-name="/controller/controllerView"/> 

我從來沒有見過這樣的設置,我總是用控制器類(註釋CON @控制器),其中包含註釋爲@RequestMapping的方法,該方法將特定的HttpRequest處理爲指定資源並返回邏輯視圖名稱。

因此,在我工作的應用程序中,似乎MVC邏輯非常不同。

在我看來,我沒有控制器類和路由顯式處理。

因此,例如,我有:

<mvc:view-controller path="/file.html" view-name="/file/file"/> 

,我認爲方法:處理向顯示file.jsp頁面是/文件中的/file.html資源的所有請求/查看目錄的文件夾。

而逸岸到視圖目錄我有/file/file.jsp頁是:

<!DOCTYPE html> 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@taglib prefix="page" tagdir="/WEB-INF/tags" %> 
<page:template> 
    <jsp:attribute name="title"> 
     Spring MVC File Upload Controller Example 
    </jsp:attribute> 
    <jsp:body> 
      <c:url value="/uploadFile" var="fileUploadControllerURL" /> 
      <h1><b>Spring MVC FileUploadController Example</b></h1> <br/> 
      <form action="${fileUploadControllerURL}" method="post" enctype="multipart/form-data"> 
       <table> 
        <tr><td><b>File:</b></td><td><input type="file" name="file"></td><td><input type="submit" value="Press to upload the File"></td></tr> 
       </table> 
      </form> 
      <br/><br/> 
      <c:url value="/excel" var="excelController" /> 
      <a href="${excelController}">Excel</a><br/>  
      <c:url value="/pdf" var="PDFController" /> 
      <a href="${PDFController}">PDF</a> 
    </jsp:body> 
</page:template> 

所以,你可以看到,這insdie頁我有類似:

<c:url value="/excel" var="excelController" /> 
<a href="${excelController}">Excel</a><br/> 

究竟意味着什麼?

在我看來,第一行把/Excel中的一個名爲excelController變量中值和然後這是用來爲HREF

這是我的推理正確的還是我失去了什麼?

回答

1

<c:url>是一個非常有用和強大的jspl標籤。一般來說,你是對的:

<c:url value="/excel" var="excelController" /> 
<a href="${excelController}">Excel</a><br/> 

在我看來,第一行放了一個名爲excelController變數內/ EXCEL值和然後這是用來到HREF

但一些詳細信息丟失:存儲在excelController中的值不完全是/excel,而是域相對地址爲/excel,它可能會有一個sessionId參數(取決於您的會話跟蹤配置方式)。

例如,假設你運行這個程序,被稱爲「MyApp的」,並使用cookie來跟蹤會話的本地主機的tomcat,然後excelController將是:/MyApp/excel