zoukankan      html  css  js  c++  java
  • springboot开发之使用外部servlet容器及对jsp的支持

    一般而言,springboot是使用自己内嵌的servlet容器,比如tomcat等等,而且默认的模板引擎是thymeleaf,那么如何让springboot使用外部的servlet容器并支持对jsp的使用呢?

    接下来,我们使用编辑器idea来看一下。

    1、新建一个springboot项目时选择war

    加入启动器web

    点击next,然后点击finish。

    此时目录结构如下:

    并没有之前的web项目的/webapp/WEB-INF/ 

    2、创建web项目对应的目录结构

    点击idea中右上角的这个按钮:

    我们可以看到:

    我们双击红色文字:弹出

    点击OK即可。

    我们同时注意到上面的:

    选择web.xml,弹出

    我们将路径修改为自己:项目下srcmainwebappWEB-INFweb.xml,点击OK即可。最后点击OK。

    此时就会生成web项目相关文件:

    接下来,我们点击:

    选择:

    我们给该服务起个名:tmcat8,同时引入自己本地的文件,选择Configure

    之前添加了tomcat7,这次我们选择tomcat8 

    点击OK,我们再将注意力转到Deployment:选择

    选择要部署的war包:

    点击OK。最后点击Apply,点击OK。

    然后我们就可以启动我们刚刚配置的tomcat8了。

    我们在浏览器中 :

    说明是成功的了。

    3、下面我们再编写页面测试一下:

    我们在webapp下新建一个hello.jsp,并在浏览器中输入localhost:8080/hello.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2020/2/5
      Time: 13:40
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>hello</h1>
    </body>
    </html>

    成功得到相应界面。 

    我们再在hello.jsp中添加跳转的:

    <a href="/test">test</a>

    在application.properties配置文件中配置视图解析器

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

    在WEB-INF下新建一个views文件夹,向文件夹里面新建一个success.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2020/2/5
      Time: 13:47
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>success</h1>
        <h4>${username}</h4>
    </body>
    </html>

    在com.gong.springboot下新建一个controller包,在该包下新建一个TestController.java

    package com.gong.springboot.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class TestController {
        @RequestMapping("/test")
        public String test(Model model){
            model.addAttribute("username","tom");
            return "views/success";
        }
    }

    最后我们看下目录结构:

    启动服务器:

    点击test:

    跳转到success.jsp ,成功取得相应信息。

    至此在springboot中使用外部servlet容器以及对jsp的支持就完成了。

    关键说明:

    (1)必须新建一个war项目

    (2)pom.xml中将嵌入式的tomcat指定为provided,说明目标环境已经有了。引用外部tomcat时系统会为我们自动导入。

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

    (2)必须有编写一个SpringBootServletInitializer的实现类,并调用configure方法:创建项目时已经有了。

    package com.gong.springboot;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    public class ServletInitializer extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(ServletJspApplication.class);
        }
    
    }

  • 相关阅读:
    leetcode 293.Flip Game(lintcode 914) 、294.Flip Game II(lintcode 913)
    Android开发 Fragment中调用startActivityForResult返回错误的requestCode
    AndroidStudio 编译异常java.lang.OutOfMemoryError: GC overhead limit exceeded
    Android 控制ScrollView滚动到底部
    安卓Textview的getLineCount返回0
    指定经纬度与数据库多条经纬度进行距离计算
    GPUImage 内置滤镜解析
    ViewPager中使用PhotoView时出现pointerIndex out of range异常
    “You must not call setTag() on a view Glide is targeting” 解决
    android studio出现Error:compileSdkVersion android-x requires compiling with JDK 7问题
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12263627.html
Copyright © 2011-2022 走看看