日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Spring4 MVC HelloWorld 注解和JavaConfig实例

發布時間:2025/3/17 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring4 MVC HelloWorld 注解和JavaConfig实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在這一節中,我們以 Spring4?MVC HelloWorld 注釋/JavaConfig為示例,一步一步以簡單的方式學習Spring4 MVC 的注解,項目設置,代碼,部署和運行。

?

在先前的?Spring MVC 4 Hello World XML教程示例中,?我們已經使用XML配置開發了一個Hello?World?Web應用程序。但是,XML不是配置Spring應用程序的唯一途徑。或者,我們可以使用Java配置來配置應用程序。

如果回頭看看之前的教程,你會發現我們已經使用XML配置在兩個地方。第一個是?spring-servlet.xml?在這里我們定義的視圖解析程序識別真正的視圖,位置搜索,通過組件掃描Bean。第二個是?web.xml,?我們定義前端控制器配置和URL模式將被尋找匹配。

在本教程中,我們將再次創建一個Hello?world的例子,但這個時候我們使用Java配置。?我們將刪除上面提到的XML文件,并通過它們對應的Java替換這些XML配置。


以下技術堆棧需要使用到:
  • Spring 4.0.6.RELEASE
  • Maven 3
  • JDK 1.6
  • Tomcat 8.0.21
  • Eclipse JUNO Service Release 2

現在我們開始!

第1步:創建所需的目錄結構項目

文章?使用Eclipse創建一個Maven web工程?包含使用Eclipse一步一步的向導來創建一個Maven項目。

以下將是最后的項目結構。

現在,讓我們來添加/更新上面討論項目結構中每一個細節提到的內容。 第2步:使用Spring和Servlet依賴更新pom.xml

我們要討論以 Spring?Java為基礎的配置取決于Servlet 3.0 的API,?因此,我們需要包含的依賴在 pom.xml?中。

<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><groupId>com.yiibai.springmvc</groupId><artifactId>Spring4MVCHelloWorldNoXMLDemo</artifactId><packaging>war</packaging><version>1.0.0</version><name>Spring4MVCHelloWorldNoXMLDemo</name><properties><springframework.version>4.0.6.RELEASE</springframework.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.4</version><configuration><warSourceDirectory>src/main/webapp</warSourceDirectory><warName>Spring4MVCHelloWorldNoXMLDemo</warName><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></pluginManagement><finalName>Spring4MVCHelloWorldNoXMLDemo</finalName></build> </project>?

首先要注意這里maven-war-plugin?插件的聲明。正如我們將完全刪除web.xml?,我們需要配置這個插件,以避免Maven構建war包失敗。第二個變化是加入了JSP/Servlet/Jstl?的依賴關系,這些我們可能需要,因為我們將要使用?servlet?API和JSTL視圖在我們的代碼中。在一般情況下,容器已經包含這些庫,從而在pom.xml中為他們提供了,我們可以設置作用范圍。

第3步:添加控制器 在src/main/java下添加一個控制器類,如下所示:

com.yiibai.springmvc.controller.HelloWorldController

package com.yiibai.springmvc.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;@Controller @RequestMapping("/") public class HelloWorldController {@RequestMapping(method = RequestMethod.GET)public String sayHello(ModelMap model) {model.addAttribute("greeting", "Hello World from Spring 4 MVC");return "welcome";}@RequestMapping(value = "/helloagain", method = RequestMethod.GET)public String sayHelloAgain(ModelMap model) {model.addAttribute("greeting", "Hello World Again, from Spring 4 MVC");return "welcome";}}?

在類名@Controller注解聲明這個類的Spring?bean?以及?@RequestMapping注解聲明了這個類是默認處理程序鍵入“/”的所有請求。第一種方法沒有聲明因此任何映射,它將繼承映射的映射聲明是在類級別上,默認處理GET請求。方法二(由于額外的映射聲明使用value屬性)形式?/hello?將再次請求。屬性方法說哪種類型的HTTP請求這種方法可以服務。

方法說哪種類型的HTTP請求這種方法可以服務。?ModelMap是一個Map實現,在這里作為替代[request.getAttribute()/request.setAttribute()]?設定值作為請求屬性。請注意,我們從這個方法返回“welcome”字符串。此字符串將后綴和前綴后綴,在視圖解析器定義的前綴(見上面的?spring-servlet.xml),形成真正的視圖文件名。

第4步:添加視圖

