Spring Boot 笔记 三 (Web开发)

一, web开发支持

   Spring-boot-starter-web提供了嵌入tomcat及SpringMVC的依赖

二, Thymeleaf模板引擎

 1),基础知识

     Thymeleaf是java的一个类库,是一个xml/xhtml/html5的模板引擎,可作为view层

      可用于替换jsp

  2), 引入

     <html xmlns:th="http://www.thymeleaf.org"><!-- 1-->

         <meta content="text/html;charset=utf-8"/>

        <link th:src="@{xx/xx/bootstrap.css}" rel="stylesheet" />

       <script th:src="@{xx/xx/bootstrap.js}"></script>

    </html>

      备注:1),引入命名空间

               2), 通过"@{}"引入静态资源,在jsp下极易出错

  3),  访问model中的数据

     通过"${}"访问web中的属性

    e.g. <span th:text="${person.name}"></span>

  4), model中的数据迭代

    e.g. <li  th:each="person:${people}">

              <span th:text="${person.age}"></span>

          </li>

  5), 数据判断

    支持<,>==,!=,等springEL表达式

  e.g. <div th:if="${not #lists.isEmpty(people)}"></div>

  6). javascript中访问model

   e.g,

       <script th:inline="javascript">

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

       </script>

     备注: 1),通过th:inline="javascirpt" 添加到script标签中

               2), 使用[[${}]] 获取值

               3), 更多: http://www.thymeleaf.org

  7), 与springMVC的集成

     thymeleaf 定义了2个支持类:

            org,thymeleaf.spring4.view.ThymeleafView

            org.thymeleaf.spring4.view.ThymeleafViewResolver(默认)

    SpringTemplateEngine:用来在springMVC下使用 Thymeleaf模板引擎

   TemplateResolver: 用来设置模板引擎(前缀,后缀)

   e.g.

    @Bean

   public TemplateResovler templateResolver(){

    TemplateResovler  templateResolver = new ServletContextTemplateResolver();

     templateResolver.setPrefix("/WEB-INF/templates");

     templateResolver.setSuffix(".html");

     templateResolver.setTemplateMode("HTML5");

    return templateResolver;

   }

    @Bean

    public SpringTemplateEngine templateEngine(){

       SpringTemplateEngine templateEngine = new templateEngine();

       templateEngine.setTemplateResolver(templateResolver());

      return templateEngine

    }

   @Bean

   public ThymeleafViewResolver thymeleafViewResolver(){

      ThymeleafViewResolver thymeleafViewResolver  = new ThymeleafViewResolver();

       ThymeleafViewResolver.setTemplateEngine(templateEngine());

        return thymeleafViewResolver;

    }

  8). Spring Boot的支持

  Spring Boot通过org.springframework.boot.autoconfigure.thymeleaf包对Thymeleaf自动装配.

   通过ThymeleafProperties来配置thymeleaf,只需在application.properties中以spring.thymeleaf开头来配置

  ThymeleafProperties源码, 后补

    application中示例:

       #thymeleaf start

       spring.thymeleaf.mode=HTML5

       spring.thymeleaf.encoding=UTF-8

       spring.thymeleaf.content-type=text/html

       #开发时关闭缓存,不然没法看到实时页面

       spring.thymeleaf.cache=false

       #thymeleaf end

三, Web相关配置

  1, spring boot提供的自动配置

     1),自动配置ViewResolver

       ContentNegotiatingViewResolver: 特殊的ViewResolver,拥有最高优先级

                                                              不是自己处理,而是给其他的viewResolver处理

       BeanNameViewResolver: 去查找Bean返回字符串的view来渲染视图

       InternalResourceViewResolver:  主要通过设置前缀,后缀,及控制器中方法来返回视图名

    2), 自动配置静态资源

    在自动配置类addResourceHandlers方法中定义了以下静态资源的自动配置

      类路径文件: 把/static, /public, /resources, /META-INF/resources里的静态文件直接映射/**.

                           可以通过localhost:8080/**来访问

      webjar: 把webjar的/META-INF/resources/webjars/的静态文件映射为/webjars/**

   3), 自动配置Formatter和Converter 

   4), 自动配置HttpMessageConverters

   5), 静态首页的支持

      静态首页index.html放置目录.META-INF/resources/,resources/, public/,statuc/ 都可以.

  6), 接管spring boot的web配置

   如果默认配置不符合需求,可通过@Configuration,@EnableWebMvc来实现自己的配置

   7), 注册Servlet, Filter, Listener

    声明为 spring bean即可达到效果. 即: @Bean

四, Tomcat配置

   关于Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties做了定义.

  1, 配置Tomcat

  applicaiton.properties添加如下配置

    server.port=8080 #默认为8080

    server.session-timeout=600  #过期时间,以秒为单位

    server.context-path= #配置访问路径,默认为/

    server.tomcat.uri-encoding= #配置tomcat的编码,默认UTF-8

    server.tomcat.compression= #tomcat是否开启压缩,默认为关闭off

  .....

   2, 代码配置tomcat

    注册一个实现EmbeddedServletContainerCustomizer接口的Bean

   3, 替换tomcat

     在pom.xml中,将spring-boot-starter-web的依赖由spring-boot-starter-web改为相应的

    e.g. spring-boot-starter-jetty  (undertow)

  3, SSL(Secure Sockets Layer) 配置

     1),生成证书:   可用JDK自带的keytool生成.

      e.g. keytool -genkey -alias tomcat  然后按提示操作

     2), spring boot 配置SSL

          server.port=8443

          server.ssl.key-store=.keystore

          server.ssl.key-store-password=123

          server.ssl.keyStoreType=JKS

     3), http转https

       配置TomcatEmbeddedServletContainerFactory,并添加Tomcat的connector来实现

五, Favicon配置

 关闭:  spring.mvc.favicon.enabled=false

设置自己的Favicon: 将自己额favicon.ico(文件名不能动),放在类路径根目录(/, resources/ public/, static)

                                 等一些目录下都可以

六, WebSocket

1, 准备: 添加websocket依赖

2, 广播式

  //todo

3,点对点

  /todo

七, 基于Bootstrap和AngularJs的应用 

 bootstrap 下载地址: http://getbootstrap.com/getting-started/

页面组件支持: http://getbootstrap.com/components

大量js插件: http://getbootstrap.com/javascript/

angularJs: https://angularjs.org/

 示例见网盘:projects/springboot

猜你喜欢

转载自ldaolong.iteye.com/blog/2405682