【web】支援jsp+mvc訪問

來源:互聯網
上載者:User

標籤:mave   lib   xml檔案   mapping   lan   net   enc   mod   cli   

直接使用SpringMVC時配置訪問jsp頁面時很容易的事,但是由於spring Boot使用內嵌的servlet容器,所以對jsp的支援不是很好,而且也不建議使用jsp,但是為了滿足這種返回jsp頁面的需求同時又想享受Spring Boot免去各種配置的麻煩,經本各種實驗,有兩種方法可以供參考,在說明以下兩種方法前首先聲明所用的依賴如下:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>org.apache.tomcat.embed</groupId>    <artifactId>tomcat-embed-jasper</artifactId>    <scope>provided</scope></dependency>

spring-boot-starter-web是用來支援web應用開發的,在匯入之後會自動匯入內嵌的servlet容器,比如Tomcat,但是要注意的是此時並沒有能解析jsp頁面的jasper模組,由此可以看出內嵌的servlet容器並不是全部匯入的,而是分模組部分匯入的,Jasper需要我們手動匯入。如果還要使用jstl庫,也可以繼續匯入:

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>jstl</artifactId></dependency>
1、在工程中返回jsp頁面

由於Spring Boot的目錄結構和普通的Web應用的目錄結構是不同的,為了返回jsp,首先要建立對應的web應用程式目錄,在/src/main下建立WEB-INF/jsp目錄,形成/src/main/WEB-INF/jsp,然後將我們的jsp頁面放在下面即可。

然後再繼續設定檔,如下:

application.properties

spring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp

或者application.yml

spring:  mvc:    view:      prefix: /WEB-INF/jsp/      suffix: .jsp

 

這與只使用SpringMVC時的配置十分類似,而且可以看出使用的是InternalResourceViewResolver視圖解析器。使用代碼測試一下:

@Controller
public class SpringBootController {

  @RequestMapping("/index")
  public String index(){
    return "main";
  }

 }

以上會返回/src/main/WEB-INF/jsp/main.jsp視圖。 
但是,返回頁面只是在eclipse這種IDE中直接運行Spring Boot程式時會起作用,如果打包成jar包後是不會包含我們建立的WEB-INF/jsp目錄的,也就沒有我們定義的jsp頁面,所以會返回404狀態代碼,所以這種方法實際上是沒有什麼意義的,但可以解決:

①將打成jar包的方式改為war包

②修改pom.xml檔案配置

<!-- 忽略無web.xml警告 --><plugin>      <groupId>org.apache.maven.plugins</groupId>      <artifactId>maven-war-plugin</artifactId>      <configuration>         <failOnMissingWebXml>false</failOnMissingWebXml>      </configuration>  </plugin>              
<resource>    <directory>src/main/resources</directory>    <includes>        <include>**/*</include>    </includes></resource>            <!-- 打包時將jsp檔案拷貝到META-INF目錄下-->  <resource>      <!-- 指定resources外掛程式處理哪個目錄下的資源檔 -->      <directory>src/main/webapp</directory>      <!--注意此次必須要放在此目錄下才能被訪問到-->      <targetPath>META-INF/resources</targetPath>      <includes>          <include>**/**</include>      </includes>  </resource>  

③靜態檔案存放目錄src/main/resources,預設的靜態資源檔案位置是/static下

jsp直接引用靜態檔案

<script src="jquery-3.1.1.min.js" type="text/javascript"></script><script src="main.js" type="text/javascript"></script>

④打成war包後運行,一切正常

2 、在打包後返回jsp頁面

如果想在打包後使用Java -jar ***.jar來運行代碼,就要使用如下這種方法,在/src/main/resources/中建立如下的目錄META-INF/resources/WEB-INF/jsp,然後application.properties的配置和第一種方法相同。但是這樣在使用mvn package打包後會包含上面建立的目錄,如下: 

這時使用java -jar SpringBootTemplate-0.0.1-SNAPSHOT.jar就可以愉快地部署應用程式了,順便說一句,此時在jsp頁面也可以使用EL運算式擷取Model中儲存的資料了。

【web】支援jsp+mvc訪問

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.