創建一個新的文件夾命名為views在WEB-INF目錄下,并添加一個簡單的JSP頁面welcome.jsp?(WEB-INF/views/welcome.jsp)從控制器到簡單的訪問模式值。

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> <!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=utf-8"> <title>HelloWorld page</title> </head> <body>Greeting : ${greeting} </body> </html> 第5步:添加配置類

在src/main/java下添加下面提到的類指定的包,如下圖所示。這種構造類可以被看作是一個替代 spring-servlet.xml,因為它包含了所有必需的組件的掃描和視圖解析器的信息。

com.yiibai.springmvc.configuration.HelloWorldConfiguration

package com.yiibai.springmvc.configuration;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView;@Configuration @EnableWebMvc @ComponentScan(basePackages = "com.yiibai.springmvc") public class HelloWorldConfiguration {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setViewClass(JstlView.class);viewResolver.setPrefix("/WEB-INF/views/");viewResolver.setSuffix(".jsp");return viewResolver;}}?

@Configuration指明該類包含注解為@Bean 生產 bean管理是由Spring容器的一個或多個bean方法。?以上配置類對應等同于以下XML:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"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-4.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:component-scan base-package="com.yiibai.springmvc" /><mvc:annotation-driven /><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix"><value>/WEB-INF/views/</value></property><property name="suffix"><value>.jsp</value></property></bean></beans>

@EnableWebMvc?等同于?mvc:annotation-driven 在XML中.?它能夠為使用@RequestMapping向特定的方法傳入的請求映射@Controller-annotated?類。

@ComponentScan?等同于?context:component-scan base-package="..."?提供?spring?在哪里尋找 管理?beans/classes.

第6步:添加初始化類

添加一個初始化類實現?WebApplicationInitializer?在src/main/java?中使用如下圖所示指定包(在這種情況下,作為替代在?web.xml?中定義的任何?Spring?配置)。在Servlet?3.0的容器啟動時,這個類將被加載并初始化,并在啟動由servlet容器調用方法。

com.yiibai.springmvc.configuration.HelloWorldInitializer

package com.yiibai.springmvc.configuration;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration;import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet;public class HelloWorldInitializer implements WebApplicationInitializer {public void onStartup(ServletContext container) throws ServletException {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(HelloWorldConfiguration.class);ctx.setServletContext(container);ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));servlet.setLoadOnStartup(1);servlet.addMapping("/");}}

內容上面類似 web.xml 在之前的教程中的內容,因為我們使用的是前端控制器 DispatcherServlet,分配映射(URL模式的XML)和而不是提供給?Spring?配置文件(spring-servlet.xml)的路徑,在這里,我們正在注冊的配置類。總體而言,我們都在做同樣的事情,只是方式有所不同。

更新:請注意,現在你可以更簡潔寫上面的類[和它的最佳方法] 來擴展?AbstractAnnotationConfigDispatcherServletInitializer?類,如下所示:

package com.yiibai.springmvc.configuration;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class HelloWorldInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[] { HelloWorldConfiguration.class };}@Overrideprotected Class<?>[] getServletConfigClasses() {return null;}@Overrideprotected String[] getServletMappings() {return new String[] { "/" };}} 第7步:構建和部署應用程序

有一點要記住,像WebApplicationInitializer,Spring?是基于Java?的配置API依賴于?Servlet3.0容器。確保你沒有使用Servlet聲明任何小于3.0。對于我們的情況,我們將從應用程序中刪除 web.xml 文件。

現在構建war?(無論是作為Eclipse中提到的最后一個教程)或通過Maven的命令行(mvn?clean?install)。部署war?到Servlet3.0容器。由于我在這里使用Tomcat,我就干脆把這個 war 文件放到 Tomcat 的 webapps 文件夾,然后在 tomcat 的bin 目錄里面點擊 start.bat?運行。

或者 右鍵工程 =>Run As => Maven install 完成后,再次?右鍵工程 =>Run As => Maven build,彈出選擇:

運行應用程序,現在我們來訪問URL: http://localhost:8080/Spring4MVCHelloWorldNoXMLDemo,顯示結果如下所示:


就這樣,完成!

代碼下載:http://pan.baidu.com/s/1nugPMcT

轉載于:https://www.cnblogs.com/taiwan/p/7615379.html

總結

以上是生活随笔為你收集整理的Spring4 MVC HelloWorld 注解和JavaConfig实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。