Spring4 MVC入门教程

  • MyEclipse 10
  • Spring 4.0.3.RELEASE

2- 预览应用程序执行流程

Spring MVC DispatcherServlet  读取 xml 配置文件的原则:

{servlet-name} ==> /WEB-INF/{servlet-name}-servlet.xml

Spring4 MVC入门教程_第1张图片


web.xml 文件中:


   my-dispatcher-name
   org.springframework.web.servlet.DispatcherServlet
   
       
       contextConfigLocation
       /WEB-INF/springmvc-myconfig.xml
   
   1
应用程序的流程:

Spring4 MVC入门教程_第2张图片

3 - 创建Maven工程

创建Maven项目类型。 Maven是帮助我们管理库的最好方式。
在 Eclipse, 选择 "File/New/Other..."

Spring4 MVC入门教程_第3张图片

Spring4 MVC入门教程_第4张图片

选择 archetype "maven-archetype-webapp"。

Spring4 MVC入门教程_第5张图片

输入:
  • Group Id: com.yiibai
  • Artifact Id: HelloSpringMVC
  • Package: com.yiibai.springmvc
Spring4 MVC入门教程_第6张图片

这样将创建项目,结构如下图所示:

Spring4 MVC入门教程_第7张图片

不要担心项目在创建的时候出现错误信息。原因是,现在我们还没有声明 Servlet 库。
在 Eclipse 中创建 Maven 项目结构可能是错误的。需要我们去检查出来并完善

Spring4 MVC入门教程_第8张图片

4- 配置Spring

这是项目建成后的文件结构图:

Spring4 MVC入门教程_第9张图片

配置 Maven 使用 Spring 库.
  • pom.xml

 
    4.0.0
    com.yiibai
    HelloSpringMVC
    war
    0.0.1-SNAPSHOT
    HelloSpringMVC Maven Webapp
    http://maven.apache.org
 
 
    
 
        
            junit
            junit
            3.8.1
            test
        
 
        
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
 
        
        
        
            org.springframework
            spring-core
            4.1.4.RELEASE
        
 
        
        
            org.springframework
            spring-web
            4.1.4.RELEASE
        
 
        
        
            org.springframework
            spring-webmvc
            4.1.4.RELEASE
        
 
    
     
    
        HelloSpringMVC
        
         
            
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                   
            
        
       
     
配置  web.xml:

    
   HelloWorldSpring
    
   
       spring-mvc
       
           org.springframework.web.servlet.DispatcherServlet
       
       1
      
    
   
       spring-mvc
       /
   
 
    
   
   
       contextConfigLocation
       /WEB-INF/root-context.xml
   
 
    
    
   
       org.springframework.web.context.ContextLoaderListener
   
    

Spring MVC 的 DispatcherServlet将根据原则读取XML配置文件:
{servlet-name} ==> /WEB-INF/{servlet-name}-servlet.xml

Spring4 MVC入门教程_第10张图片

spring-mvc-servlet.xml



 
   
    
   
    
   
        
       
           /WEB-INF/pages/
       
        
       
           .jsp
              
        
   
    
:
在Spring应用程序 ContextLoaderListener 将读取其他 XML 配置文件(如下的 abc.xml 和 root-context.xml 两个文件)。 可能不需要配置 ContextLoaderListener,如果你的应用程序并不需要读取其他XML配置文件。




org.springframework.web.context.ContextLoaderListener

 


contextConfigLocation

       /WEB-INF/root-context.xml,
       /WEB-INF/abc.xml
 
/WEB-INF/root-context.xml


 
  
 
HelloWorldController.java

package com.yiibai.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class HelloWorldController {
 
    @RequestMapping("/hello")
    public String hello(Model model) {
         
        model.addAttribute("greeting", "Hello Spring MVC");
         
        return"helloworld";
         
    }
 
}
Spring4 MVC入门教程_第11张图片

helloworld.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>




Spring4 MVC -HelloWorld


    

${greeting}

5- 运行Spring应用程序

首先,运行应用程序之前,需要构建整个项目。
右键单击该项目并选择:
  • Run As/Maven install
Spring4 MVC入门教程_第12张图片

Spring4 MVC入门教程_第13张图片

运行配置:

Spring4 MVC入门教程_第14张图片

Spring4 MVC入门教程_第15张图片

输入:

  • Name: Run HelloSpringMVC
  • Base directory: ${workspace_loc:/HelloSpringMVC} =>${workspace_loc:/HelloSpringMVC Maven Webapp}
  • Goals: tomcat7:run
Spring4 MVC入门教程_第16张图片

点击Run:

Spring4 MVC入门教程_第17张图片

第一次运行该程序将需要几分钟(看你的网速),它需要下载 Tomcat 插件库才能运行。
一切准备就绪:

Spring4 MVC入门教程_第18张图片

运行URL,如下图:
http://localhost:8080/HelloSpringMVC/hello

