Springboot学习教程(三) Web开发

目录

1.静态资源访问

2.渲染Web页面

3.使用Freemarker模板引擎渲染web视图

4.使用JSP渲染Web视图


 

1.静态资源访问

在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。那么我们放在项目中的什么位置呢?

生成的项目结构中,resources目录下有个static目录,我们可以把静态资源放在下面,直接访问。

 

访问地址是 localhost:8080/图片.jpeg。不需要加static目录。



Springboot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:

/static     /public     /resources    /META-INF/resources

也就是说,凡是名称为上面四种的目录,就相当于直接放到项目的classpath路径下了。可以直接访问,不需要加文件夹名。

 

 

2.渲染Web页面

渲染web页面:

之前我们的示例中,我们都是通过@RestController来处理请求,返回的都是json字符串。

那么如果我们需要跳转到html页面时,要如何实现呢?

 

模板引擎:

模板引擎的作用是将动态页面转成伪静态页面,目的是提高搜索引擎的收录。

互联网项目请求一般没有以 .jsp 结束,都是以 .html,.htm结束。因为搜索引擎一般会优先搜索 .html,.htm结尾的请求,也就是伪静态页面。

 

springboot提供了多种模板引擎默认配置支持,方便我们开发动态网站。

主要提供了以下几种:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

Springboot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP,则无法实现Springboot的多种特性,具体可见后文:支持JSP的配置

当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。

当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。

 

 

3.使用Freemarker模板引擎渲染web视图

springboot提高了很多模板引擎,我们这里只说一个Freemarker模板引擎。

1.pom文件添加依赖

        <!-- 引入freeMarker的依赖包. -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

注意:不能单独只添加freemarker依赖包,还要添加thymeleaf依赖包,否则访问时候会报错。

javax.servlet.ServletException: Circular view path [index]: would dispatch back to the current handler URL [/index] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

 

2.创建一个FtlIndexController类

package com.itmayiedu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class FtlIndexController {

    @RequestMapping("/ftlIndex")
    public String ftlIndex(){
        return "ftlIndex";
    }
}

注意:

1.注解需要用@Controller,而不是@RestController,因为返回的是模板而不是json对象了

2.return "ftlIndex";  返回值直接写模板名称就可以了,不需要添加后缀了,默认后缀名为 .ftl

 

3.在templates目录下创建一个ftlInext.ftl文件

 

4.访问localhost:8080/ftlIndex,访问成功。



5.freemarker的其他用法:在controller类中数据可以传到ftl页面上

@RequestMapping("/ftlIndex2")
public String index(Map<String, Object> result) {
    result.put("name", "张飞");
    result.put("sex", "88");
    return "ftlIndex";
}

在ftl中可以用$接收到

 ${name}

 ${sex}

访问成功



我又试了一下,这样写就访问不到。

@RequestMapping("/ftlIndex2")
public String index() {
    Map<String, Object> result = new HashMap<>();
    result.put("name", "张飞");
    result.put("sex", "88");
    return "ftlIndex";
}

 

 

4.使用JSP渲染Web视图

springboot默认不支持jsp页面,默认的是ftl格式的页面,如果想在springboot集成jsp,则需要添加外部Tomcat的依赖jar包,

而且创建springboot项目时,要设置成war类型,如果是jar类型是无法访问到jsp页面的。

1.创建一个springboot项目

 

2.自动生成的pom文件

注:我们创建成war类型之后,idea默认给我们pom文件添加上了外部Tomcat依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot_jsp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>springboot_jsp</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

添加依赖:

<!-- SpringBoot 外部tomcat支持jsp-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

 

3.项目生成的application.properties文件,是springboot会默认读取的配置文件。

注:springboot项目一般都使用 application.yml 格式配置文件,springboot也会自动读取此配置文件,此处暂时以properties文件为例演示。

 

在application.properties中添加配置信息

# 前缀
spring.mvc.view.prefix=/WEB-INF/jsp/
# 后缀
spring.mvc.view.suffix=.jsp

 

创建一个controller类

package com.example.springboot_jsp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class JspIndexController {

    @RequestMapping("/jspIndex")
    public String jspIndex(){
        return "jspIndex";
    }

}

 

我们自己创建一个jsp,在src/main/目录下,创建webapp/WEB-INF/jsp/jspIndex.jsp

 

jspIndex.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>

我的JSP页面

 

访问成功:



注意:

1.创建SpringBoot整合JSP一定要为war类型,否则找不到页面.

2.不要把JSP页面存放在resources目录下,resources目录下是资源文件,可以被外部访问到,而jsp是不允许访问到的,所以我们单纯创建webapp目录存放jsp页面。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 3000 多个 star:本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第个部分是 Spring Boot 个人博客项目功能的讲解,通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。作者寄语本课程录制于 2020 年,代码基于 Spring Boot 2.x 版本。到目前为止,Spring Boot 技术栈也有一些版本升级,比如 Spring Boot 2.7 发版、Spring Boot 3.x 版本发布正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。课程特色 课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。实践项目页面美观且实用,交互效果完美。包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。实战项目预览    

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值