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

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

最新文章

  1. Centos中tomcat7指定jdk
  2. Java中StringBuilder的清空方法比较
  3. 命令行查看linux发行版版本信息
  4. 转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360
  5. 传染病控制(codevs 1091)
  6. Ant学习-001-ant 基础知识及windows环境配置
  7. WPFの exit()和close()两个方法的用法
  8. Android 滑动效果高级篇(七)—— 华丽翻页效果
  9. Grails架设和配置--起步
  10. c/c++与java------之JNI学习(一)
  11. zookeeper-3.4.5安装&amp;3台机器安装之后 ./zkServer.sh status 之后会显示“Error contacting service. It is probably not running.”的解决办法
  12. dedecms_分页技术
  13. Install Docker Compose
  14. 关于Unsupported major.minor version 52.0解决办法(再次回顾)
  15. csharp: using HtmlAgilityPack and ScrapySharp reading Url find text
  16. MQTT 学习记录
  17. IE6不兼容hover已解决
  18. CTF-练习平台-Misc之 听首音乐
  19. oc引入头文件
  20. [php]apache的权限解释

热门文章

  1. 简单告诉你-&quot;border:0&quot;与&quot;border:none&quot;的区别
  2. N3_容易混淆的语法
  3. 更新 | 2019年9月计算机二级office模拟题库
  4. Delphi 源代码生成器
  5. sed 的用法
  6. 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
  7. git 分支 版本回退
  8. DevExpress WPF v19.1新版亮点:Scheduler等控件新功能
  9. ZROI 19.08.01 生成函数方法
  10. 《Head First 软件开发》阅读一