1. 程式人生 > >楊品的文件之--spring-boot整合jsp配置

楊品的文件之--spring-boot整合jsp配置

之前一直有聽說spring-boot,但沒怎麼用過,spring-boot減少了很多的配置,這點的還是很給力的,有點類似博主接觸過的grails(groovy+gralde)專案,spring-boot的“約定優於配置 ”理念也是極大的簡化基於Spring MVC的Web應用和REST服務開發,

1,FreeMarker
2
,Groovy
3
,Thymeleaf (spring 官網使用這個)
4
,Velocity
5
,JSP (Spring Boot官方不推薦,STS建立的專案會在src/main/resources 下有個templates 目錄,這裡就是讓我們放模版文(spring-boot預設支援html檔案的直接跳轉),然後並沒有生成諸如 SpringMVC 中的webapp目錄)。同時spring也提供了線上生成spring-boot工程的連結地址

https://start.spring.io/

先貼上工程的目錄結構圖:


大體步驟如下:

1,建立Maven Web Project專案;

2,在pom.xml檔案中新增相關依賴;

3,配置application.properties支援jsp引數;

4,編寫Controller控制器

5,編寫jsp頁面

6,建立spring-boot的啟動類Application.java

------------------------------------------------------------------------------------

1,第一步建立maven web工程就略去了,網上教程很多,不太會的,大家自己可以去看下

2,建立Maven Web工程後配置下pom.xml檔案:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.cnepay</groupId>
  <artifactId>spring-boot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>spring-boot</name>
  <url>http://maven.apache.org</url>

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
</properties>

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!-- <scope>provided</scope> -->
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
           <!--  <scope>provided</scope> -->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
	</dependency>
         <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jstl</artifactId>
       </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build> 

</project>

3,我們先要建立src/main/resources這個目錄,然後在此目錄下建立一個application.properties配置檔案(注意,還需要建立src/main/resources/templates 這個目錄,用來存放模板檔案),先貼上application.properties程式碼
#頁面預設的字首目錄
spring.mvc.view.prefix= /WEB-INF/jsp/
#響應頁面預設字尾
spring.mvc.view.suffix= .jsp
#自定義屬性,可在controller中提取
application.msg= World

4,IndexControl.java 控制器

package com.cnepay;

import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class IndexControl {

	//從 application.properties 中讀取配置,如取不到預設值為congratulations
	    @Value("${application.msg:congratulations}")
	    private String msg;

	    /**
	     * 預設頁<br/>
	     * @RequestMapping("/") 和 @RequestMapping 是有區別的
	     * 如果不寫引數,則為全域性預設頁,加入輸入404頁面,也會自動訪問到這個頁面。
	     * 如果加了引數“/”,則只認為是根頁面。
	     */
	    @RequestMapping("/")
	    public String index(Map<String, Object> map) {
	        System.out.println("application.msg is ====>>" + msg);
	        map.put("msg", msg);
	        return "hello";
	    }
	    
	    
	    @RequestMapping("/test")
	    public ModelAndView page1(){
	    	// 頁面位置 /WEB-INF/jsp/test/welcome.jsp
	        ModelAndView mav = new ModelAndView("test/welcome");
	        mav.addObject("content", msg + ",test");
	        return mav;
	    }

	    /**
	     * 響應到JSP頁面welcome(可以直接使用Model封裝內容,直接返回頁面字串)
	     */
	    @RequestMapping("/test1")
	    public String page2(Model model){
	        // 頁面位置 /WEB-INF/jsp/page/page.jsp
	        model.addAttribute("content", msg + ",test1");
	        return "test/welcome";
	    }
	    
	    
}

5,hello.jsp 頁面
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8"></meta>
    <title>Hello</title>
</head>
<body>
   <h1> Hello ${msg}, this is my jsp page,Congratulations!</h1>
</body>
</html>

6,建立spring-boot的啟動類application.java

package com.cnepay;

import org.apache.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;


@SpringBootApplication
public class Application extends SpringBootServletInitializer {

	private static Logger logger = Logger.getLogger(Application.class);
	
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}

	/**
         * Main Start
         */
	public static void main(String[] args) throws Exception {
		SpringApplication.run(Application.class, args);
		logger.info("============= SpringBoot Start Success =============");
	}
}

要想讓spring-boot支援JSP,需要將專案打成war包。
我們做最後一點修改,修改pom.xml檔案,將 jar 中的 jar 修改為 war