如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧

做WEB项目,一定都用过JSP这个大牌。Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的。当你从一个传统的Spring MVC项目转入一个Spring Boot项目后,却发现JSP和view关联有些麻烦,因为官方不推荐JSP在Spring Boot中使用。在我看来,继续用这种繁杂的手续支持JSP仅仅只是为了简单兼容而已。

我们先来看看如何在SpringBoot中使用JSP ?

1. 在pom.xm中加入支持JSP的依赖

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

        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>

2. 在src/main/resources/application.properties文件中配置JSP和传统Spring MVC中和view的关联

# MVC
spring.view.prefix=/WEB-INF/views/
spring.view.suffix=.jsp

3. 创建src/main/webapp/WEB-INF/views目录,JSP文件就放这里

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    Hello ${name}
</body>
</html>

4. 编写Controller


package com.chry.study;


import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  import org.springframework.stereotype.Controller;
  import org.springframework.ui.ModelMap;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.servlet.ModelAndView;

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/hello")
    public ModelAndView getListaUtentiView(){
        ModelMap model = new ModelMap();
        model.addAttribute("name", "Spring Boot");
        return new ModelAndView("hello", model);
    }
}

5. 编写Application类

package com.chry.study;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WebApplication.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(WebApplication.class, args);
    }
}

6. 以java application方式运行后,就可以访问http://locahost:8080/hello

==================  分割线 ==================================

以上代码pom.xml中的javax.servlet.jsp.jstl是用于支持JSP标签库的,在Web2.5的容器中没有问题,单当你的容器是Web3.0或以上版本时,就会出问题。 这是个非常坑爹的问题。

第一个问题:javax.servlet.jsp.jstl会自动加载依赖servlet-api-2.5.jar, 而且会在实际运行时把支持Web3.0的3.1版本的javax.servlet-api覆盖掉。即使你在pom.xml显示的在加入3.1版本的javax.servlet-api也没用。导致SpringBoot应用抛出Runtime exception运行错误。

第二个问题:由于3.1版本的javax.servlet-api被覆盖,2.0版本以上的jquery无法工作,结果就是你的很多基于jwuery2.0以上新版本的javascript脚本出错或者不被执行。

这是一个不可调和的矛盾,要吗不用javax.servlet.jsp.jstl,要吗不用Web3.0。

但绝大多数情况下,jstl标签库不是必须的,而Web3.0是必须的。替代方式就是不用JSP,改用Themeleaf吧

时间: 2024-10-07 20:31:29

如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧的相关文章

SpringBoot 中添加jsp支持遇到的问题

由于想把一个java web项目使用springBoot框架来联系一下,Java web项目用到了jsp,于是便需要在spring boot中引入jsp支持 引入方法网上很多,现在记录一下自己遇到的问题 我的controller中使用的注解是RestController,所以在返回页面的时候只能在页面显示字符串,如return "index"   结果输入对应url,页面就显示index   T_T 这个问题困扰好久,终于在网上找到了解决办法: 原来return "index

如何在eclipse中修改jsp默认编码

在使用eclipse编程的时候,很多默认的编码都是iso-8859-1我们经常使用的,在eclipse中怎么修改jsp页面的默认编码呢. 第一步:打开eclipse,找到windows-->preference. 第二步:进入preference后点击Web下的jspfile 第三步:在右边找到encoding修改为自己希望的编码

SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍

今天给大家介绍一下SpringBoot中Redis的set.map.list.value等基本操作的具体使用方法想学习分布式.微服务.JVM.多线程.架构.java.python的童鞋,千万不要扫码,否则后果自负~ 上一节中给大家介绍了如何在SpringBoot中搭建Redis缓存数据库,这一节就针对于Redis的具体操作进行介绍. 关于Redis的历史,以及目前的普及程度大家应该都比我还清楚吧.作为key-value的nosql数据库,Redis的功能还是特别强大的. 下面就来介绍一下Redi

如何在Eclipse中设置默认的JSP文件头部编码

如何在Eclipse中设置默认的JSP文件头部编码 在eclipse中新建一个jsp页面时,一般默认的编码不是utf-8,而我们一般项目都是统一采用utf-8编码,如果要一个个改很麻烦? 那么我们只能这样这么麻烦吗? 大家一般都会想到如果更改默认设置. 我之前是这样设置的: windows-----preferences-----general-----content types-----text-----jsp那里设置默认编码(操作步骤如下图所示) 可惜的是这样还是没有达到我想要的结果. 后来

如何在myeclips 8.5中修改JSP模板

在安装盘搜索 com.genuitec.eclipse.wizards_8.6.0.me201007140905之后 修改jsp.vtl jsp.vtl 改成jsp.txt后 修改 成"utf-8" 就这么简单 如何在myeclips 8.5中修改JSP模板

Spring Boot 项目中使用JSP

1    第2-2课:Spring Boot 项目中使用JSP JSP(Java Server Pages,Java 服务器页面)是一个简化的 Servlet 设计,它是由 Sun Microsystems 公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP 技术类似 ASP 技术,它是在传统的网页 HTML(标准通用标记语言的子集)文件(.html)中插入 Java 程序段(Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件,后缀名为(*.jsp).用 JSP 开

如何在MyEclipse中创建servlet3.0

servlet3.0随着Java EE6规范一起发布,那么如何在MyEclipse中创建3.0版的servlet呢? 1.启动MyEclipse,获得下图: 2.点击上图"File"工具栏,获得下图: 3.将鼠标移到"New Alt+Shift+N",然后再选中并点击红框框定的"Web Project"选项,获得下图: 4.对上图进行如下操作: a."Project Name"(蓝框框定处)输入创建的项目名:此处输入test;

springboot中添加模板引擎freemarker和thymeleaf

freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 <!-- 集成freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</ar

SpringBoot中使用LoadTimeWeaving技术实现AOP功能

目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现AOP的例子 3. 参考资料 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 AOP--面向切面编程,通过为目标类织入切面的方式,实现对目标类功能的增强.按切面被织如到目标类中的时间划分,主要有以下几种: 1.运行期织入 这是最常见的,比如在运行期通过为目标类生成动态代理