`
json20080301
  • 浏览: 166226 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SPRING MVC3.2案例讲解---如何获取请求参数

 
阅读更多

SPRING MVC获取request参数方法:

@RequestParam   /data/param?foo=bar 等价于 request.getParameter()

 

@PathVariable  获取URL路径 // http://127.0.0.1:8010/data/path/foo 

 

@MatrixVariable 获取URL路径中协调的键值对参数

 

@RequestHeader 获取RequestHeader 中的信息

 

@RequestBody 获取request中 流信息

 

HttpEntity<String> 可以获取request中 流信息及getHeaders等信息

 

另外:编程时大都是使用表单提交request中的参数,很少设计二进制流的request提交;演示案例中使用AJAX方法来进行二进制流的提交,见JS代码;注意data属性,它是字符串而不是JSON对象,这里在HTTP传输时使用的是字符流

 

$("form.textForm").submit(function(event) {
		var form = $(this);
		var button = form.children(":first");
		$.ajax({ type: "POST", url: form.attr("action"), 

data: "foo", contentType: "text/plain", dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});
		return false;
	});

 

 

 

见代码:

@Controller
@RequestMapping("/data")
public class RequestDataController {
	// /data/param?foo=bar
	@RequestMapping(value = "param", method = RequestMethod.GET)
	public @ResponseBody
	String withParam(@RequestParam String foo) {
		return "Obtained 'foo' query parameter value '" + foo + "'";
	}

	// http://127.0.0.1:8010/data/group?param1=foo&param2=bar&param3=baz
	@RequestMapping(value = "group", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody
	String withParamGroup(JavaBean bean) {
		return "Obtained parameter group " + bean;
	}

	@RequestMapping(value = "produces", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody
	JavaBean byProducesJson(JavaBean bean) {
		return bean;
	}

	// http://127.0.0.1:8010/data/path/foo
	@RequestMapping(value = "path/{var}", method = RequestMethod.GET)
	public @ResponseBody
	String withPathVariable(@PathVariable String var) {
		return "Obtained 'var' path variable value '" + var + "'";
	}

	// http://127.0.0.1:8010/data/matrixvars;foo=bar/simple
	
	// OUTPUT :Obtained matrix variable 'foo=bar' from path segment 'matrixvars'
	@RequestMapping(value = "{path}/simple", method = RequestMethod.GET)
	public @ResponseBody
	String withMatrixVariable(@PathVariable String path,
			@MatrixVariable String foo) {
		return "Obtained matrix variable 'foo=" + foo + "' from path segment '"
				+ path + "'";
	}
	
	//http://127.0.0.1:8010/data/matrixvars;foo=bar1/multiple;foo=bar2
	//output: Obtained matrix variable foo=bar1 from path segment 'matrixvars' and
	// variable 'foo=bar2 from path segment 'multiple'
	@RequestMapping(value = "{path1}/{path2}", method = RequestMethod.GET)
	public @ResponseBody
	String withMatrixVariablesMultiple(@PathVariable String path1,
			@MatrixVariable(value = "foo", pathVar = "path1") String foo1,
			@PathVariable String path2,
			@MatrixVariable(value = "foo", pathVar = "path2") String foo2) {

		return "Obtained matrix variable foo=" + foo1 + " from path segment '"
				+ path1 + "' and variable 'foo=" + foo2
				+ " from path segment '" + path2 + "'";
	}

	// http://127.0.0.1:8010/data/header
	@RequestMapping(value = "header", method = RequestMethod.GET)
	public @ResponseBody
	String withHeader(@RequestHeader String Accept) {
		return "Obtained 'Accept' header '" + Accept + "'";
	}

	@RequestMapping(value = "cookie", method = RequestMethod.GET)
	public @ResponseBody
	String withCookie(@CookieValue String openid_provider) {
		return "Obtained 'openid_provider' cookie '" + openid_provider + "'";
	}

	@RequestMapping(value = "body", method = RequestMethod.POST)
	public @ResponseBody
	String withBody(@RequestBody String body) {
		return "Posted request body '" + body + "'";
	}

	@RequestMapping(value = "entity", method = RequestMethod.POST)
	public @ResponseBody
	String withEntity(HttpEntity<String> entity) {
		return "Posted request body '" + entity.getBody() + "'; headers = "
				+ entity.getHeaders();
	}

}

 

 

另外还有传统的获取方式直接在controller方法中使用HttpServletRequest request ,HttpServletResponse response,HttpSession session ;springMVC就可以直接调用这些变量中保存的内容;

见代码:

@Controller
public class StandardArgumentsController {

	// request related
	
	@RequestMapping(value="/data/standard/request", method=RequestMethod.GET)
	public @ResponseBody String standardRequestArgs(HttpServletRequest request, Principal user, Locale locale) {
		StringBuilder buffer = new StringBuilder();
		buffer.append("request = ").append(request).append(", ");
		buffer.append("userPrincipal = ").append(user).append(", ");
		buffer.append("requestLocale = ").append(locale);
		return buffer.toString();
	}

	@RequestMapping(value="/data/standard/request/reader", method=RequestMethod.POST)
	public @ResponseBody String requestReader(Reader requestBodyReader) throws IOException {
		return "Read char request body = " + FileCopyUtils.copyToString(requestBodyReader);
	}

	@RequestMapping(value="/data/standard/request/is", method=RequestMethod.POST)
	public @ResponseBody String requestReader(InputStream requestBodyIs) throws IOException {
		return "Read binary request body = " + new String(FileCopyUtils.copyToByteArray(requestBodyIs));
	}
	
	// response related

	@RequestMapping("/data/standard/response")
	public @ResponseBody String response(HttpServletResponse response) {
		return "response = " + response;
	}

	@RequestMapping("/data/standard/response/writer")
	public void availableStandardResponseArguments(Writer responseWriter) throws IOException {
		responseWriter.write("Wrote char response using Writer");
	}
	
	@RequestMapping("/data/standard/response/os")
	public void availableStandardResponseArguments(OutputStream os) throws IOException {
		os.write("Wrote binary response using OutputStream".getBytes());
	}
	
	// HttpSession

	@RequestMapping("/data/standard/session")
	public @ResponseBody String session(HttpSession session) {
		StringBuilder buffer = new StringBuilder();
		buffer.append("session=").append(session);
		return buffer.toString();
	}
}

 

最后上传界面截图:

 

 

 

  • 大小: 85.4 KB
0
3
分享到:
评论

相关推荐

    SPRING MVC3.2案例讲解---配置

    **Spring MVC 3.2 案例讲解——配置** Spring MVC 是 Spring 框架的一个模块,专门用于处理Web应用程序的请求-响应模式。在3.2版本中,Spring MVC引入了一些重要的改进和增强,使得开发更加高效和灵活。本篇文章将...

    Spring3.2异步处理http请求

    通过上述讲解,我们已经对Spring 3.2中的异步处理有了深入理解。正确地使用异步处理可以显著提高应用的性能,特别是在处理大量并发请求时。然而,它也需要合理的配置和管理,以确保系统的稳定性和可维护性。

    spring2.0技术手册--林信良

    《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...

    Spring_3.x企业应用开发实战 目录

    ### Spring 3.x 企业应用开发实战:关键知识点解析 ...这些知识点覆盖了 Spring 框架的基础概念、新功能、项目搭建、快速入门案例、IoC 容器的使用以及 Bean 的配置等方面,为读者提供了全面而深入的理解。

    Spring 3 中文帮助文档..pdf

    ### Spring 3 中文帮助文档知识点总结 #### 第一部分:Spring框架概述 ##### 第1章:Spring Framework介绍 - **1.1 依赖注入与控制反转** - 依赖注入(Dependency Injection, DI)和控制反转(Inversion of ...

    Spring+SpringMVC+Mybatis资源课件

    “3.1 Spring框架.pptx”和“3.2 Spring应用 .pptx”则可能详细讲解了Spring框架的核心组件和实际应用场景,比如AOP在事务管理中的应用,以及Spring与其他技术(如JDBC、Hibernate)的集成。 总体来说,这个资源包...

    跟我学SpringMVC

    - **数据绑定**:探讨了SpringMVC如何自动绑定请求参数到控制器方法参数的过程。 - **类型转换与格式化**:说明如何通过SpringMVC提供的默认类型转换器和自定义类型转换器来处理不同类型的数据。 - **数据验证**:...

    最新版Java视频学习路线图(内涵源码等获取方式)2.0(1).docx

    - **特点**:SpringMVC是Spring框架的一部分,用于构建MVC架构的Web应用程序。 - **获取方式**:通过B站链接观看。链接为:https://www.bilibili.com/video/BV1yt411h7nZ/ - **6.2.3 Mybatis框架** - **特点**:...

    本资源属于,jsp课程设计是应用SSM框架的做的名片管理系统,框架比较简单,便于理解和修改.zip

    2. "附录3.2 MyBatis的映射器与动态SQL.ppt":这份PPT可能深入讲解了MyBatis框架中映射器的概念以及如何使用动态SQL进行灵活的数据查询。映射器是MyBatis的核心部分,它负责将Java方法与SQL语句关联起来,而动态SQL...

    struts2学习资料

    - **精通Struts:基于MVC的JavaWeb设计与开发(孙卫琴).pdf**:这是一本深入的书籍,讲解了Struts2的高级特性和实践技巧。 - **struts2.pdf、struts2权威指南.pdf、Struts快速学习指南.pdf**:这些都是官方或权威的...

    struts2系列教程

    - **3.2 Struts2配置文件**:主要讲解`struts.xml`文件的作用、格式及配置项。 - **3.3 Action配置**:Action类的设计原则、生命周期以及配置方法。 #### 五、表单验证 - **4.1 手动完成输入校验**:通过编写代码...

    JSF基于EJB Hibernate Spring整合开发与项目

    ### JSF基于EJB Hibernate Spring整合开发与项目 #### 一、JSF基础知识 ##### 1.1 了解JSF JavaServer Faces (JSF) 是一个用于构建基于Web的应用程序的标准Java EE技术。它提供了丰富的组件库以及一套声明式的...

    JAVA程序开发大全---上半部分

    以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种Java应用程序。...

    java_ssm基于JAVA的酒店管理系统的设计与实现vue毕业论文.doc

    SSM框架集成了Spring的依赖注入、SpringMVC的MVC模式以及MyBatis的数据持久层,提供了便捷的开发工具和高效的数据库交互能力。Vue.js作为一款轻量级的前端框架,以其易学易用、灵活性高和组件化开发的特点,被广泛...

Global site tag (gtag.js) - Google Analytics