javascript
Spring MVC开发–快速教程
(注意:對(duì)原始帖子進(jìn)行了少量編輯以提高可讀性)
Spring MVC使用基于模型視圖控制器體系結(jié)構(gòu)(MVC)模式的框架,可以輕松進(jìn)行Web應(yīng)用程序開發(fā)。 MVC架構(gòu)模式要求將用戶界面(視圖),正在處理的數(shù)據(jù)(模型)和管理視圖與模型之間的交互的控制器分開。
Spring MVC的核心是Servlet,即DispatcherServlet ,它處理每個(gè)請求。 DispatcherServlet將HTTP請求路由到應(yīng)用程序開發(fā)人員創(chuàng)建的Controller類。 控制器類處理請求,并確定應(yīng)將哪個(gè)視圖作為響應(yīng)的一部分顯示給用戶。
讓我們開發(fā)一個(gè)簡單的Web應(yīng)用程序,該應(yīng)用程序接收請求并將一些數(shù)據(jù)發(fā)送回用戶。 在繼續(xù)進(jìn)行任何操作之前,建議您從此處下載源代碼。
對(duì)于本教程,您還需要:
1.像Tomcat這樣的servlet容器
2. Spring3.0
3. Eclipse是可選的。 我使用eclipse作為我的IDE。 Eclipse使您可以導(dǎo)出可以部署到Tomcat的戰(zhàn)爭。 但是您也可以使用其他IDE或命令行工具。 4.需要對(duì)JSP和Servlet有一定的了解。
步驟1:如果要在J2EE中開發(fā)Web應(yīng)用程序,通常可以通過開發(fā)打包在.war文件中的servlet和/或JSP來實(shí)現(xiàn)。 還需要包含配置元數(shù)據(jù)的部署描述符web.xml。 這場戰(zhàn)爭被部署到了像Tomcat這樣的應(yīng)用服務(wù)器上。
使用Spring,首先要做的是通過將org.springframework.web.servlet.DispatcherServlet定義為該應(yīng)用程序的Servlet類,將Spring連接到此J2EE Web基礎(chǔ)結(jié)構(gòu)。 您還需要將org.springframework.web.context.ContextLoaderListener定義為偵聽器。 ContextLoaderListener負(fù)責(zé)加載具有Spring元數(shù)據(jù)的特定于Spring的應(yīng)用程序上下文。
web.xml設(shè)置確保servlet引擎將對(duì)應(yīng)用程序的每個(gè)請求都路由到DipatcherServlet 。 更新為web.xml如下所示:
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup> </servlet> <servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.htm</url-pattern> </servlet-mapping>步驟2:此Web應(yīng)用程序中的繁重工作由控制器類完成。 這是擴(kuò)展org.springframework.web.servlet.mvc.AbstractController的普通Java類或bean。 我們重寫handleRequestInternal方法。 在這種方法中,您將做一些處理請求的必要工作,其中可能包括例如從數(shù)據(jù)庫中讀取數(shù)據(jù)。
該方法返回一個(gè)org.springframework.web.servlet.ModelAndView對(duì)象,該對(duì)象封裝了視圖的名稱以及該視圖需要顯示的任何數(shù)據(jù)(模型)。 ModelAndView將數(shù)據(jù)作為名稱值對(duì)保存。此數(shù)據(jù)稍后可用于視圖。 如果視圖是jsp,則可以使用jstl技術(shù)或直接查詢Request對(duì)象來訪問數(shù)據(jù)。 我們的控制器的代碼如下所示:
public class SpringMVCController extends AbstractController {protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {ModelAndView mview = new ModelAndView("springmvc") ;mview.addObject("greeting", "Greetings from SpringMVC") ;mview.addObject("member1", new Member("Jonh","Doe", "1234 Main St","Pleasanton","94588","kh@gmail.com","1234")) ;return mview ;} }視圖springmvc的名稱將傳遞到ModelAndView的構(gòu)造函數(shù)中。 addObject方法調(diào)用將添加2個(gè)模型對(duì)象,即“ greeting”和“ member1”。 稍后,您將看到視圖如何檢索對(duì)象并顯示它們。
步驟3:每個(gè)Spring應(yīng)用程序都需要元數(shù)據(jù)來定義Bean及其依賴項(xiàng)。 對(duì)于此應(yīng)用程序,我們創(chuàng)建一個(gè)springmvc-servlet.xml。 我們通過在web.xml中指定其位置來幫助spring找到它。
<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc-servlet.xml</param-value> </context-param>在springmvc-servlet.xml中,控制器bean定義為:
<bean name="/*.htm" class="com.mj.spring.mvc.SpringMVCController"/>步驟4: DispatcherServlet如何知道哪個(gè)控制器應(yīng)該處理請求?
Spring使用處理程序映射將控制器與請求相關(guān)聯(lián)。 2個(gè)常用的處理程序映射是BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping 。
在BeanNameUrlHandlerMapping中 ,當(dāng)請求URL與bean的名稱匹配時(shí),bean定義中的類就是將處理請求的控制器。
在我們的示例中,我們使用BeanNameUrlHandlerMapping,如下所示。 每個(gè)以.htm結(jié)尾的請求url由SpringMVCController處理。
<bean name="/*.htm" class="com.mj.spring.mvc.SpringMVCController"/>在SimpleUrlHandlerMapping中,映射更加明確。 您可以指定許多URL,并且每個(gè)URL都可以與控制器明確關(guān)聯(lián)。
步驟5: DispatcherServlet如何知道作為響應(yīng)返回什么?
如前所述,控制器的handleRequestInternal方法返回ModelAndView對(duì)象。
在上面顯示的控制器代碼中,視圖“ springmvc”的名稱在ModelAndView的構(gòu)造函數(shù)中傳遞。 至此,我們剛剛給出了視圖的名稱。 我們沒有說什么文件,類或工件有助于產(chǎn)生html,也沒有說使用的視圖技術(shù)是JSP還是速度模板還是XSLT。 為此,您需要一個(gè)ViewResolver ,它提供視圖名稱和具體視圖之間的映射。 Spring使您可以使用許多不同的技術(shù)來生成具體視圖,但是對(duì)于本示例,我們將使用JSP。
Spring提供了一個(gè)支持JSP的InternalResourceViewResolver類,并且springmvc-servlet.xml中的以下聲明告訴spring我們正在使用此解析器。 在視圖名稱中添加了前綴和后綴,以生成呈現(xiàn)視圖的jsp文件的路徑。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property> </bean>步驟6:在此示例中,視圖解析為springmvc.jsp,該視圖使用JSTL獲取并顯示數(shù)據(jù)。 Spring使JSP可以將模型對(duì)象“ greeting”和“ member1”用作請求范圍對(duì)象。 出于教育目的,下面的代碼也直接從請求中獲取對(duì)象。
// Using JSTL to get the model data ${greeting} ${member1.lastname// Using java to get the model directly from the request Map props = request.getParameterMap() ; System.out.println("PARAMS =" + props) ; Enumeration em = request.getAttributeNames() ; while (em.hasMoreElements()) {String name = (String) em.nextElement() ;System.out.println("name = "+name) ; } System.out.println("Attrs are "+request.getAttributeNames()) ; System.out.println("greeting is "+ request.getAttribute("greeting")) ; Member m = (Member)request.getAttribute("member1") ; System.out.println("member is "+m.toString()) ;步驟7:到目前為止,我們開發(fā)的所有文件都應(yīng)打包到war文件中,就像在任何Web應(yīng)用程序中一樣。 通過復(fù)制到tomcat_install \ webapps,可以將戰(zhàn)爭部署到tomcat。 我發(fā)動(dòng)了一場戰(zhàn)爭,您可以在這里下載。
步驟8:將您的Web瀏覽器指向http:// localhost:8080 / springmvc / test.htm以運(yùn)行該應(yīng)用程序。 瀏覽器應(yīng)顯示數(shù)據(jù)。
總而言之,Spring通過提供可以輕松組裝的構(gòu)建塊來簡化Web應(yīng)用程序的開發(fā)。 我們使用Spring MVC構(gòu)建了一個(gè)Web應(yīng)用程序。 Spring提供了一種簡單的方法來將我們的模型,控制器SpringMVCController和視圖springmvc.jsp連接在一起。 我們不必顯式地編寫任何請求/響應(yīng)處理邏輯。 通過更改springmvc-servlet.xml中的元數(shù)據(jù),您可以切換到其他控制器或其他視圖技術(shù)。
沒錯(cuò) ,我們的JCG合作伙伴 Manoj Khangaonkar 提供了使用Spring開發(fā)Web應(yīng)用程序的簡單指南。 您可以在此處找到為本教程創(chuàng)建的源代碼。 別忘了分享!
相關(guān)文章:
- JBoss 4.2.x Spring 3 JPA Hibernate教程
- 使用Spring將POJO公開為JMX MBean
- Spring3 RESTful Web服務(wù)
- 帶有Spring和Maven教程的JAX–WS
- 使用Spring Security保護(hù)GWT應(yīng)用程序
- 使用Spring AspectJ和Maven進(jìn)行面向方面的編程
- Spring MVC攔截器示例
- 在Spring容器中聲明bean
- 使用Spring發(fā)送電子郵件
翻譯自: https://www.javacodegeeks.com/2011/02/spring-mvc-development-tutorial.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Spring MVC开发–快速教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提升您的休眠引擎
- 下一篇: gradle idea java ssm