SpringBoot 整合 JSP 入门
步骤1:IDEA 新建 Maven 项目
打开 IDEA,选择 Maven Archetype
模版创建项目,这里 Archetype 请选择 web 项目模版,如下:
步骤2:设置工程 maven 安装目录
打开File->Settings
,找到 Maven 安装目录配置,将其设置为自己的 Maven 安装路径和配置文件路径,如下:
注意:如果直接使用 IDEA 内置的 Maven,该 Maven 将去国外中央仓库服务器下载依赖的 Jar 包,不仅下载龟速而且很容易出错。之所以要使用自己安装的 Maven ,原因是可以将 settings.xml 配置文件中的仓库地址设置为国内阿里云镜像,下载速度将快如闪电。
关于配置详情,查看我的这篇博客 :Maven 阿里云镜像配置
步骤3:pom.xml 中添加 maven 依赖
打开工程中的 pom.xml 文件,添加 maven 相关依赖,pom.xml 文件完整内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.binge</groupId>
<artifactId>SpringBootJspDemo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringBootJspDemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--Spring Boot 项目的父级依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.15</version>
<relativePath/>
</parent>
<dependencies>
<!-- springboot 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- servlet 依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- tomcat 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- jstl 依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- 使用jsp引擎,springboot内置tomcat没有此依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- lombok 依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
<build>
<finalName>SpringBootJspDemo</finalName>
</build>
</project>
步骤4:创建Java源文件工程目录
鼠标右键点击 src/main
工程目录,弹出下拉框选择 New
,弹出下拉框选择 Directory
,如下:
接着弹出对话框,点击 java
,如下:
这样就添加了 src/main/java
目录,如下:
步骤5:创建 SpringBoot 工程启动类
新建 com.binge.SpringBootJspApplication.java 类,如下:
内容如下:
package com.binge;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Description SpringBoot 启动类
*/
@SpringBootApplication
public class SpringBootJspApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootJspApplication.class, args);
}
}
运行该启动类,启动 SpringBoot 工程,如下:
以上信息中可以看到 SpringBoot 的启动图标,还可以看到 SpringBoot 内置的 Tomcat 也启动了,监听端口默认是 8080
步骤6:创建 SpringBoot 全局配置文件
在工程的 resources
目录下新建 SpringBoot 全局配置文件 application.properties
,如下:
配置文件内容如下:
#配置JSP视图解析器路径前缀
spring.mvc.view.prefix=/
#配置JSP视图解析器路径后缀
spring.mvc.view.suffix=.jsp
注意:这两个配置的目的就是告诉 SpringBoot 在工程的那个路径可以找到 jsp 文件
步骤7:测试 index.jsp 页面
启动 SpringBoot 工程,浏览器输入:localhost:8080/index.jsp
,显示如下:
SpringBoot 整合 JSP 成功:)
步骤8:实现注册功能
1. 新建 register.jsp 注册页面
在 webapp
目录下新建 register.jsp
注册页面,如下:
页面内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<form action="/user/register.do" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="email">电子邮件:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="phone">电话号码:</label>
<input type="tel" id="phone" name="phone">
</div>
<div>
<button type="submit">注册</button>
</div>
</form>
</body>
</html>
浏览器输入:localhost:8080/register.jsp
,显示如下:
2. 创建用户数据模型
新建 com.binge.model.User.java 类,如下:
内容如下:
package com.binge.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description 用户数据模型
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String username;
private String password;
private String email;
private String phone;
}
lombok 插件
这里使用了 lombok 插件,它的作用是通过注解的方式自动实现 getter/setter、toString以及构造器的代码,可以简化开发,这个插件是 Java 程序员的最爱哈
@Data 注解:自动生成 getter/setter、toString 对应的代码
@AllArgsConstructor:自动生成有参构造器
@NoArgsConstructor:自动生成无参构造器关于该插件的详情,可以看我的这篇博客:Lombok 插件安装和使用
3. 创建用户页面处理器
新建 com.binge.controller.UserController.java 类,如下:
内容如下:
package com.binge.controller;
import com.binge.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
/**
* @Description 用户页面处理器
*/
@Controller //页面处理器注解
public class UserController {
@RequestMapping("/user/register.do")
public String registerHandle(User user, HttpServletRequest request,HttpSession session) {
System.out.println(user);
session.setAttribute("user", user); //将用户信息保存到session中
return "registerOk"; //注册成功页面
}
}
- @Controller 注解:声明 UserController 类为页面处理器,可以处理来自浏览器的表单请求
- @RequestMapping("/user/register.do") 注解:映射表单请求与处理方法,类似于@WebServlet 注解,即让
registerHandle
方法处理注册页面的提交的表单请求 - registerHandle 方法参数 user:SpringBoot 请求参数绑定特性可以自动将表单的数据绑定到 user 模型数据中,大大简化了开发
- registerHandle 方法参数 request(可选):这个参数想必很熟悉,和 Servlet 中的 doGet 和 doPost 里的参数一样,表示请求对象(这是可选参数,需要时可以添加,非常灵活)
- registerHandle 方法参数 session(可选):这个参数想必也很熟悉,和 Servlet 中一样的概念,session 表示会话(这也是可选参数,需要时可以添加,非常灵活)
- registerHandle 方法返回值:返回的是跳转的 JSP 页面名称。之前在全局配置中设置有 JSP 页面的路径前缀和后缀,这样拼接在一起就可以找到跳转的 JSP 在工程中的位置了。
4. 创建注册成功页面
在 webapp
目录下新建 registerOk.jsp
文件,如下:
内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册成功</title>
</head>
<body>
<h3>用户名:${user.username}</h3>
<h3>密码:${user.password}</h3>
<h3>邮箱:${user.email}</h3>
<h3>手机号:${user.phone}</h3>
</body>
</html>
5. 测试注册功能
浏览器输入:localhost:8080/register.jsp
,填写注册信息,如下:
点击注册
按钮,跳转页面如下:
测试成功:)