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

相关文章

  • bootstrap 下拉多选框进行多选传值问题代码分析

    下面给出“bootstrap下拉多选框进行多选传值问题代码分析”的完整攻略。 1. 背景 在使用bootstrap开发Web应用时,经常会使用下拉多选框进行多选,但如何将所选的值传递给后端服务器,还是一个值得探讨的问题。 2. 问题 bootstrap的下拉多选框有一个data-selected-text-format属性,它可以控制选中的值的格式,如可以将…

    Java 2023年6月15日
    00
  • 详解基于Spring Data的领域事件发布

    以下是《详解基于Spring Data的领域事件发布》的完整攻略: 1. 概述 领域事件 领域事件是指在领域中发生的一些重要操作或数据变化,如订单创建、库存减少等。它们可以触发其他业务逻辑,也可以被其他业务逻辑订阅并处理。 Spring Data Spring Data 是 Spring 社区为简化数据库访问和实现数据持久化的开源框架。它提供了丰富的 API…

    Java 2023年5月20日
    00
  • java获取Date时间的各种方式汇总

    Java获取Date时间的各种方式汇总 Date类作为Java中常用的日期时间操作类,提供了多种获取时间的方式。本文将为大家详细介绍Java中常见的Date时间获取方式,希望对大家有所帮助。 currentTimeMillis() currentTimeMillis()方法返回当前系统时间的毫秒数。可以通过将这个时间链接到Date构造函数中来创建对应的Dat…

    Java 2023年5月20日
    00
  • 微信小程序实现多选功能

    微信小程序实现多选功能的完整攻略可以分为以下步骤: 1.在页面中定义 checkbox 组件 首先需要在页面的 wxml 文件中定义多组 checkbox 组件,每个复选框都应该设置不同的 value 值以便于选项的区分,同时为了便于管理,可以用相同的 name 属性将多个选项组成一个组. 下面是一个示例代码: <checkbox-group bind…

    Java 2023年5月23日
    00
  • java 简单的计算器程序实例代码

    下面我将为你讲解“Java 简单的计算器程序实例代码”的完整攻略。包含以下内容: 需求分析 界面设计 计算逻辑设计 完整代码实现 首先,我们需要分析需求。这个计算器能够进行简单的四则运算即可,主要功能有加减乘除四种运算。然后我们需要考虑一下计算器的界面设计。 界面设计:我们需要使用swing提供的jframe来实现我们的计算器。我们需要使用一系列的jlabe…

    Java 2023年6月15日
    00
  • 使用JSON.toJSONString()返回{}的原因

    首先,了解一下JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据交互。在Java中,可以使用JSON工具库将Java对象转换成JSON格式的数据,便于传输和处理。 在Java中,我们可以使用阿里巴巴的fastjson工具库进行JSON处理。其中,JSON.toJSONString(…

    Java 2023年5月26日
    00
  • java 使用ElasticSearch完成百万级数据查询附近的人功能

    下面是详细的“java 使用ElasticSearch完成百万级数据查询附近的人功能”的攻略: 一、准备工作 1. 安装Elasticsearch 首先需要在本地安装Elasticsearch,可以到官方网站下载并安装。也可以使用Docker进行安装。 2. 安装Elasticsearch客户端 在Java代码中使用Elasticsearch,需要引入Ela…

    Java 2023年5月20日
    00
  • javascript 对象 与 prototype 原型用法实例分析

    JavaScript 对象与 Prototype 原型用法实例分析 JavaScript 中的对象是非常重要的概念,它是用来封装相关属性和行为的数据类型,JavaScript 对象实际上是一个特殊的键值对集合,每个键值对被称为一个属性或者方法。 JavaScript 中对象的创建有很多方式,包括字面量语法、构造函数语法、Object.create() 等,本…

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