`

2、Spring4 MVC HelloWorld 注解和JavaConfig实例

 
阅读更多

使用Spring和Servlet依赖更新pom.xml
<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>
首先要注意这里maven-war-plugin 插件的声明。正如我们将完全删除web.xml ,我们需要配置这个插件,以避免Maven构建war包失败。第二个变化是加入了JSP/Servlet/Jstl 的依赖关系,这些我们可能需要,因为我们将要使用 servlet API和JSTL视图在我们的代码中。在一般情况下,容器已经包含这些库,从而在pom.xml中为他们提供了,我们可以设置作用范围。

添加控制器
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),形成真正的视图文件名。
添加视图
<%@ 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>
添加配置类
在src/main/java下添加下面提到的类指定的包,如下图所示。这种构造类可以被看作是一个替代 spring-servlet.xml,因为它包含了所有必需的组件的扫描和视图解析器的信息。
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 {
@Bean
public 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.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://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 />

<bean
class="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.

添加初始化类
添加一个初始化类实现 WebApplicationInitializer 在src/main/java 中使用如下图所示指定包(在这种情况下,作为替代在 web.xml 中定义的任何 Spring 配置)。在Servlet 3.0的容器启动时,这个类将被加载并初始化,并在启动由servlet容器调用方法
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 {

@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { HelloWorldConfiguration.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}

}
构建和部署应用程序

有一点要记住,像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,弹出选择:




分享到:
评论

相关推荐

    spring MVC的HelloWorld完整实例

    这个"HelloWorld"实例是初学者学习Spring MVC的入门项目,它展示了如何配置、创建和运行一个基本的Spring MVC应用。下面将详细介绍这个实例中的关键知识点。 1. **Spring MVC架构**: Spring MVC遵循模型-视图-...

    Spring MVC Helloworld实例

    在这个“Spring MVC Helloworld实例”中,我们将会探讨如何利用Spring MVC 3.0.5版本创建一个简单的Hello World应用程序。这个实例包括了所有必要的jar包,使开发者能够快速地开始他们的开发工作。 首先,了解...

    Spring MVC HelloWorld Maven实例

    **Spring MVC HelloWorld Maven实例** Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。在这个实例中,我们将深入理解如何使用Maven构建一个基本的“Hello, World!”...

    spring5.0_mvc_maven项目_HelloWorld实例

    在这个"HelloWorld"实例中,我们将深入探讨如何使用Spring 5.0 MVC和Maven构建一个基本的应用程序。 首先,让我们了解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制器,负责接收...

    Spring4 HelloWorld

    Spring框架是Java开发中广泛使用的轻量级框架,它以其依赖...学习和理解"Spring4 HelloWorld",不仅能够帮助初学者掌握Spring的基本用法,也为进一步深入学习Spring的其他高级特性,如AOP、MVC、JPA等打下坚实基础。

    基于xml配置的spring mvc Helloworld实例

    在这个基于XML配置的Spring MVC HelloWorld实例中,我们将深入理解如何设置并运行一个基本的Spring MVC项目。 首先,Spring MVC的核心在于DispatcherServlet,它是整个应用的入口点,负责处理所有的HTTP请求。在`...

    spring MVC Helloworld

    **Spring MVC HelloWorld 实例详解** 在Java Web开发中,Spring MVC框架被广泛使用,它为构建基于模型-视图-控制器(MVC)模式的Web应用程序提供了强大的支持。本篇文章将详细讲解如何在MyEclipse2013环境中创建一...

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...

    Springmvc的helloWorld实例

    **Spring MVC HelloWorld 实例详解** 在Java Web开发中,Spring MVC是一个非常重要的框架,它用于构建灵活、可扩展的Web应用程序。本实例将带你深入理解Spring MVC 4.0的基本用法,通过一个简单的"Hello World"应用...

    Spring mvc、 Spring、 Mybatis、 注解实例、 项目实例 从入门到项目实战

    4. **注解实例**:注解在Java中是一种元数据,用于提供程序信息。在Spring框架中,注解被广泛用于配置类、方法、属性等,如`@Autowired`进行依赖注入,`@Service`、`@Repository`、`@Controller`定义不同类型的组件...

    spring3 MVC 入门hello world源码

    本篇将深入探讨Spring3 MVC的基础知识,通过"Hello World"实例来帮助初学者理解其核心概念和工作流程。 ### 一、Spring3 MVC架构 Spring3 MVC架构主要由DispatcherServlet、Controller、Model、View和ViewResolver...

    Spring MVC+hibernate helloworld

    这个简单的HelloWorld实例展示了Spring MVC和Hibernate的集成,以及如何进行基本的数据验证。 通过这个实例,你可以了解到如何将Spring MVC用于处理HTTP请求,使用Hibernate进行数据库操作,以及如何结合Spring的...

    spring3.0 mvc中文实例教程

    2. **创建Hello World应用程序**:引导读者完成第一个简单的Spring MVC应用。 3. **表单处理**:讲解如何在Spring MVC中处理用户输入的表单数据。 4. **Tiles支持与Eclipse插件教程**:介绍使用Tiles布局系统和...

    spring mvc web demo(helloworld)

    《Spring MVC Web应用初探:HelloWorld实例》 在IT领域,Spring MVC是Java开发者广泛使用的Web应用程序框架,它提供了模型-视图-控制器(MVC)架构模式,便于开发和管理复杂的Web应用。本教程将围绕“spring mvc ...

    spring mvc demo实例

    本实例是一个基础的Spring MVC "Hello, World!" 示例,旨在帮助初学者理解Spring MVC的核心概念和工作流程。 ### 1. MVC架构 MVC架构将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器...

    spring_mvc注解例子

    根据提供的信息,我们可以深入探讨Spring MVC框架中注解的应用及其如何简化开发流程。Spring MVC作为企业级应用开发的重要组成部分,采用注解的方式极大地方便了开发者,并减少了对XML配置文件的依赖。 ### Spring ...

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

    Spring MVC入门实例

    本篇文章将深入浅出地介绍 Spring MVC 的基本概念和入门实例。 ### 一、Spring MVC 架构 1. **模型(Model)**:负责管理应用程序的数据和业务逻辑。在 Spring MVC 中,模型通常由 Java 对象(Beans)组成,这些...

    spring3mvc 经典实例

    这个经典实例将引导初学者深入理解Spring MVC的核心概念和功能,特别是注解的使用,这对于现代Java开发至关重要。 首先,Spring MVC提供了一种模块化的架构,使得应用程序的各个部分可以独立设计和测试。它包括...

Global site tag (gtag.js) - Google Analytics