Spring Boot學習記4

Spring MVC項目快速搭建

  1. 示例

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.wisely</groupId>

  <artifactId>hightlight_springmvc4</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging>

  <properties> 

        <java.version>1.8</java.version>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <jsp.version>2.2</jsp.version>

        <jstl.version>1.2</jstl.version>

        <servlet.version>3.1.0</servlet.version>

        <spring-framwork.version>4.1.5.RELEASE</spring-framwork.version>

        <logback.version>1.0.13</logback.version>

        <slf4j.version>1.7.5</slf4j.version>

  </properties>

  <dependencies>

        <dependency>

                <groupId>javax</groupId>

                <artifactId>javaee-web-api</artifactId>

                <version>7.0</version>

                <scope>provided</scope>

        </dependency>

        <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-webmvc</artifactId>

                <version>${spring-framwork.version}</version>

        </dependency>

        <dependency>

                <groupId>javax.servlet</groupId>

                <artifactId>jstl</artifactId>

                <version>${jstl.version}</version>

        </dependency>

        <dependency>

                <groupId>javax.servlet</groupId>

                <artifactId>javax.servlet-api</artifactId>

                <version>${servlet.version}</version>

                <scope>provided</scope>

        </dependency>

        <dependency>

                <groupId>javax.servlet.jsp</groupId>

                <artifactId>jsp-api</artifactId>

                <version>${jsp.version}</version>

                <scope>provided</scope>

        </dependency>

        <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-tx</artifactId>

                <version>${spring-framwork.version}</version>

        </dependency>

        <dependency>

                <groupId>org.slf4j</groupId>

                <artifactId>slf4j-api</artifactId>

                <version>${slf4j.version}</version>

        </dependency>

        <dependency>

                <groupId>log4j</groupId>

                <artifactId>log4j</artifactId>

                <version>1.2.16</version>

        </dependency>

        <dependency>

                <groupId>org.slf4j</groupId>

                <artifactId>jcl-over-slf4j</artifactId>

                <version>${slf4j.version}</version>

        </dependency>

        <dependency>

                <groupId>ch.qos.logback</groupId>

                <artifactId>logback-classic</artifactId>

                <version>${logback.version}</version>

        </dependency>

        <dependency>

                <groupId>ch.qos.logback</groupId>

                <artifactId>logback-core</artifactId>

                <version>${logback.version}</version>

        </dependency>

        <dependency>

                <groupId>ch.qos.logback</groupId>

                <artifactId>logback-access</artifactId>

                <version>${logback.version}</version>

        </dependency>

  </dependencies>

  <build>

        <plugins>

                <plugin>

                        <groupId>org.apache.maven.plugins</groupId>

                        <artifactId>maven-compiler-plugin</artifactId>

                        <version>2.3.2</version>

                        <configuration>

                                <source>${java.version}</source>

                                <target>${java.version}</target>

                        </configuration>

                </plugin>

       

       

        </plugins>

 

  </build>

</project>

logback.xml

<?xml version="1.0"   encoding="UTF-8"?>

<configuration scan="true"   scanPeriod="1 seconds">

<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">

        <restJUL>true</restJUL>

</contextListener>

  <appender name="console"   class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>logback: %d{yyyy-MM-dd HH:mm:ss.SSS} %logger{36} - %msg%n</pattern>  

        </encoder>

    </appender>

         <logger name="org.springframework.web"   level="DEBUG">

                <root level="info">

                        <appender-ref ref="console"/>

                </root>

         </logger>

         

         

</configuration>

src/main/resources下建立views目錄,並在此目錄下新建index.jsp

<%@ page language="java"   contentType="text/html; charset=ISO-8859-1"

      pageEncoding="ISO-8859-1"%>

<!DOCTYPE html   PUBLIC "-//W3C//DTD   HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type"   content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

        <pre>Welcome to Spring MVC world</pre>

</body>

</html>

SpringMVC配置

package hightlight_springmvc4;

 

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import   org.springframework.web.servlet.config.annotation.EnableWebMvc;

import   org.springframework.web.servlet.view.InternalResourceViewResolver;

import org.springframework.web.servlet.view.JstlView;

 

@Configuration

@EnableWebMvc

@ComponentScan("hightlight_springmvc4")

public class MyMvcConfig {

       

        public InternalResourceViewResolver   viewResolver() {

                InternalResourceViewResolver viewResolver = new   InternalResourceViewResolver();

                viewResolver.setPrefix("/WEB-INF/classes/views/");

                viewResolver.setSuffix(".jsp");

                viewResolver.setViewClass(JstlView.class);

                return viewResolver;

        }

 

}

 

Web配置

package hightlight_springmvc4;

 

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletRegistration.Dynamic;

 

import org.springframework.web.WebApplicationInitializer;

import   org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

import org.springframework.web.servlet.DispatcherServlet;

 

/**

 * 1.WebApplicationInitializerSpring提供用來配置Servlet3.0+配置接口,從而實現了替代web.xml的位置。實現此接口將會自SpringServletContainerInitializer取到

 * 2.新建WebApplicationContext,註冊配置,並將其和當前servletContext

 * 3.註冊Spring MVCDispatcherServlet

 *

 */

public class WebInitializer implements   WebApplicationInitializer {

 

        @Override