Spring4 MVC入门教程_第19张图片

6 - 应用程序的流程

完成您的项目后,并成功地在上一步中运行。现在,我们来看一看程序的运行方式。

Spring4 MVC入门教程_第20张图片

7- 控制器和方法

7.1- HttpServletRequest & HttpServletResponse

可以使用 HttpServletRequest, HttpServletResponse 在控制器的方法中。
  • OtherExampleController.java
package com.yiibai.springmvc;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
@Controller
public class OtherExampleController {
 
   ......
 
   @RequestMapping("/somePath")
   public String requestResponseExample(HttpServletRequest request,
           HttpServletResponse reponses, Model model) {
 
       // Todo something here
 
       return "someView";
   }
 
   ......
}

7.2- 控制器中的重定向
使用前缀 "redirect:" ,该方法返回字符串,可以重定向到另一页面。参见图:

    RedirectExampleController.java

package com.yiibai.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
public class RedirectExampleController {
 
    @RequestMapping(value = "/redirect", method = RequestMethod.GET)
    public String authorInfo(Model model) {
 
       // Do somethong here
 
        return "redirect:/hello";
    }
}

运行URL:
http://localhost:8080/HelloSpringMVC/redirect

Spring4 MVC入门教程_第21张图片

7.3- @RequestParam示例

使用@RequestParam 注解将请求参数绑定到你的控制器方法参数。
下面的代码片段显示了这个用法:
  • RequestParamExampleController.java
package com.yiibai.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
@Controller
public class RequestParamExampleController {
     
    @RequestMapping("/user")
    public String userInfo(Model model,
            @RequestParam(value = "name", defaultValue = "Guest") String name) {
 
        model.addAttribute("name", name);
 
        if("admin".equals(name)) {
            model.addAttribute("email", "[email protected]");
        } else{
            model.addAttribute("email", "Not set");
        }
        return "userInfo";
    }
  
}
/WEB-INF/pages/userInfo.jsp




User Info


 
   

${name}

Email: ${email}

运行 URL:
http://localhost:8080/HelloSpringMVC/user?name=admin

Spring4 MVC入门教程_第22张图片

7.4- @PathVariable示例

在Spring MVC中,可以使用@PathVariable注释将一个方法参数绑定到一个URI模板变量的值:
例如,这是一个模板的URI:
  • /web/fe/{sitePrefix}/{language}/document/{id}/{naturalText}
而下面的 URI 模板匹配上面:
  1. /web/fe/default/en/document/8108/spring-mvc-for-beginners
  2. /web/fe/default/vi/document/8108/spring-mvc-cho-nguoi-moi-bat-dau
  3. .....
Spring4 MVC入门教程_第23张图片

下面的代码片段显示了用法:

  • PathVariableExampleController.java
package com.yiibai.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class PathVariableExampleController {
  
 
    /**
     * @PathVariable Example:
     *
     */
    @RequestMapping("/web/fe/{sitePrefix}/{language}/document/{id}/{naturalText}")
    public String documentView(Model model,
            @PathVariable(value = "sitePrefix") String sitePrefix,
            @PathVariable(value = "language") String language,
            @PathVariable(value = "id") Long id,
            @PathVariable(value = "naturalText") String naturalText) {
 
        model.addAttribute("sitePrefix", sitePrefix);
        model.addAttribute("language", language);
        model.addAttribute("id", id);
        model.addAttribute("naturalText", naturalText);
 
        String documentName = "Java tutorial for Beginners";
        if(id == 8108) {
            documentName = "Spring MVC for Beginners";
        }
 
        model.addAttribute("documentName", documentName);
 
        return "documentView";
    }
}
/WEB-INF/pages/documentView.jsp




${documentName}


 
    

${documentName}

Site Prefix: ${sitePrefix}
Language: ${language}
ID: ${id}
Natural Text: ${naturalText}

运行 URL:
http://localhost:8080/HelloSpringMVC/web/fe/default/en/document/8108/spring-mvc-for-beginners

Spring4 MVC入门教程_第24张图片

7.5- @ResponseBody示例

如果您使用 @ResponseBody 注释到方法, spring 将尝试转换它的返回值,并自动写入到HTTP响应。在这种情况下,并不需要一个特定的视图。
注:方法不一定需要返回字符串类型。


使用@ResponseBody和方法返回字符串的简单例子。

  • ResponseBodyExample1Controller.java
package com.yiibai.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class ResponseBodyExample1Controller {
 
    // Simple example, method returns String.
    @RequestMapping(value = "/saveResult")
    @ResponseBody
    publicString authorInfo(Model model) {
        return "saved";
    }
 
     
}
运行示例的结果:
http://localhost:8080/HelloSpringMVC/saveResult
Spring4 MVC入门教程_第25张图片

使用@ResponseBody 的一个例子,方法返回一个对象。
代码下载: http://pan.baidu.com/s/1mgYKoA0




你可能感兴趣的:(springmvc)