3.最初のMVCプログラム
3.1、HelloSpringMVC
前のセクションでは、SpringMVCとは何か、そしてそれがどのように機能するかを学びました。
それでは、SpringMVCを使用してプログラムをすばやく作成する方法を見てみましょう。
3.2、構成バージョン
-
新しいMoudle、springmvc-02-hellomvc1を作成し、モジュールにWebフレームワークサポートを追加します
-
SpringMVCの依存関係を必ずインポートしてください!
-
web.xmlを構成し、DispatcherServletを登録します
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--1.注册DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动级别-1--> <load-on-startup>1</load-on-startup> </servlet> <!--/ 匹配所有的请求;(不包括.jsp)--> <!--/* 匹配所有的请求;(包括.jsp)--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
-
SpringMVC設定ファイルを書いてください!名前:springmvc-servlet.xml、命名形式は、web.xmlと比較して、公式のものに従い
classpath:springmvc-servlet.xml
ます。ここでの名前の要件は公式のものであることを説明します。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> </beans>
-
処理マッパーを追加
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
-
処理アダプターを追加します
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
-
ビューリゾルバをスプライスビューアドレスに追加します
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--后缀--> <property name="suffix" value=".jsp"/> </bean>
-
操作するビジネスコントローラーを作成するには、コントローラーインターフェイスを実装するか、アノテーションを追加します。ModelAndViewを返し、データを読み込み、ビューをシールする必要があります。
package com.kuber.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { //ModelAndView 模型和视图,模型装数据;视图把模型渲染,显示数据; ModelAndView mv = new ModelAndView(); //封装对象,放在ModelAndView中。Model mv.addObject("msg","终于学到SpringMVC了,奥里给!"); //封装要跳转的视图,放在ModelAndView中 mv.setViewName("hello"); //自动拼接成: /WEB-INF/jsp/hello.jsp return mv; } }
-
コントローラークラスをSpringIOCコンテナーに与え、Beanを登録します
<!--Handler--> <bean id="/hello" class="com.kuber.controller.HelloController"/>
-
ジャンプするjspページを記述し、ModelandViewに保存されているデータを表示し、保存されているデータmsgと通常のページを渡します。
<%-- Created by IntelliJ IDEA. User: kuber Date: 2020/12/7 Time: 13:54 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html>
-
Tomcatを構成し、テストを開始します
-
考えられる問題:アクセス時に404が表示され、トラブルシューティング手順:
- コンソール出力をチェックして、不足しているjarパッケージがないかどうかを確認します。
- jarパッケージが存在し、表示を出力できない場合は、IDEAプロジェクトリリースにlib依存関係を追加してください。
- Tomcatを再起動して解決してください!
要約:これを見ると、ほとんどの学生が原理を理解できると推定されますが、実際の開発ではこれを記述しません。注釈付きバージョンの実装を見てみましょう。これがSpringMVCの本質です。
3.3、注釈付きバージョン
-
新しいMoudle、springmvc-03-hello-annotationを作成します。Webサポートを追加してください!
-
Mavenにはリソースフィルタリングの問題がある可能性があるため、完全に構成します
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
-
関連する依存関係をpom.xmlファイルに導入します:主にSpringフレームワークコアライブラリ、Spring MVC、サーブレット、JSTLなど。実際、これは親の依存関係に導入されています。
-
web.xmlを構成します
注意点:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--注册servlet--> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动顺序,数字越小,启动越早--> <load-on-startup>1</load-on-startup> </servlet> <!--所有请求都会被springmvc拦截--> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
/と/ *の違い: <url-pattern> / </ url-pattern>は、作成したリクエストに対してのみ.jspと一致しません。つまり、.jspはSpringDispatcherServletクラスに入りません。<url-pattern> / * </ url-pattern>は* .jspと一致し、jspビューに戻ると、SpringのDispatcherServletクラスが再び表示されます。その結果、対応するコントローラーが見つからないため、404エラーが発生します。報告されています。
-
SpringMVC構成ファイルを追加します
リソースディレクトリの下にspringmvc-servlet.xml設定ファイルを追加します。設定フォームは基本的にSpringコンテナ設定に似ています。アノテーションベースのIOCをサポートするために、自動スキャンパッケージ機能が設定されています。具体的な設定情報は次のとおりです。 :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 --> <context:component-scan base-package="com.kuber.controller"/> <!-- 让Spring MVC不处理静态资源 --> <mvc:default-servlet-handler /> <!-- 支持mvc注解驱动 在spring中一般采用@RequestMapping注解来完成映射关系 要想使@RequestMapping注解生效 必须向上下文中注册DefaultAnnotationHandlerMapping 和一个AnnotationMethodHandlerAdapter实例 这两个实例分别在类级别和方法级别处理。 而annotation-driven配置帮助我们自动完成上述两个实例的注入。 --> <mvc:annotation-driven /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> </beans>
-
ビューリゾルバーでは、すべてのビューを/ WEB-INF /ディレクトリに保存します。これにより、このディレクトリ内のファイルにクライアントが直接アクセスできないため、ビューのセキュリティを確保できます。
-
- IOCコメントを有効にする
- 静的リソースフィルタリング:HTML。JS。CSS。写真、ビデオ...
- アノテーション駆動型MVC
- ビューリゾルバーを構成する
-
コントローラを作成する
Java制御クラスを記述します:com.kuang.controller.HelloController、コーディング標準に注意してください
package com.kuber.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller /*代表这个类会被spring接管, 标有这个注解的类的所有方法如果其返回值为string, 并且返回值为相应的跳转界面的名称,那么就会被视图解析器解析*/ public class HelloController { @RequestMapping("/h1")//就是url-pattern public String HelloMsg(Model model){ //向模型中添加属性msg与值,可以在JSP页面中取出并渲染 model.addAttribute("msg","hello,SpringMVC annotation!"); //拼接路径为:web-inf/jsp/helloannotation.jsp return "helloannotation"; } }
- @Controllerは、SpringIOCコンテナーが初期化されたときに自動的にスキャンされるようにするためのものです。
- @RequestMappingは、リクエストパスをマッピングするためのものです。ここでは、クラスとメソッドにマッピングがあるため、アクセスするときは/ helloにする必要があります。
- このメソッドは、モデルタイプのパラメーターを宣言して、アクションのデータをビューに表示します。
- メソッドによって返される結果は、ビューhelloの名前に加えて、構成ファイルのプレフィックスとサフィックスがWEB-INF / jsp /helloannotation.jspになります。
-
ビューレイヤーを作成します
-
WEB-INF / jspディレクトリにhello.jspを作成すると、ビューはコントローラから戻された情報を直接取得して表示できます。
-
モデルに格納されている値またはオブジェクトは、EL表現を介して取得できます。
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${msg} </body> </html>
-
実行するようにTomcatを構成する
Tomcatを構成し、サーバーを起動して、対応する要求パスにアクセスします。
実行に問題はありません。すべて成功しました。覚えておいてください。新しい空白のモデルの場合は、Webサポートを追加した後、次のことを忘れないでください。
新しいlibディレクトリを作成し、すべてのパッケージをそのディレクトリにインポートします。
3.4まとめ
実装手順は実際には非常に単純です。
- 新しいWebプロジェクトを作成する
- 関連するjarパッケージをインポートします
- web.xmlを記述し、DispatcherServletを登録します
- springmvc構成ファイルを書き込む
- 次のステップは、対応する制御クラス、コントローラーを作成することです
- 最後に、フロントエンドビューとコントローラー間の対応を改善します
- テスト実行のデバッグ。
springMVCを使用するには、次の3つの設定が必要です。
プロセッサーマッパー、プロセッサーアダプター、ビューリゾルバー
通常、ビューパーサーを手動で構成するだけでよく、プロセッサーマッパーとプロセッサーアダプターはアノテーションドライバーを開くだけで、多くのxml構成を保存できます。