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";
}
}