JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。从开始学习Java Web应用,第一个学习的就是JSP和Servlet,我们就不过多介绍。直接进入Spring Boot对其集成使用的部分。
在使用之前,首先明确一下,SpringBoot使用内嵌的servlet容器,对jsp的支持不是很好,而且官方也不建议使用jsp。就本人而言当使用SpringBoot之后,基本上也放弃了jsp的使用。
但大家可能由于项目或历史原因,还在使用jsp的话,这篇文章给大家讲解一下如何集成于SpringBoot当中。
像通常一样创建SpringBoot项目,勾选web和Lombok。由于要存放jsp的文件,因此需要在main目录下新建webapp/WEB-INFjsp。目录结构如下:
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── secbro2
│ │ │ ├── SpringbootJspApplication.java
│ │ │ └── controller
│ │ │ └── HelloWorldController.java
│ │ ├── resources
│ │ │ ├── application.properties
│ │ │ ├── static
│ │ │ └── templates
│ │ └── webapp
│ │ └── WEB-INF
│ │ └── jsp
│ │ └── hello.jsp
还需添加支持jstl和内置tomcat容器的jsp依赖模块。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入jstl-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--内嵌的tomcat支持模块-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
application.properties中指定视图文件的前缀和后缀。
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
通过简单示例,将请求参数返回页面。
@Controller
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
}
JSP页面简单展示效果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello ${name}!</title>
</head>
<body>
<h2 class="hello-title">Hello ${name}!</h2>
</body>
</html>
通过浏览器访问:http://localhost:8080/hello?name=Tom
页面显示:
Hello Tom!
至此完成最简单的集成。
但是在真正的使用过程中会发现很多问题,比如最常见的运行 java -jar xx.jar时访问页面404的问题。关于该问题的几种解决方案,会在下篇文章中进行详细的解析。