分享

Spring4 MVC HelloWord实例

 远志a1wu9ydemi 2018-05-27

Spring4 MVC入门教程

本教程是基于以下工具写的:
  • MyEclipse 10
  • Spring 4.0.3.RELEASE

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

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

如果你不想用 SpringMVC 使用原则,可以重新配置 SpringMVC  DispatcherServlet 在 web.xml 文件中:
my-dispatcher-name org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/springmvc-myconfig.xml 1
应用程序的流程:

3 - 创建Maven工程

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


选择 archetype 'maven-archetype-webapp'。

输入:
  • Group Id: com.yiibai
  • Artifact Id: HelloSpringMVC
  • Package: com.yiibai.springmvc

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

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

4- 配置Spring

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

配置 Maven 使用 Spring 库.
  • pom.xml
4.0.0 com.yiibai HelloSpringMVC war 0.0.1-SNAPSHOT HelloSpringMVC Maven Webapp http://maven. 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

  • 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; @Controllerpublic class HelloWorldController { @RequestMapping('/hello') public String hello(Model model) { model.addAttribute('greeting', 'Hello Spring MVC'); return'helloworld'; } }

  • helloworld.jsp
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>

${greeting}

5- 运行Spring应用程序

首先,运行应用程序之前,需要构建整个项目。
右键单击该项目并选择:
  • Run As/Maven install



运行配置:



输入:
  • Name: Run HelloSpringMVC
  • Base directory: ${workspace_loc:/HelloSpringMVC} =>${workspace_loc:/HelloSpringMVC Maven Webapp}
  • Goals: tomcat7:run

点击Run:

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

运行URL,如下图:

6 - 应用程序的流程

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

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; @Controllerpublic 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; @Controllerpublic class RedirectExampleController { @RequestMapping(value = '/redirect', method = RequestMethod.GET) public String authorInfo(Model model) { // Do somethong here return 'redirect:/hello'; }}
运行URL:

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; @Controllerpublic 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', 'admin@yiibai.com'); } else{ model.addAttribute('email', 'Not set'); } return 'userInfo'; } }
  • /WEB-INF/pages/userInfo.jsp

${name}

Email: ${email}
运行 URL:

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. .....

下面的代码片段显示了用法:
  • 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; @Controllerpublic 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}

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

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; @Controllerpublic class ResponseBodyExample1Controller { // Simple example, method returns String. @RequestMapping(value = '/saveResult') @ResponseBody publicString authorInfo(Model model) { return 'saved'; } }
运行示例的结果:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章