Spring4 MVC入门教程 本教程是基于以下工具写的:
2- 预览应用程序执行流程 Spring MVC DispatcherServlet 读取 xml 配置文件的原则:
如果你不想用 SpringMVC 的使用原则,可以重新配置 SpringMVC DispatcherServlet 在 web.xml 文件中: 应用程序的流程: 3 - 创建Maven工程 创建Maven项目类型。 Maven是帮助我们管理库的最好方式。 在 Eclipse, 选择 'File/New/Other...' 选择 archetype 'maven-archetype-webapp'。 输入:
这样将创建项目,结构如下图所示: 不要担心项目在创建的时候出现错误信息。原因是,现在我们还没有声明 Servlet 库。 在 Eclipse 中创建 Maven 项目结构可能是错误的。需要我们去检查出来并完善。 4- 配置Spring 这是项目建成后的文件结构图: 配置 Maven 使用 Spring 库.
配置 web.xml:
在Spring应用程序 ContextLoaderListener 将读取其他 XML 配置文件(如下的 abc.xml 和 root-context.xml 两个文件)。 可能不需要配置 ContextLoaderListener,如果你的应用程序并不需要读取其他XML配置文件。
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'; } }
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%> ${greeting}5- 运行Spring应用程序 首先,运行应用程序之前,需要构建整个项目。 右键单击该项目并选择:
运行配置: 输入:
点击Run: 第一次运行该程序将需要几分钟(看你的网速),它需要下载 Tomcat 插件库才能运行。 一切准备就绪: 运行URL,如下图: 6 - 应用程序的流程 完成您的项目后,并成功地在上一步中运行。现在,我们来看一看程序的运行方式。 7- 控制器和方法7.1- HttpServletRequest & HttpServletResponse 可以使用 HttpServletRequest, HttpServletResponse 在控制器的方法中。
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:' ,该方法返回字符串,可以重定向到另一页面。参见图:
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 注解将请求参数绑定到你的控制器方法参数。 下面的代码片段显示了这个用法:
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'; } }
${name}Email: ${email} 运行 URL: 7.4- @PathVariable示例 在Spring MVC中,可以使用@PathVariable注释将一个方法参数绑定到一个URI模板变量的值: 例如,这是一个模板的URI:
而下面的 URI 模板匹配上面:
下面的代码片段显示了用法:
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'; }}
${documentName}Site Prefix: ${sitePrefix}Language: ${language} ID: ${id} Natural Text: ${naturalText} 运行 URL: 7.5- @ResponseBody示例 如果您使用 @ResponseBody 注释到方法, spring 将尝试转换它的返回值,并自动写入到HTTP响应。在这种情况下,并不需要一个特定的视图。
使用@ResponseBody和方法返回字符串的简单例子。
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'; } } 运行示例的结果:
|
|
来自: 远志a1wu9ydemi > 《spring》