1.以path parameters的形式给action传参数

  1. @Test
  2. public void testSpittle() throws Exception {
  3. Spittle expectedSpittle = new Spittle("Hello", new Date());
  4. SpittleRepository mockRepository = mock(SpittleRepository.class);
  5. when(mockRepository.findOne(12345)).thenReturn(expectedSpittle);
  6.  
  7. SpittleController controller = new SpittleController(mockRepository);
  8. MockMvc mockMvc = standaloneSetup(controller).build();
  9.  
  10. mockMvc.perform(get("/spittles/12345"))
  11. .andExpect(view().name("spittle"))
  12. .andExpect(model().attributeExists("spittle"))
  13. .andExpect(model().attribute("spittle", expectedSpittle));
  14. }

在浏览器中访问:http://localhost:8080/SpringInAction4_Chapter5_SpringMVC01/spittles/1

2.controller

  1. package spittr.web;
  2.  
  3. import java.util.Date;
  4. import java.util.List;
  5.  
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.PathVariable;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13.  
  14. import spittr.Spittle;
  15. import spittr.data.SpittleRepository;
  16.  
  17. @Controller
  18. @RequestMapping("/spittles")
  19. public class SpittleController {
  20.  
  21. private static final String MAX_LONG_AS_STRING = "9223372036854775807";
  22.  
  23. private SpittleRepository spittleRepository;
  24.  
  25. @Autowired
  26. public SpittleController(SpittleRepository spittleRepository) {
  27. this.spittleRepository = spittleRepository;
  28. }
  29.  
  30. @RequestMapping(value="/{spittleId}", method=RequestMethod.GET)
  31. public String spittle(
  32. @PathVariable("spittleId") long spittleId,
  33. Model model) {
  34. //The model key will be spittle
  35. model.addAttribute(spittleRepository.findOne(spittleId));
  36. return "spittle";
  37. }
  38.  
  39. }

在保证spittleId名称一致的情况下,可以简写

  1. @RequestMapping(value="/{spittleId}", method=RequestMethod.GET)
  2. public String spittle(
  3. @PathVariable long spittleId,
  4. Model model) {
  5. //The model key will be spittle
  6. model.addAttribute(spittleRepository.findOne(spittleId));
  7. return "spittle";
  8. }

3.view

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  2. <html>
  3. <head>
  4. <title>Spitter</title>
  5. <link rel="stylesheet"
  6. type="text/css"
  7. href="<c:url value="/resources/style.css" />" >
  8. </head>
  9. <body>
  10. <div class="spittleView">
  11. <div class="spittleMessage"><c:out value="${spittle.message}" /></div>
  12. <div>
  13. <span class="spittleTime"><c:out value="${spittle.time}" /></span>
  14. </div>
  15. </div>
  16. </body>
  17. </html>

SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-005-以path parameters的形式给action传参数(value=“{}”、@PathVariable)的更多相关文章

  1. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-004-以query parameters的形式给action传参数(@RequestParam、defaultValue)

    一. 1.Spring MVC provides several ways that a client can pass data into a controller’s handler method ...

  2. SPRING IN ACTION 第4版笔记-第五章Building Spring web applications-001-SpringMVC介绍

    一. 二.用Java文件配置web application 1. package spittr.config; import org.springframework.web.servlet.suppo ...

  3. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-007-表单验证@Valid、Error

    一. Starting with Spring 3.0, Spring supports the Java Validation API in Spring MVC . No extra config ...

  4. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-002-Controller的requestMapping、model

    一.RequestMapping 1.可以写在方法上或类上,且值可以是数组 package spittr.web; import static org.springframework.web.bind ...

  5. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-006-处理表单数据(注册、显示用户资料)

    一.显示注册表单 1.访问资源 @Test public void shouldShowRegistration() throws Exception { SpitterRepository mock ...

  6. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-003-示例项目用到的类及配置文件

    一.配置文件 1.由于它继承AbstractAnnotationConfigDispatcherServletInitializer,Servlet容器会把它当做配置文件 package spittr ...

  7. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-003- 上传文件multipart,配置StandardServletMultipartResolver、CommonsMultipartResolver

    一.什么是multipart The Spittr application calls for file uploads in two places. When a new user register ...

  8. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-005- 异常处理@ResponseStatus、@ExceptionHandler、@ControllerAdvice

    No matter what happens, good or bad, the outcome of a servlet request is a servlet response. If an e ...

  9. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-002- 在xml中引用Java配置文件,声明DispatcherServlet、ContextLoaderListener

    一.所有声明都用xml 1. <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

随机推荐

  1. [转]在SQLServer中实现Sequence的高效方法

    如果在ORACLE里面用惯了Sequence的兄弟们,要在SqlServer里实现Sequence,就会发现没有现成的Sequence对象可以Create了.那应该怎么办呢? 当然这点小问题是难不倒我 ...

  2. sql2008存储过程解密。

    今天有一个同事在做一个项目的时候,因为现在公司不跟某一家公司合作.有一些sql的存储过程是加密,现在想打开那些存储过程来解密.故查看了一些资料终于解密成功.步骤如下: 1.需要开始DAC连接. 1.1 ...

  3. wpf ListBox或ListView等数据控件 绑定数据,最简单的方式

    在网上很难找最简单的案例,都是一大片,看着都头疼: 试试举一反三,如果把结果赋给DataContext这个属性,那就前台需要绑定ItemsSource="{Binding}",请注 ...

  4. Attribute (一)

    本文导读 1.概念 2.自定义一个 Attribute 概念       Attribute是一个特殊的类,我们知道 .NET 程序集 具有自描述的特性(由于元数据),Attribute和.NET的元 ...

  5. JAVA日历

    效果图如下: import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import ...

  6. 什么是SQL statement?

    什么是SQL statement? 1.SQL SELECT statement - SELECT命令 REFER: What is SQL, and what are some example st ...

  7. 初涉GitHub

    安装 访问https://help.github.com/articles/set-up-git/,选择对应OS平台.有文档参考,我的是OpenSuse. 在console中下载安装http://ww ...

  8. 关于aspx模板页面元素路径的问题,以及对模板页面的理解

    模板页面仅是模板,它不是单独存在的页面,它的路径就是引用它的内容页面的路径. 换句话说,模板页面,只是内容页面上固定的部分.     模板页面引用了的js和CSS,内容页面就不用重新引用了   css ...

  9. 纯原生js移动端图片压缩上传插件

    前段时间,同事又来咨询一个问题了,说手机端动不动拍照就好几M高清大图,上传服务器太慢,问问我有没有可以压缩图片并上传的js插件,当然手头上没有,别慌,我去网上搜一搜. 结果呢,呵呵...诶~又全是基于 ...

  10. 使用ajaxFileUpload实现异步上传图片

    index.html <head runat="server"> <title></title> <script src="jq ...