Spring MVC は SpringFrameWork のフォローアップ製品であり、Spring Web Flow に統合されています。今日は Spring MVC HelloWorld を書くことから始めます。Spring MVC 環境をセットアップしてプログラムを実行する方法を見てみましょう。興味のある方は一緒に学びましょう
Spring MVC とは何ですか
。 SpringFrameWork 後続製品は Spring Web Flow に統合されました。 Spring フレームワークは、Web アプリケーションを構築するためのフル機能の MVC モジュールを提供します。 Spring のプラグ可能 MVC アーキテクチャを使用すると、Web 開発に Spring を使用するときに、Spring の SpringMVC フレームワークを使用するか、Struts1、Struts2 などの他の MVC 開発フレームワークを統合するかを選択できます。
今日は Spring MVC HelloWorld を作成することから始めて、Spring MVC 環境をセットアップしてプログラムを実行する方法を見てみましょう。
ソフトウェアパラメータ
Eclipse: Mars.1 リリース (4.5.1)
Tomcat: 8.0.36
JDK: 1.8.0_60
Spring-framework: 4.0.4.RELEASE
新しいプロジェクト
ファイル-新規-その他で、動的Webプロジェクトを選択します
プロジェクトがビルドされた後のディレクトリ構造は次のようになります:
jarパッケージをインポートします
Spring m vc フレームワークに基づいています。 開発には、次の Spring jar パッケージを利用する必要があります:
spring-aop-4.0.4.RELEASE.jar spring-beans-4.0.4.RELEASE.jar spring-context-4.0.4.RELEASE.jar spring-core-4.0.4.RELEASE.jar spring-expression-4.0.4.RELEASE.jar spring-web-4.0.4.RELEASE.jar spring-webmvc-4.0.4.RELEASE.jar commons-logging-1.1.1.jar(用来打印log)
WEB-INF ディレクトリに新しい lib フォルダーを作成し、その中に上記の jar パッケージを置きます。
設定ファイルとコードの記述
web.xml(WEB-INF下) <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- 配置DispatchcerServlet --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置Spring mvc下的配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
注: 1. 行 12 ~ 15 は、spring mvc 設定ファイルの場所と名前を設定するために使用されます。ここでは、springmvc の新しい設定ファイルを示します。 xml が作成されます
2. 新しい springmvc.xml を作成する代わりにデフォルトのものを使用することもできます。デフォルトの設定ファイル形式は、springDispatcherServlet- に対応する /WEB-INF/[servlet-name]-servlet.xml です。 servlet.xml
3. ここでのサーブレット マッピングはインターセプト モードを示します。ここでは「/」で、html、js、jpg などの静的リソースを含むすべてのリクエストのインターセプトを示します。このとき、静的リソースにアクセスすると 404 エラーが報告されます。解決方法は後ほど紹介します
Springmvc.xml (scr 配下)
src ディレクトリに springmvc.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" 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 http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 配置自动扫描的包 --> <context:component-scan base-package="com.jackie.springmvc"></context:component-scan> <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value="/WEB-INF/views/"></property> <property name = "suffix" value = ".jsp"></property> </bean> </beans>
注: 1. Line12 は Spring 監視の範囲を示します。 is in com.jackie. under springmvc
2. 15行目から18行目は、コントローラー内のハンドラー構造を実際の物理ビューに解析するためのビューパーサーを追加します。詳細は以下を参照してください。 。
HelloWorld.java(com.jackie.springmvc.handlers下) package com.jackie.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorld { /** * 1. 使用RequestMapping注解来映射请求的URL * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析 * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作 * "/WEB-INF/views/success.jsp" * @return */ @RequestMapping("/helloworld") public String hello(){ System.out.println("hello world"); return "result"; } }
注:
1. まず、クラスの前に「Controller」アノテーションを追加して、メソッド hello()
がここに記述されることを示します。 2. hello メソッド 上記の @RequestMapping は、リクエスト パスを照合するために使用されます。たとえば、ここで一致するリクエスト パスは「http://localhost:8080/springTest/springmvc/helloworld」です。 tomcat サービスが開始されるので、ブラウザにこの URL を入力します。このとき、中断点がこのメソッド内にある場合は、このメソッドにジャンプします。
3. この戻り値はランダムな書き込みではなく、上記の springmvc.xml の line15-18 と一致し、両者の間に挟まれた文字列が返されます。このメソッドを実行すると、要求されたリソース パス「/WEB-INF/views/success.jsp」を取得できるようになります。この success.jsp では、(WebContent の下に) 新しいインデックスを作成する必要があります。新しい success.jsp には、入り口が必要です。ここでは、index.jsp です
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <a href="helloworld" rel="external nofollow" >hello world</a> </body> </html>
Index.jsp にアクセスすると、ページにハイパーリンクが表示されます。ハイパーリンクをクリックします。チェーンの後に、アドレスが表示されます。 URL内の「http://localhost:8080/springTest/index.jsp」から「http://localhost:8080/springTest/helloworld」にジャンプし、このURLリクエストはHelloWorldのhelloメソッドに入ります。メソッドの「/helloworld」と一致します。
success.jsp (WEB-INF/views配下)
このページは、リクエストが成功した後の対応するページとして使用されます
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h4>Success Page</h4> </body> </html>
この時点で、以下に基づいたHelloWorldプログラムの開発が完了しました。 Spring mvc フレームワーク (依存関係の jar パッケージ、設定ファイル、コントローラー コードの作成、表示ページの作成など)。
除此以外,再介绍下整个配置过程中遇到的一些小问题:
1. tomcat服务器的添加
从前面的介绍可以看出,我们的程序是通过浏览器发请求来获取想要的页面,那么这里就免不了要有一个web服务器,这里就是tomcat。
首先你需要下载个tomcat,然后在eclipse->windows->preference->servers中绑定这个tomcat服务器;
其次你需要在你新建的spring mvc项目中添加tomcat的支持,否则在新建的jsp文件中会提示报错“The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path”
右键项目->build path->configure build path->add library->server runtime, 选择你的tomcat即可
有了tomcat服务器,你就可以在index.jsp上右键run on server,选择你的tomcat服务器,这样就可以启动tomcat服务,帮助你完成网页的请求和响应操作。
2. spring mvc如何访问静态资源
关于使用spring mvc处理静态资源,比如html(发现之前的springmvc.xml中16244cc5c17ada7705a50328620bea5adde4123f2ed5a21d0bae333af89830f9定义为jsp结尾就可以成功跳转,但是如果改为html并在web-inf下面新建了html文件后,并将suffix这里的".jsp"改为".html",无法跳转到想要的html页面,并且给出404错误,同时console给出错误信息为:No mapping found for HTTP request with URI [/springTest/WEB-INF/views/result.html] in DispatcherServlet)
最后发现是需要让spring明确要处理静态资源,原来的web.xml中只有
<servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
其匹配的都是controller中类似@RequestMapping("/springmvc/helloworld")这样的注解配置的请求,而对于类似html/css/jpg等资源的访问就会得不到,所以需要在web.xml中加入以下类型的支持
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
这样就可以保证spring 能够拦截并处理静态资源
这里将HelloWorld.java中的hello方法改为:
@RequestMapping("/helloworld") public String hello(){ System.out.println("hello world"); return "Jackie"; }
Springmvc.xml改为:
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value="/WEB-INF/views/"></property> <property name = "suffix" value = ".jpg"></property> </bean>
以上がSpring MVC の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。