        public void onStartup(ServletContext servletContext) throws   ServletException { //1

                AnnotationConfigWebApplicationContext   ctx = new AnnotationConfigWebApplicationContext();

                ctx.register(MyMvcConfig.class);

                ctx.setServletContext(servletContext); //2

                Dynamic servlet =servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); //3

                servlet.addMapping("/");

                servlet.setLoadOnStartup(1);

        }

 

}

 

簡單的控制器

package hightlight_springmvc4;

 

import org.springframework.stereotype.Controller;

import   org.springframework.web.bind.annotation.RequestMapping;

 

/**

 * 1.利用Controller註解聲明是一個控制器。

 * 2.利用@RequestMapping配置URL和方法之的映射

 * 3.ViewResolverBean配置,返回值爲index明我面放置的路徑/WEB-INF/classes/views/index.jsp

 *

 */

@Controller //1

public class HelloController {

        @RequestMapping("/index") //2

        public String hello() {

                return "index"; //3

        }

}

 

 

  1. 運行

    http://localhost/hightlight_springmvc4/

                                                 

Spring MVC的常用註解

1.點睛

Spring MVC常用以下幾個註解。

1@Controller

@Controller註解在類上,表明這個類是Spring MVC裏的Controller,將其聲明爲Spring的一個BeanDispatcher Servlet會自動掃描註解了此註解的類,並將Web請求映射到註解了@RequestMapping的方法上。這裏特別指出,在聲明普通Bean的時候,使用@Component@Service@Repository@Controller都組合了@Compoment元註解;但在Spring MVC聲明控制器Bean的時候,只能使用@Controller

2@RequestMapping

@RequestMapping註解是用來映射web請求、處理類和方法的。@RequestMapping可註解在類或方法上。註解在方法上的@RequestMapping路徑會繼承註解在類上的路徑,@RequestMapping支持Servletrequestresponse作爲參數,也支持對requestresponse的媒體類型進行配置。

3@ResponseBody

@ResponseBody支持將返回值放在response體內,而不是返回一個頁面。外面在很多基於ajax程序的時候,可以以此註解返回數據而不是頁面;此註解可放置在返回值前或者方法上。

4@RequestBody

@RequestBody允許request的參數在request體中,而不是直接連接在地址後面。此註解放置在參數前。

5@PathVariable

@PathVariable用來接收路徑參數,如/news/001,看接收001作爲參數,此註解放置在參數前。

6@RestController

@RestController是一個組合註解,組合了@Controller@ResponseBody,着就意味着當你只開發一個和頁面交互數據的控制的時候,需要使用此註解。若沒有此註解,要想實現上述功能,則需自己在代碼中加@Controller@ResponseBody兩個註解。

Spring Boot快速搭建

http://start.spring.io

  1. 定製Banner

    Spring Boot啓動的時候會有一個默認圖案,在src/main/resources下新建一個banner.txt,通過改變文件內容可以改變啓動圖案。(http://patorjk.com/software/taag

Spring Boot的配置文件

Spring Boot使用一個全局的配置文件Application.properties放置在src/main/resources目錄或者類路徑的/config下。

#端口號修改爲80

server.port=80

#將默認的訪問路徑/修改爲/helloboot

server.context-path=/helloboot

使用XML配置

Spring Boot提倡零配置,即無xml配置,但是在實際項目中,可能有一些特殊的要求你必須使用xml配置,這時我們可以通過Spring提供的@ImportResource來加載xml配置。例如:

@ImportResources({“classpath:some-context.xml”,”classpath:another-context.xml”})

常規屬性配置

通過@PropertySource指明properties文件的位置,然後通過@value注入值。在SpringBoot中,我們只需要在application.properties定義屬性,直接使用@Value注入即可。

 

Thymeleaf基礎知識

Thymeleaf是一個java類庫,他是一個xml/xhtml/html5的引擎末班,可以作爲MVCweb應用的view層。Thymeleaf還提供了額外的模塊與Spring MVC集成,所以我們可以使用Thymeleaf完全替代JSP

  1. 引入Thymeleaf

    下面的代碼是一個基本Thymeleaf模版頁面,在這裏我們引入Bootstrap(作爲樣式控制)和jQuaryDom操作),當然他們不是必須的。

    代碼解釋

  2. 通過xmlns:th=http://www.thymeleaf.org 命名空間,將鏡頭頁面轉換爲動態視圖。需要進行動態處理的元素使用“th爲前綴;

  3. 通過“@{}“引用web靜態資源,這在jsp下是極易出錯的。

  4. 訪問model中的數據

    通過“${}“訪問model中的屬性,這和JSP極爲相似。

    代碼解釋

    1)使用<span th:test=”${singelPerson.name}”></span>訪問model中的singlePersonname屬性。注意:需要處理的動態內容需要加上“th”前綴。

  5. JavaScript中訪問model

    在項目中,外面經常需要在javaScript訪問model中的值,在Thymeleaf裏實現代碼如下:

    <title>Insert title here</title>

    <script th:inline="javascript">

            var single=[[${singlePerson}]];

    </script>

    代碼解釋

    ·通過th:inline=”javascript”添加到script標籤,這樣JavaScript代碼即可訪問model中的屬性;

    ·通過”[[${}]]”格式獲得實際的值。

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章