Spring boot jsp版入门配置程序-maven工程源码

最近很多应用都慢慢转向了微服务,而在微服务里面很多都用到了spring boot 框架,其实作为这个框架来说,还是比较简单的。官方的文档也写得比较详细。至于微服务这种模式,其实多年前就在用了,多个系统独立运行,病提供接口给其他系统使用,系统间通过RPC等方式进行交互数据。作为这种思想,已经没什么新意。但最近流行的框架,还是得看看,要不然以后别人问起来,都还没使用过,就太OUT了。

这是一个入门的例子,没什么技术含量。记录下来的原因就是为了记录我这个周末没有白过,花了我两个小时的时间,一边看文档,一边自己弄,其实完全可以自己在网上下载一个例子,会更快,但个人习惯不喜欢那样。

用到的东西:
Spring Boot 1.4.2.RELEASE
Spring 4.3.4.RELEASE
Tomcat Embed 8.5.6
Maven 3
Java 8

工程代码结构:


POM 文件如下:
程序代码 程序代码

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yihaomen</groupId>
  <artifactId>SpringBoot-001</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringBoot-001 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
    </parent>

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

    <dependencies>

        <!-- This is a web application -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Tomcat embedded container-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- JSTL for JSP -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <!-- Need this to compile JSP -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Need this to compile JSP,
            tomcat-embed-jasper version is not working, no idea why -->
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- Optional, test for static content, bootstrap CSS-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>3.3.7</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <!-- Package as an executable jar/war -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


初始化Application, 作为WEB工程来说,SpringBootServletInitializer 把这个web工程当做传统的WAR来部署,Application.java
程序代码 程序代码

package com.yihaomen.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

这个类原则上要放在最外层,最好在controller,service,repository的外层。可以参考上面的工程结构。

一个用来测试的 Controller :
程序代码 程序代码

package com.yihaomen.springboot.controller;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    // 注入配置文件
    @Value("${welcome.message:test}")
    private String message = "Hello, You are my world";

    @RequestMapping("/")
    public String welcome(Map<String, Object> model) {
        model.put("message", this.message);
        return "hello";
    }
    
    @RequestMapping("/say")
    @ResponseBody
    public List<String> say() {        
        List<String> list = new ArrayList<String>();
        list.add("summer");
        list.add("cool");
        return list;
    }

}


spring boot静态资源文件的使用:
1. 对于 CSS 或者 Javascript, 放到 /src/main/resources/static/ 文件夹里面。
2. 对于 配置文件,直接放到 /src/main/resources/ 文件夹下。
3. 对于JSP 页面,放到 src/main/webapp/WEB-INF/jsp/ 下。

其实这是一种约定优于配置的东西,注意在配置文件里面配置的东西:
程序代码 程序代码

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

welcome.message: This is a Hello World Test.


静态资源文件配置之后,注意在jsp页面的用法,特别 js, css的应用路径。可以参考例子hello.jsp
程序代码 程序代码

<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">
<head>

    <!-- Access the bootstrap Css like this,
        Spring boot will handle the resource mapping automcatically -->
    <link rel="stylesheet" type="text/css" href="webjars/bootstrap/3.3.7/css/bootstrap.min.css" />

    <!--
    <spring:url value="/css/main.css" var="springCss" />
    <link href="${springCss}" rel="stylesheet" />
     -->
    <c:url value="/css/main.css" var="jstlCss" />
    <link href="${jstlCss}" rel="stylesheet" />

</head>
<body>

    <nav class="navbar navbar-inverse">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="#">Spring Boot</a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#">Home</a></li>
                    <li><a href="#about">About</a></li>
                </ul>
            </div>
        </div>
    </nav>

    <div class="container">

        <div class="starter-template">
            <h1>Spring Boot Web JSP Example(Using Bootstrap JS)</h1>
            <h2>Message: ${message}</h2>
        </div>

    </div>

    <script type="text/javascript" src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</body>

</html>


运行,就是比较简单了:
1. 直接当做java 工程直接运行都可以,如果在Eclipse 里面,找到Application.java, 然后run as --> java application就可以了。
2. 你也可以用maven 来运行:mvn spring-boot:run  (这个时候,要切换到工程目录下运行)
3. 先用mvn package 打成 war包,然后再运行:java -jar target/springboot-001.0.1.war

检查运行效果,在浏览器输入:http://localhost:8080



注意,这是在达成war包的情况下,jsp页面才能这么用,如果jar 包是不可以用的,切记。在后面有时间继续研究如果是打成jar包的情况怎么处理。

最后,附上源代码,maven 工程:

下载文件 spring boot jsp sample download


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 yihaomen 于 2017-03-12 11:12 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: spring-boot
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复www.liuhaihua.cn[2017-03-14 11:20 PM | del]
我们最近在尝试这个框架
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.