详解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日

相关文章

  • Java中的抽象类是什么?

    抽象类是在Java中用于定义接口的半实现的类。它必须被继承才能被使用,并要求子类实现其抽象方法。在Java中,我们使用 abstract 关键字来声明抽象类。 抽象类本身不能被实例化,需要通过子类来实现。抽象类中可以包含非抽象的方法,这些方法跟普通的类方法一样,同样需要实现。 接下来我们通过两个例子来详细讲解Java中的抽象类。 示例一:定义抽象类 publ…

    Java 2023年4月27日
    00
  • 解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0

    针对SpringBoot启动报错“类文件具有错误的版本61.0,应为52.0”,按照以下步骤进行解决: 1.问题原因 这个问题通常是因为编译器和运行环境版本不一致。使用较高版本的编译器编译的类文件,在低版本的运行环境中无法运行,导致启动失败。 2.解决过程 2.1 确认编译器和运行环境版本 首先需要确认代码使用的编译器版本以及部署环境的JDK版本是否一致。可…

    Java 2023年5月19日
    00
  • Java中Spring使用Quartz任务调度定时器

    下面是关于“Java中Spring使用Quartz任务调度定时器”的完整攻略,包含两个示例说明。 Java中Spring使用Quartz任务调度定时器 Quartz是一个开源的任务调度框架,可以用于在Java应用程序中执行定时任务。Spring框架提供了对Quartz的支持,可以方便地在Spring应用程序中使用Quartz任务调度定时器。本文将介绍如何在J…

    Java 2023年5月17日
    00
  • Spring Security实现微信公众号网页授权功能

    下面是“Spring Security实现微信公众号网页授权功能”的完整攻略。 一、背景介绍 微信公众号作为当前最受欢迎的一种社交媒体,已经成为许多公司和个人宣传、推广和交流的重要渠道。因此,实现微信公众号网页授权功能是建立一个可持续发展的微信公众号应用的重要一步。在这个过程中,Spring Security可以帮助我们安全地管理和控制我们的应用程序的访问。…

    Java 2023年5月20日
    00
  • jQuery解析json数据实例分析

    下面将为您介绍如何使用 jQuery 解析 JSON 数据。 解析 JSON 数据的方法 使用 jQuery 的 $.parseJSON() 方法 通过使用 jQuery 的 $.parseJSON() 方法可以将字符串形式的 JSON 数据转化为 JavaScript 对象。 var jsonData = ‘{"name":"…

    Java 2023年6月15日
    00
  • MySQL详解进行JDBC编程与增删改查方法

    MySQL详解进行JDBC编程与增删改查方法 JDBC编程 Java数据库连接(Java Database Connectivity,JDBC)是Java语言中操作关系型数据库的应用程序接口,JDBC提供了一套标准的API,用于Java程序中访问数据库。 使用JDBC连接MySQL需要以下步骤: 导入MySQL驱动 java Class.forName(“c…

    Java 2023年5月19日
    00
  • Java应用打包成Docker镜像

    下面是Java应用打包成Docker镜像的完整攻略: 1. 准备工作 在开始之前,需要先确保已经安装好了Docker和Java开发环境。 2. 编写Dockerfile Dockerfile是定义Docker镜像构建过程的脚本文件。创建一个名为Dockerfile的文件并编写如下内容: FROM openjdk:8-jdk-alpine ADD target…

    Java 2023年5月26日
    00
  • JSP中param动作的实例详解

    当我们想要把参数传递给 JSP 页面时,param 动作是一种非常有用的方法。通过在 JSP 页面中使用 param 动作,我们可以轻松地向页面中传递参数,这些参数可以来自域对象,例如 request、session 或 application,也可以来源于页面 URL 中的查询字符串或表单提交。本文将为大家深入详解 param 动作的用法,通过两个实例帮助…

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