構成バージョン
1.新しいMoudle、springmvc-02-helloを作成し、Webサポートを追加します。
2.SpringMVCの依存関係を必ずインポートしてください。
3. 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>
4. SpringMVC構成ファイルを作成します!名前:springmvc-servlet.xml:[servletname] -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
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
5.処理マッパーを追加します
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
6.プロセッサアダプタを追加します
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
7.ビューリゾルバーを追加します
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
8.操作するビジネスコントローラーを作成するには、コントローラーインターフェイスを実装するか、注釈を追加します。ModelAndViewを返し、データを読み込み、ビューをシールする必要があります。
package com.kuang.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里我们先导入Controller接口
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中。Model
mv.addObject("msg","HelloSpringMVC!");
//封装要跳转的视图,放在ModelAndView中
mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
return mv;
}
}
9. SpringIOCコンテナに独自のクラスを与え、Beanを登録します
<!--Handler-->
<bean id="/hello" class="com.kuang.controller.HelloController"/>
10.ジャンプ先のjspページを記述し、ModelandViewに保存されているデータと通常のページを表示します。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Kuangshen</title>
</head>
<body>
${msg}
</body>
</html>
11.テストを開始するようにTomcatを構成します。
考えられる問題:アクセス中に404が表示される、トラブルシューティングの手順:
コンソール出力をチェックして、不足しているjarパッケージがないかどうかを確認します。
jarパッケージが存在し、表示を出力できない場合は、IDEAプロジェクトリリースにlib依存関係を追加してください。
Tomcatを再起動して解決してください!
要約:これを見ると、ほとんどの学生が原理を理解できると推定されますが、実際の開発ではこれを記述しません。そうしないと、クレイジーになります。なぜまだこのことを学ぶのですか。注釈付きバージョンの実装を見てみましょう。
注釈付きバージョン
1.新しいMoudle、springmvc-03-hello-annotationを作成します。Webサポートを追加してください!
2. 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>
3. pom.xmlファイルに関連する依存関係を導入します:主にSpringフレームワークコアライブラリ、Spring MVC、サーブレット、JSTLなど。親依存関係に導入しました!
4.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">
<!--1.注册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エラーが発生します。報告されています。
web.xmlバージョンの問題に注意し、最新バージョンを要求してください!
DispatcherServletを登録する
関連するSpringMVC構成ファイル
起動レベルは1です
マッピングパスは/ [/ *を使用しないでください。404になります]
5.
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.kuang.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
ビューリゾルバーを構成する
6.コントローラーを作成します
Java制御クラスを記述します:com.kuang.controller.HelloController、コーディング標準に注意してください
package com.kuang.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/HelloController")
public class HelloController {
//真实访问地址 : 项目名/HelloController/hello
@RequestMapping("/hello")
public String sayHello(Model model){
//向模型中添加属性msg与值,可以在JSP页面中取出并渲染
model.addAttribute("msg","hello,SpringMVC");
//web-inf/jsp/hello.jsp
return "hello";
}
}
@Controllerは、SpringIOCコンテナーが初期化されたときに自動的にスキャンされるようにするためのものです。
@RequestMappingは、リクエストパスをマッピングするためのものです。ここでは、クラスとメソッドにマッピングがあるため、アクセスするときは/ HelloController / helloである必要があります。
このメソッドは、モデルタイプのパラメーターを宣言して、アクションのデータをビューに表示します。
メソッドによって返される結果は、ビューhelloの名前に加えて、構成ファイル内のプレフィックスとサフィックスであり、WEB-INF / jsp /hello.jspになります。
7、ビューレイヤーを作成します
WEB-INF / jspディレクトリにhello.jspを作成します。ビューは、コントローラから戻された情報を直接取得して表示できます。
モデルに格納されている値またはオブジェクトは、EL表現を介して取得できます。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SpringMVC</title>
</head>
<body>
${msg}
</body>
</html>
8.実行するようにTomcatを構成します
Tomcatを構成し、サーバーを起動して、対応する要求パスにアクセスします。
OK、操作は成功しました!
概要
実装手順は実際には非常に単純です。
新しいWebプロジェクトを作成する
関連するjarパッケージをインポートします
web.xmlを記述し、DispatcherServletを登録します
springmvc構成ファイルを書き込む
次のステップは、対応する制御クラス、コントローラーを作成することです
最後に、フロントエンドビューとコントローラー間の対応を改善します
テスト実行のデバッグ。
springMVCを使用するために構成する必要がある3つのこと:
プロセッサーマッパー、プロセッサーアダプター、ビューリゾルバー
通常、ビューパーサーを手動で構成するだけでよく、プロセッサーマッパーとプロセッサーアダプターはアノテーションドライバーを有効にするだけで済み、多くのxml構成を節約できます。