详解SpringBoot集成jsp(附源码)+遇到的坑

接下来我将为你详细讲解 “详解SpringBoot集成jsp(附源码)+遇到的坑”的完整攻略,并且提供两条示例。

一、前言

SpringBoot的主要目标是简化Spring应用程序的开发以及部署。在实际开发中,我们常常需要集成jsp,但是SpringBoot默认情况下是不支持jsp的,需要我们进行特殊的配置,下面将详细讲解SpringBoot集成jsp的步骤。

二、SpringBoot集成jsp的基本步骤

1. 添加spring-boot-starter-web依赖

在pom.xml中添加 spring-boot-starter-web 依赖,如下所示。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. 配置application.properties

src/main/resources目录下新建application.properties文件,添加如下配置。

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

3. 创建Controller

创建一个Controller类,用于处理请求。

@Controller
public class HomeController {
    @RequestMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "欢迎访问Spring Boot JSP页面");
        return "home";
    }
}

在这个类上添加@Controller注解,表明这是一个Controller组件,并添加一个访问/home路径的@RequestMapping注解。在home方法中,将一个message信息赋值给Model,并返回"home"字符串,表示指向页面名称。

4. 创建jsp视图页面

src/main/webapp/WEB-INF/jsp目录下,新建一个home.jsp页面,包含如下内容:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring Boot - 集成 JSP 示例</title>
</head>
<body>
    <h1>${ message }</h1>
</body>
</html>

这个页面是一个简单的jsp页面,使用el表达式${ message }显示从Controller中传递过来的值。

5. 启动应用程序

运行SpringBoot应用程序,启动成功后,访问http://localhost:8080/home即可看到页面效果。

三、遇到的坑

在实际开发中,如果直接按照上述步骤操作可能会遇到以下问题:

1. Tomcat Embed Jasper not supporting EL

运行应用后,可能出现以下异常信息:

2018-09-08 11:48:07.777 ERROR 7780 --- [           main] o.a.catalina.core.ContainerBase.[Tomcat].[localhost].[/spring-boot-jsp] : Servlet [dispatcherServlet] in web application [/spring-boot-jsp] threw load() exception

java.lang.IllegalStateException: Tomcat cannot use this engine,                          because there is no default servlet configured. Probably you have        multiple Servlets mapping to "/", which is not supported. Try to use another base path for your application, o r add a default servlet mapping.

这是因为Tomcat内置Jasper引擎默认不支持EL表达式,需要在pom.xml文件中添加如下依赖。

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

2. jsp页面找不到

页面在/WEB-INF/jsp/目录下,但是如果没有进行特殊的配置,程序将无法找到页面。

要解决这个问题,需要在application.properties文件中添加如下配置。

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

这将告诉SpringBoot查找jsp文件的路径和后缀。

四、示例

以下是两个简单的示例。

示例1:显示当前时间

创建一个Controller类,定义一个访问路径/time,用于显示当前时间。

@Controller
public class TimeController {
    @RequestMapping("/time")
    public String time(Model model) {
        model.addAttribute("now", new Date());
        return "time";
    }
}

在jsp视图页面中,使用el表达式${ now }显示当前时间。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring Boot JSP页面示例 - 显示当前时间</title>
</head>
<body>
    <h1>当前时间:</h1>
    <h2>${ now }</h2>
</body>
</html>

示例2:计算器

创建一个Controller类,定义两个访问路径/add/calculate,用于实现计算器功能。

@Controller
public class CalculatorController {
    @GetMapping("/add")
    public String add() {
        return "add";
    }

    @PostMapping("/calculate")
    public String calculate(Integer num1, Integer num2, Model model) {
        Integer result = num1 + num2;
        model.addAttribute("result", result);
        return "calculate";
    }
}

add页面中,添加一个表单用于输入两个数,使用post方式提交表单到/calculate路径,将结果返回到calculate页面。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring Boot - 集成 JSP示例 - 计算器</title>
</head>
<body>
    <form method="post" action="/calculate">
        <input type="number" name="num1" placeholder="1">
        <input type="number" name="num2" placeholder="2">
        <input type="submit" value="计算">
    </form>
</body>
</html>

calculate页面中,使用el表达式${ result }显示计算结果。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring Boot - 集成 JSP示例 - 计算器</title>
</head>
<body>
    <h1>结果:</h1>
    <h2>${ result }</h2>
