zoukankan      html  css  js  c++  java
  • Spring Boot整合模板引擎jsp

    jsp也算是一种模板引擎吧。整合jsp前,先说一下运行SpringBoot项目的几种方式

    1. 运行SpringBoot项目的几种方式

    1.1 使用内嵌Tomcat运行项目

    1. 在IDE中右键运行启动类,也就是直接直接运行Appliction启动类中的main方法
    2. 使用mvn spring-boot:run
    3. 打成jar包,使用java -jar xxx.jar
    4. 打成war包,使用java -jar xxx.war

    1.2 内嵌Tomcat的属性配置

    Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties 配置类中做了定义 ,我们只需要在application.properties中配置覆盖默认配置。

    常用配置

    #配置程序端口,默认为8080
    server.port=8080
    #用户绘画session过期时间,以秒为单位
    server.session.timeout=
    # 配置默认访问路径,默认为/
    server.context-path=
    
    # 配置Tomcat编码,默认为UTF-8
    server.tomcat.uri-encoding=UTF-8
    # 配置最大线程数
    server.tomcat.max-threads=1000
    

    1.3 使用外部Tomcat部署war包

    将Spring Boot导出人war包直接放在Tomcat中部署,如果是使用的jsp作为模板引擎,也就是接下来做的。还需要做一些额外配置,具体配置继续看下面的操作。

    1.4 总结

    总结一下,运行一个Spring Boot项目至少有5种方法,下面就让jsp作为模板引擎的Spring Boot项目在这5种启动方式下正常运行吧。

    2. 使用jsp作为模板引擎

    项目结构如下:

    2.1 引入依赖

    pom.xml

    <!--WEB支持-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!--jsp页面使用jstl标签-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    
    <!--用于编译jsp-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    
    <!-- 部署到外部容器tomcat时用到 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

    注意: tomcat-embed-jasper这个依赖如果设置依赖范围为provided在第1种第3种方式运行的进修会报错,用默认依赖范围就好,默认为compile,在使用Intellij Idea按照spring boot项目启动时,有如下发现,所以设置成provided就好,官方也推荐使用provided

    2.2 设置打包方式

    pom.xml

    <!-- 打成jar包 -->
    <packaging>jar</packaging>
    <!-- 打成war包 -->
    <packaging>war</packaging>
    

    不同启动方式下的打包方式

    • IDE中执行main方法 都可以
    • 执行 mvn spring-boot:run 都可以
    • 执行java -jar xxx.jar jar包
    • 执行java -jar xxx.war war包
    • 外部容器 war包

    2.3 application.properties配置

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

    2.4 编写控制器

    编写一个测试用的控制器,其他引用类参考项目代码

    @Controller
    public class WelcomeController {
        @GetMapping("/")
        public String index(ModelMap model) {
            System.out.println("demo/jsp/index");
            DemoUser user = new DemoUser();
            user.setName("张三abc");
            user.setPassword("password-zhangsan");
            user.setBirthday(new Date());
            user.setDesc("我的描述");
            user.setId(1001L);
            model.addAttribute("user", user);
    
            model.addAttribute("currentTime", new Date());
            return "welcome";
        }
    }
    

    2.5 编写jsp页面

    略,参考代码 webapps/WEW-INF/jsp/welcome.jsp

    2.6 编写启动类

    @SpringBootApplication
    public class JspApplication extends SpringBootServletInitializer {
        // war启动 署到外部容器tomcat需要:
        // 1)要实现SpringBootServletInitializer
        // 2)覆盖该方法
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(JspApplication.class);
        }
    
        // jar启动
        public static void main(String[] args) {
            SpringApplication.run(JspApplication.class, args);
        }
    }
    

    2.7 验证是否起作用

    404

    正常访问

    3. 小结

    项目源码 https://gitee.com/yysue/tutorials-java

    5种启动方式小结:

    1. 内嵌容器,intellij idea中执行启动类main方法
      1. 单模块项目时,可正常访问
      2. 多模块项目时,404,将jsp文件移到如下目录结构,也可正常访问
        这个帖子子就描述了这个问题,给出的方案是部署到外部容器中
    2. 内嵌容器,java -jar xxx.jar
      1. 按如下目录配置执行,可正常访问
      2. 其他情况下执行,404
    3. 内嵌容器,java -jar xxx.war,可正常访问
    4. 内嵌容器,mvn spring-boot:run,可正常访问
    5. 外部容器,war包放到tomcat的webapps目录下,可正常访问

    4. 参考

  • 相关阅读:
    AGC005D ~K Perm Counting
    运行python脚本后台执行
    java枚举类型
    java可变参数长度
    java 泛型数组列表
    java抽象类
    java final使用
    java继承
    java 对象
    java 重载
  • 原文地址:https://www.cnblogs.com/okokabcd/p/9188446.html
Copyright © 2011-2022 走看看