zoukankan      html  css  js  c++  java
  • 七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置

    1.创建JSP目录

    在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图:

    然后再改文件夹下面我们创建JSP文件:

    大家在使用IDEA 的new菜单创建JSP时发现菜单里面根本没有JSP。。。这就很尴尬了吧。你知道为啥吗?因为IDEA很专业的,IDEA项目下面每一种文件夹都代表不同的功能,现在new的菜单没有JSP说明IDEA根本不认为这里应该创建JSP,那怎么办呢?按照下图设置:

    Ctrl+Alt+Shift+S快捷键打开设置项目配置的页面:

    上面的操作就是告诉IDEA:喂!老I,那个webapp是搞web的,她得创建JSP!。。。

    执行上面的操作之后细心的同学会发现,webapp文件夹被“戳了个洞”,标志她是web文件夹了:

    创建完成jsp之后:

    2.application.properties配置Jsp信息

    application.properties为全局配置文件,里面可以设置很多信息,比如设置日志、设置缓存、设置Spring、Spring SESSION等信息,我们本文只需要设置JSP的目录文件,以及文件后缀,代码如下:

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

    更多application.properties设置信息,查看官方文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties

    3.pom.xml添加JSP配置

    在pom.xml需要添加3个组件:

    • spring-boot-starter-web (用于运行web项目:注意如果我们创建项目时已经选择web项目那么这个依赖不用再添加)
    • jstl (JavaServer Pages Standard Tag Library,JSP标准标签库,用于程序中解析JSP)
    • tomcat-embed-jasper (内置tocat对Jsp支持的依赖,用于编译Jsp)

    具体代码如下:

    <!--web支持-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!--JavaServer Pages Standard Tag Library,JSP标准标签库-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    
    <!--内置tomcat对Jsp支持的依赖,用于编译Jsp-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    注意:tomcat-embed-jasper的scope(作用域)值为provided,表示打包的时候不用打包进去,其他设备会提供,如果打包进去会和外部Tomcat提供的jar冲突,导致项目启动失败。

    scope(作用域)值列表代表含义解释如下:
    • compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
    • test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
    • runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
    • provided:打包不会包含进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
    • system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

    4.编写Spring MVC代码

    经过前3步的配置,项目配置部分已经完成的差不多了,接下来就是代码的编写了,代码的编写和Spring MVC一样,分为两部分Java类编写与标识注解JSP模板创建与编写。为了更好的演示Spring Boot 的功能,我们会尽可能的简化业务逻辑,在这个示例中我们创建一个Dog类,设置返回对象user="miyue",在页面输出标签即可。

    Dog.java代码

    @Controller
    @RequestMapping("/dog")
    public class Dog {
        @RequestMapping("/houru")
        public ModelAndView houru() {
            ModelAndView modelAndView = new ModelAndView("/hello");//设置对应JSP的模板文件
            modelAndView.addObject("name", "miyue");
            return modelAndView;
        }
    }

    Spring MVC注解解读

    • @Controller 标识在一个类上,标识的类就是Spring MVC的控制器类,分发处理器会扫描使用了该注解的类是否使用了@RequestMapping 注解,@Controller只是定义了一个控制器类,只用使用了@RequestMapping 注解,才是真正处理请求的处理器;
    • @RequestMapping 标识在类或者方法上,用来处理请求地址的注解,一共有6个属性:
      1. value 对应请求的实际地址
      2. method 请求的类型:get、post、put、delete 等,例如:@RequestMapping(value = "/test", method = RequestMethod.GET)只接受前台的get形式请求,method不写的情况下,接收所有类型的请求。关于post和get的相关描述和区别可以参考鄙人另外一坨博客:https://www.cnblogs.com/luzhanshi/p/10923326.html
      3. consumes 指定请求上的内容类型,比如application/json、text/html等
      4. produces 指定返回的数据类型,类型必须是Request Headers中accept包含的类型
      5. params 过滤请求,只有请求中包含某个参数,才会执行,比如@RequestMapping(value = "",params = "flag"),只有参数中包含flag才会执行,不然不能访问,http://localhost:8080/cat?true=flag这个地址是访问不到的,正确的地址是http://localhost:8080/cat?flag=true才可以正常访问
      6. headers 和params类似,只有请求headers里面包含某个key才可以访问方法

    hello.jsp代码:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    ${name}
    </body>
    </html>

    这个jsp只做了一件事,把java类里面的${hi}标签的值显示出来。

    5.运行程序

    方法1:SpringBoot自带启动类运行

    注意:SpringBoot项目默认启动之后的访问地址是localhost:8080+我们的Controller类的映射地址+方法映射地址

    方法2:IDEA集成tomcat启动项目:

    a,下载一个全新的tomcat

    b,idea集成该tomcat

    c,启动tomcat

     

     

    注意,上面介绍的两种启动方式,只要保证端口不冲突的情况下,可以同时启动同一个项目

  • 相关阅读:
    php多态
    ssl certificate problem: self signed certificate in certificate chain
    test plugin
    open specific port on ubuntu
    junit vs testng
    jersey rest service
    toast master
    use curl to test java webservice
    update folder access
    elk
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/10923867.html
Copyright © 2011-2022 走看看