著者:1819ドリーム
ます。https://www.cnblogs.com/yanfei1819/p/10953600.htmlオリジナル
著作権:この記事はブロガーオリジナル記事ですが、再現し、ボーエンのリンクを添付してください!
入門
SpringBoot関係者はthymelafテンプレートエンジンをお勧めしますが、また、JSPをサポートしていますが、いくつかの変更を必要とするが。この記事ではSpringBootにJSPの応用を説明します。
道の話題であるために、この章では、より疲れて書かれた、より複雑です。SpringBootはJSPの使用を推奨していませんので。間数とはるかに私の理解によると、SpringBootとJSP統合プロジェクト。したがって、この情報は、オンライン比較的小さいです。既存のリソースが、内容は基本的に離れて何かのトピックから混乱、またはされています。
理解に基づいて、11の確認を行った。この章では、読者、廃棄物の読者の時間を誤解しないように願っています。同時に、この1つは、読者の理解を持って、通信のやり取りで作者に連絡することを歓迎します。
バージョン情報
- JDK:1.8
- SpringBoot:2.1.4.RELEASE
- Mavenの:3.3.9
- 外部Tomcat : 9.0
- IDEA:2019年1月1日
埋め込まれたTomcatを使用します
プロジェクトを作成し、我々は最初のプロジェクトの構造を見てみましょう。
まず、達人の導入に依存:
<!--对 web 的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--解析jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!--jstl标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
依存JSPに関連する2つがそれを設定することに注意してください<scope>provided</scope>
。ここでは、概念の範囲を説明します。
依存関係の範囲は、Mavenは、いくつかの依存範囲があり、使用および制御の3種類がCLASSPATHに依存している(コンパイラクラスパス、テストクラスパスは、CLASSPATHを実行する)である以下の通りであります:
- コンパイル:依存範囲をコンパイルします。指定しない場合、デフォルトでは、スコープに依存します。、テストをコンパイルするには、この依存レンジMavenの依存関係を使用して、三つのクラスパスの操作は有効です。典型的な例は、バネコード、コンパイラを使用する必要に応じて、テスト実行時間です。
- テスト:テストは範囲を依存しています。Mavenの依存関係の時間依存の範囲を使用しますが、これはコンパイルされたコードの使用に依存している、またはメインプロジェクトを実行に使用することはできません、唯一のテストクラスパスに有効です。典型的な例は、コードのみをコンパイルし、テスト時間のテストを実行するために必要とされる、Jnuitあります。
- 提供:依存範囲を提供しました。実行するための時間にクラスパスをコンパイルし、テストするための効果的なこの依存範囲Mavenの依存関係を使用しますが、ありません。典型的な例は、必要なときに依存しているアイテムをコンパイル、テスト、サーブレットAPIですが、プログラムが実行されている場合、コンテナので提供し、繰り返しのMavenを再度導入する必要はありません。
第二に、あなたはSpringBootデフォルトのJSPでサポートされていない、application.propertiesで設定ファイルにJSPのSpringBootサポートを設定する必要があります。
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
そして、テストインターフェースを作成します。
@Controller
public class JSPController {
@RequestMapping(value = "/index",method = RequestMethod.GET)
public String index(Model model){
model.addAttribute("name","SpringBoot");
return "index";
}
}
同じカテゴリを起動します。
@SpringBootApplication
public class JspDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JspDemoApplication.class, args);
}
}
最後に、デフォルトでJSPにjarファイルをコピーしないので、むしろ瓶よりも、戦争を実行することに留意すべきです。したがって、我々は、パッケージの種類を変更する、のpom.xmlファイルが必要になります。
<packaging>jar</packaging>
に変更<packaging>war</packaging>
。
あなたが包装袋は戦争であるプロジェクトに注意を払うように起動すると、メインの方法で起動しません。ここで使用した容器は、Tomcat組み込みSpringBootでは、ディレクトリ戦争パッケージ、起動するコマンドを入力することができます:java -jar xxx.war
アクセスをhttp://localhost:8082/index
、あなたは、該当するページを取得することができます。
外部容器
外部Tomcatコンテナを使用する場合には、上記の手順の転換の必要性、直接戦争パッケージの上に展開することができます。
1、起動クラスを変更します
統合SpringBootServletInitializer、および次のメソッドを継承します。
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
外側容器は、Springアプリケーションコンテキストではなく、主な機能を起動する方法web.xml構成ファイルに似ています。以上は、同様に、web.xmlに、Springアプリケーションコンテキストリスナーの変換を開始するための責任を負うように構成します。
2、依存関係を修正
プロジェクトでは、それ以外の場合はエラーを開始し、容器の外側に配置し、Tomcatの競合を解決する必要が埋め込まれます。この記事では、二つの解決策を示しています。
埋め込みのTomcatの1)除去
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
JSPと分析範囲はつまり、提供瓶に設定されています:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
2)以下の依存関係を追加します(推奨)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
著者はそれも開始するための適切なコマンドラインで、外部のコンテナに配備、このソリューションをお勧めします。
概要
この記事ではSpringBoot使用JSPの分析です。パフォーマンス向上のためのテンプレートエンジンにJSPの相対。しかし、それにもかかわらず、作者はそれをお勧めしますが、テンプレートエンジンThymelafを使用しようとしません。読者が読んで理解することができない前の章を。