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,填写注册信息,如下:

点击注册按钮,跳转页面如下:

测试成功:)

posted @ 2024-07-11 15:02  Binge-和时间做朋友  阅读(262)  评论(0编辑  收藏  举报