详解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 Apache Commons报错“InterruptedException”的原因与解决方法

    当使用Java的Apache Commons类库时,可能会遇到“InterruptedException”错误。这个错误通常由以下原因之一起: 线程被中断:如果线程被中断,则可能会出现此错误。在这种情况下,需要检查线程以决此问题。 超时:如果超时,则可能会出现此错误。在这种情况下,需要检查超时以决此问题。 以下是两个实例: 例1 如果线程被中断,则可以尝试检…

    Java 2023年5月5日
    00
  • Java字符串技巧之删除标点或最后字符的方法

    让我来详细讲解一下“Java字符串技巧之删除标点或最后字符的方法”的完整攻略。 1. 删除标点 1.1 方法一:使用正则表达式 首先,我们可以使用正则表达式来删除字符串中的所有标点符号。具体来说,可以使用replaceAll()方法和正则表达式\\p{Punct}来实现。 示例代码: String text = "This is a sample …

    Java 2023年5月20日
    00
  • Java编程实现对十六进制字符串异或运算代码示例

    下面是详细讲解Java编程实现对十六进制字符串异或运算的完整攻略。 异或运算简介 异或运算(^)是计算机中的一种二进制位运算,它的运算规则是按位进行比较,相同位上的数字相同时,结果为0,不同时,结果为1。例如,10 ^ 6 = 12,是因为10的二进制形式为1010,6的二进制形式为0110,按位进行异或运算后,得到的结果为1100,其十进制形式为12。 十…

    Java 2023年5月27日
    00
  • 详解java中的正则表达式

    详解Java中的正则表达式 什么是正则表达式 正则表达式是一种规则,用于匹配字符串中的文本。在文本中找到匹配的文本可以提供很多有用的信息,比如找出电话号码、电子邮件地址、日期等等。在Java中,我们可以使用正则表达式对字符串进行匹配。 模式匹配器 在Java中,我们可以使用java.util.regex包中的Pattern和Matcher来进行正则表达式匹配…

    Java 2023年5月27日
    00
  • 流式图表拒绝增删改查之kafka核心消费逻辑下篇

    首先我们需要了解一下本篇攻略讲解的是什么。 本文的主要内容是讲解如何将Kafka的核心消费逻辑结合流式图表进行可视化呈现,进而达到更好的监控和管理分布式系统的目的。 在具体讲解之前,我们需要明确几个概念: Kafka:一个高吞吐量、分布式的消息队列系统,主要用于解决大数据流的问题。 流式图表:一种可视化数据流的工具,可以通过图形化的方式展示数据流中的数据和流…

    Java 2023年5月20日
    00
  • 如何创建一个AJAXControlToolKit的扩展控件

    创建 AJAX Control Toolkit 的扩展控件的过程大致可分为以下几个步骤: 创建一个新的 ASP.NET Web 控件库在 Visual Studio 中创建一个新的 ASP.NET 控件库。这里需要选择“Web 控件库”作为项目类型,并且将项目命名为“AJAXControlToolKit.Extended”。在创建完成后,打开“Assembl…

    Java 2023年6月15日
    00
  • spring如何快速稳定解决循环依赖问题

    循环依赖是指两个或多个bean之间互相依赖,形成了循环依赖的关系。这种循环依赖会导致Spring IoC容器无法对bean进行正确的初始化和装配,从而引发一系列问题。这里将详细讲解Spring如何快速稳定解决循环依赖问题的完整攻略。 解决方式一:构造器注入 构造器注入是一种避免循环依赖的较为简单而又有效的方式。具体的实现步骤如下: 将bean的所有依赖项作为…

    Java 2023年5月19日
    00
  • 教你用Java GUI实现文本文件的读写

    教你用Java GUI实现文本文件的读写 如果你想在Java图形用户界面(GUI)中实现文本文件的读写,可以按照以下步骤操作: 1. 创建GUI界面 首先,需要创建一个GUI界面,让用户可以输入和查看文件的内容。可以使用Swing或JavaFX等GUI框架来创建GUI界面。 以下是一个简单的使用JavaFX创建GUI界面的示例代码: import javaf…

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