SpringBoot(4)-JSP統合およびテンプレートエンジン

JSP統合

一般的に、SpringBootは直接JSPページを使用することを推奨していませんが、実際の作業で使用する必要があるシナリオを除外していません。SpringBootの組み込みTomcatはJSPまたはEL式のサポートを統合しないため、JSPを使用するには、まず関連する依存関係を統合する必要があります。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

上記の必要な依存関係の導入に加えて、ビューの解決図も構成する必要があります。関連するビューリゾルバーは、次のようにSpring MVCにも導入されています。
ここに画像の説明を挿入


SpringBootでは、application.propertiesファイルのみを設定する必要があります

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

プロジェクトで複数のビューリゾルバをサポートする必要がある場合、どのように設定するのですか?htmlとjspをサポートする必要がある場合、SpringMVCを学習する前に導入した方法は、次のようにxmlで構成されます。
ここに画像の説明を挿入
ここに画像の説明を挿入

では、SpringBootでどのように構成すればよいでしょうか。Web構成は使用できません。実際には、xml構成を使用せず、アノテーションを使用する以前のSpringMVCの概要と同じです。SpringMVCで使用される以前のアノテーション構成メソッドは次のとおりです。
ここに画像の説明を挿入


次に、SpringBootで複数のビューのスクリーンショットを設定する方法を見てみましょう、実際にはxmlの構成と同じであるインスペクターが追加されていることがわかります。
ここに画像の説明を挿入

public class HandleResourceViewExists extends InternalResourceView {

    @Override
    public boolean checkResource(Locale locale) {
        File file = new File(this.getServletContext().getRealPath("/") + getUrl());
        return file.exists(); //判断页面是否存在
    }
}

次にアクセスするための対応するパスファイルを作成するだけです
ここに画像の説明を挿入

注:上記の設定に従ってテストを行っている場合、最初にhtmlファイルが見つからず、次にjspファイルに移動しても問題はありませんが、htmlファイルが直接見つかりアクセスされた場合、エラーが報告されます。なぜですか? ?htmlは静的リソースであるため、静的リソースへのアクセスを許可するように構成する必要があります
ここに画像の説明を挿入




テンプレートエンジン

前述のように、SpringBootはJSPの使用を推奨していません。はい、テンプレートエンジンを使用してHTMLをレンダリングすることをお勧めします。その中でも、SpringBootはthymeleafを使用することを強くお勧めします。SpringBootでのthymeleafの使用は非常に簡単です。最初に依存関係を導入する

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

次に、次のように、仕様に従ってresourcesファイルの下にtemplatesフォルダ作成する必要があります。
ここに画像の説明を挿入

index.htmlの内容は次のとおりです。

<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head lang="en">
    <meta charset="UTF-8"/>
</head>
<body>
<h1 th:text="${value}"/>
</body>
</html>

次に、コントローラーでアクセスリクエストを作成します。上記で構成したビューリゾルバーをコメントアウトしてテストする必要があることに注意してください。

@Controller
//@RestController
public class DemoController {

    @RequestMapping("/index")
    public String testThymeleaf(ModelMap map) {
        map.addAttribute("value", "Hello World");
        return "index";
    }
}

ここに画像の説明を挿入

286の元の記事が公開されました Liked12 訪問者10,000以上

おすすめ

転載: blog.csdn.net/newbie0107/article/details/105280149
おすすめ