spring-boot入门(二)使用JSP视图

本文介绍了如何在Spring Boot项目中使用JSP作为视图。首先,你需要在pom.xml中引入相关依赖,包括spring-boot-starter-web和jstl。接着,创建Controller返回ModelAndView,配置视图解析器。然后,确保启动类继承SpringBootServletInitializer。在JSP页面中创建视图文件,并将项目打包成war文件部署到外部Tomcat容器。最后,调整Tomcat配置以正确访问JSP页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring-boot入门(二)使用JSP视图

刚刚接触JAVA的时候,jsp是Javaweb项目的最常用视图。随着前端技术的不断进步,anjular的普及,前后端交互不再是那么的耦合,jsp已经渐渐的远离了我们的视线范围,但是jsp也并非完全不会接触到。下面来看看spring boot如何使用jsp视图。

1.引入相关依赖

  • 新建一个maven空项目,在pom.xml继承spring-boot-starter-parent
  • 引入spring boot基础组件
  • 引入jstl,tomcat-embed-jasper包

我这里是直接在父工程里面继承自spring-boot-starter-parent,子工程pom文件详细依赖如下:

 <packaging>war</packaging>
    <name>spring-boot-practice-jsp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

注意tomcat和jasper的scope是provided,使用自己的tomcat容器而不是spring boot内嵌的。

2.Controller控制层

返回一个ModelAndViews视图,视图名称是我们需要访问的资源路径。

@Controller
public class WelcomeController {

    @Value("${application.message:Hello World}")
    private String message = "Hello World";

    @RequestMapping("/")
    public ModelAndView welcome() {
        ModelAndView modelAndView = new ModelAndView("/welcome");
        modelAndView.addObject("message", this.message);
        modelAndView.addObject("time",  new Date());
        return modelAndView;
    }
}

3.启动主类

启动主类,继承自SpringBootServletInitializer。当我们需要一war包方式发布应用到tomcat容器时,需继承自该类。

@SpringBootApplication
public class JspApplicationStarter extends SpringBootServletInitializer {

    private static final Log LOG = LogFactory.getLog(JspApplicationStarter.class);

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(JspApplicationStarter.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(JspApplicationStarter.class, args);
        LOG.info("spring-boot-practice-jsp is started.");
    }
}

4.配置视图解析器

InternalResourceViewResolver是默认的视图解析器,在application.properties文件里面,配置访问静态资源的前后缀参数(spring.mvc.view.prefix 和 spring.mvc.view.suffix)和端口号。

#variable
application.message=Hello JasonLin
#port
server.port=8089
#MVC
spring.mvc.view.prefix=/WEB-INF/jsp
spring.mvc.view.suffix=.jsp

如上配置,代表访问端口号是8089(使用外部容器时无效),资源文件位于/WEB-INF/jsp目录下,文件后缀为.jsp

5.jsp页面

在/WEB-INF/jsp目录下新建一个文件名为welcome.jsp的jsp文件。

<!DOCTYPE html>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html lang="en">

<body>
<c:url value="/resources/text.txt" var="url"/>
<spring:url value="/resources/text.txt" htmlEscape="true" var="springUrl" />
Spring URL: ${springUrl} at ${time}
<br>
JSTL URL: ${url}
<br>
Message: ${message}
</body>

</html>

做完上面的所有工作后需要将maven install项目。将文件发布到tomcat容器。整个工程的结构目录如下:

这里写图片描述

6.发布运行

在idea中配置好tomcat并启动项目。tomcat启动配置:

这里写图片描述

端口为8080,默认路径/
发布运行。
这里写图片描述

over !

PS:
1、jsp项目需要引入tomcat-embed-jasper和jstl
2、jsp web项目需要发布在Tomcat中以war包运行,直接打jar包,web-inf目录下的资源文件不会打包在jar包中,会使view无法访问(貌似可以通过插件实现).
3、以war包发布应用主类需实现WebApplicationInitializer接口或者继承自SpringBootServletInitializer
4、jasper的scope设置为: provided 否则可能会和tomcat容器里面的冲突。
5、spring.mvc.view.prefix 资源文件前缀
spring.mvc.view.suffix 资源文件后缀
6、相关代码:https://github.com/Json-Lin/spring-boot-practice/tree/master/spring-boot-practice-jsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值