</body>
</html>

五、总结

本文详细讲解了SpringBoot集成jsp的基本步骤,还提供了两个示例。在实际开发中,可能会遇到一些问题,本文也对这些问题进行了详细的介绍。希望本文能够帮助大家更好地理解SpringBoot集成jsp的过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SpringBoot集成jsp(附源码)+遇到的坑 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 基于springboot搭建的web系统架构的方法步骤

    下面详细讲解基于Spring Boot搭建Web系统架构的步骤: 1. 准备工作 在开始构建基于Spring Boot的Web系统之前,需要完成一些准备工作。这些包括:* 安装Java JDK* 安装Eclipse或IntelliJ IDEA等IDE* 安装Maven或Gradle等构建工具 安装完成后,我们就可以开始构建Web系统了。 2. 创建Sprin…

    Java 2023年5月19日
    00
  • 浅谈在Spring中如何使用数据源(DBCP、C3P0、JNDI)

    在Spring框架中,我们可以通过不同的数据源来操作数据库,包括DBCP、C3P0和JNDI等。下面将详细介绍在Spring中使用这些数据源的方法。 DBCP DBCP(DataBase Connection Pool)是Apache提供的数据库连接池技术。在Spring中,我们可以通过配置文件来使用DBCP数据源。具体步骤如下: 步骤1:添加依赖 在Mav…

    Java 2023年5月20日
    00
  • java实现图片上传至本地实例详解

    Java实现图片上传至本地实例详解 在Web开发中,经常会遇到用户需要上传图片的需求。本文将详细讲解Java如何实现图片上传至本地的操作。 基本原理 实现图片上传的基本原理是将客户端上传的二进制数据流保存到服务器端的某个文件夹中,然后将图片的URL返回给客户端,客户端通过URL获取到图片并显示。 实现步骤 创建一个上传文件的表单,设置enctype属性为“m…

    Java 2023年5月19日
    00
  • Java中枚举的实现原理介绍

    Java中枚举的实现原理介绍 什么是枚举 枚举(enum)是Java中的一种数据类型,它允许将一组相关的常量组织在一起,并且可以用枚举类型的名称来引用这些常量,以提高代码的可读性和稳定性。 在使用枚举类型时,我们可以通过枚举类型的名称来访问某个枚举常量,也可以通过枚举常量的名称来获得该常量的值,枚举类型可以与switch语句一起使用,提高代码的可读性。 Ja…

    Java 2023年5月26日
    00
  • java如何将Object数组转换为指定类型数组

    将Object数组转换为指定类型数组的过程需要进行类型强转,下面是具体的步骤和示例。 创建指定类型数组 首先,需要确定要转换成哪种类型的数组,然后使用数组的静态方法创建一个指定类型的数组。例如创建一个字符串数组: String[] array = new String[objectArray.length]; 遍历Object数组 使用for循环或者for-…

    Java 2023年5月26日
    00
  • JavaWeb HttpServletResponse对象及常用方法

    下面就来为你详细讲解“JavaWeb HttpServletResponse对象及常用方法”的完整攻略。 一、什么是HttpServletResponse对象 在JavaWeb开发中,HttpServletResponse对象代表服务器响应给客户端的HTTP应答。它是javax.servlet.http.HttpServlet类的子类,提供了一系列的方法来设…

    Java 2023年5月20日
    00
  • MySQL常用判断函数小结

    MySQL是一种关系型数据库管理系统,常用于网站后台开发中。而判断函数则是MySQL中的重要函数之一,用于对数据进行逻辑判断。下面是MySQL常用判断函数的小结: IF函数 IF函数的作用是,当第一个参数是真(非0或不空)时返回第二个参数,否则返回第三个参数。IF函数的格式如下: IF(condition, true_value, false_value) …

    Java 2023年5月26日
    00
  • 聊聊maven与jdk版本对应关系

    聊聊maven与jdk版本对应关系 Maven是Java项目在构建编译过程中的重要工具,Java开发者需要根据项目需求选择合适的版本。同时,Maven的版本也需要与Java版本对应,否则可能会导致编译、构建、打包等问题。因此,本文将介绍Maven与JDK版本对应关系的攻略,以帮助Java开发者正确选择版本。 Maven与JDK版本对应关系 以下是Maven与…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部