- 浏览: 1001902 次
文章分类
最新评论
-
18335864773:
很多公司项目 都在使用pageoffice 来操作word,e ...
用java生成word文档 -
Gozs_cs_dn:
请问下博主, 怎样将sitemesh3.xsd绑定 sitem ...
SiteMesh3配置 -
Rose_06:
springside4.0quick-start.bat报错原因 -
ilemma:
我也是刚参见工作啊,经理让自学这个,有些东西不太懂,能不能发个 ...
Apache Shiro在Web中的应用 -
shanbangyou:
你废了
程序员上班打酱油的方法
服务端数据到客户端1.返回页面,Controller中方法返回String,String对应的是view的位置,如果需要携带数据通过model(相当于一个Map)传递到view, view中使用jstl的EL表达式来绑定model带来的数据。
@RequestMapping(value="/getPojoView", method=RequestMethod.GET)
public String getPojoView(Model model){
Pojo pojo = new Pojo();
pojo.setPojoName("testName");
pojo.setPojoValue("testValue");
model.addAttribute(pojo);
return"sample/pojoView";
}
2.返回Json对象,利用@ResponseBody来实现。
@RequestMapping(value="/getPojoJson", method=RequestMethod.GET)
public @ResponseBody Pojo getPojoJson(){
Pojo pojo = new Pojo();
pojo.setPojoName("testName");
pojo.setPojoValue("testValue");
return pojo;
}
注:spring mvc自动将java对象转化成了json对象传回了客户端,返回对象可以是Pojo也可以是List
3.直接操作Response自己实现想要的效果。
@RequestMapping(value="/getCustomResponse", method=RequestMethod.GET)
public void getCustomResponse(HttpServletResponse response){
//操作response...
}
注:response为spring根据方法的type类型注入的
客户端数据到服务端
1.通过URL传回参数:
view
<script type="text/javascript"src="jquery-1.4.min.js"></script>
<h1>button与链接效果一致</h1>
<a href="simple?name=text&age=28">simple</a><button onclick="simple()">simple</button><br/>
<script type="text/javascript">
function simple(){
$.getJSON("simple",{"name":"nameJsonTest","age":"100"},function(){});
}
</script>
<a href="list?names[]=aaaa&names[]=bbbb">list</a><button onclick="list()">list</button><br/>
<script type="text/javascript">
function list(){
$.getJSON("list",{"names":["name1","name2","name3"]},function(){});
}
</script>
<a href="pojo?pojo[pojoName]=hahaha&pojo[pojoValue]=kkkkkk">pojo</a><button onclick="pojo()">pojo</button><br/>
<script type="text/javascript">
function pojo(){
$.getJSON("pojo",{"pojo":{"pojoName":"testName","pojoValue":"testValue"}},function(){});
}
</script>
<a href="rest/10/2">rest</a><button onclick="rest()">rest</button><br/>
<script type="text/javascript">
function rest(){
var pageSize = 20;
var pageNo = 3;
$.getJSON("rest/"+pageSize+"/"+pageNo,{},function(){});
}
</script> controller
package sample;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping(value="/urlparam")
public class UrlParamController {
@RequestMapping(value="/", method=RequestMethod.GET)
public String index(){
return"urlparam/index";
}
@RequestMapping(value="/simple", method=RequestMethod.GET)
public void simple(@RequestParam String name, @RequestParam Integer age){
System.out.println("name:"+name);
System.out.println("age:"+age);
}
//list内不能放POJO对象
@RequestMapping(value="/list", method=RequestMethod.GET)
public void list(@RequestParam("names[]") String[] names){
//也可以用List<String> names来接收
for(String name : names){
System.out.println("name:"+name);
}
}
//单URL目前还不支持POJO对象,只能支持键值对,希望spring以后有所改善
@RequestMapping(value="/pojo", method=RequestMethod.GET)
public void pojo(@RequestParam("pojo[pojoName]") String name, @RequestParam("pojo[pojoValue]") String value){
System.out.println("name:"+name);
System.out.println("value:"+value);
}
@RequestMapping(value="/rest/{pageSize}/{pageNo}", method=RequestMethod.GET)
public void rest(@PathVariable Integer pageSize, @PathVariable Integer pageNo){
System.out.println("pageSize:"+pageSize);
System.out.println("pageNo:"+pageNo);
}
}
2.通过POST表单传回参数:
方式同与url的是一致的,需要将method=RequestMethod.POST,不过有中文的话一般都用post来避免转码。一般ajax的时候用$.post而不能使用jQuery插件json的$.postJSON。下面会讲到。
3. 通过使用jQuery插件json的$.postJSON传回参数:
$.postJSON返回的是:application/json,
$.post返回的是: application/x-www-form-urlencoded
spring会将postJSON传回的json字符串转换成对象再将对象丢给带有@RequestBody的形参。 由于json字符串直接转换为对象,所以@RequestBody只能接收一个对象还需要属性一一对应,不能多传参数。此方式可以传POJO,也可以传List<POJO>。
$.postJSON('url', {"name":"testName","age":"28"},function(){});class Pojo{
private Long id;
private String name;
private Integer age;
//get,set...
}@RequestMapping(value="pojo", method=RequestMethod.POST)
publicvoid sentPojo(@RequestBody Pojo pojo){
System.out.println(pojo.getPojoName());
System.out.println(pojo.getPojoValue());
}
注:目前对于一对象,附带几个简单参数的解决办法是将简单参数通过为REST的url路径参数来传送。
4. 直接拿到Request来操作:
@RequestMapping(value="/", method=RequestMethod.GET)
public String withRequest(HttpServletRequest request){
//操作request...
return"someview";
}
以上controller内的方法的形参, 除了@RequestBody和@RequestParam不能同时声明外,都可以进行组合来满足各种需求。
小结:spring mvc3充分利用了annotation的好处将参数传递过程中的转换全部变为了透明,这样省去了程序员对参数进行一些无聊的转换,这肯定能提高不少效率。另一方面想说的是spring的@RequestBody还可以做的更好,如果能允许多个对象同时传送,那这个东西就十分好了。
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/20100719/455857.html
发表评论
-
SpringMVC使用@ResponseBody中文乱码
2012-03-31 11:45 3102Spring3.0 MVC @ResponseBody 的 ... -
spring mvc 3 上传文件
2012-03-30 16:31 1270spring mvc 支持web应用程序的文件上传功能,是由 ... -
解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
2011-10-29 09:23 111651、问题复现 spring 3.0 + hiber ... -
基于Spring框架的Shiro配置
2011-10-26 15:39 3167一、在web.xml中添加shiro过滤器 < ... -
spring3 混合使用 XML 与注解(Annotation)进行 Bean 的配置
2011-10-21 17:34 3667设计 @Configuration 和 @Bean 的初衷,并 ... -
springMVC最佳实践-基于注解的Controller
2011-10-13 23:09 917在spring 2.5发布之后,基于注解的Controller ... -
springmvc3-hibernate-crud例子
2011-10-12 23:45 656http://java.dzone.com/articles/ ... -
ExtJS, Spring MVC 3 and Hibernate 3.5: CRUD例子
2011-10-12 23:45 1308http://loianegroner.com/2010/09 ... -
Spring Web MVC框架学习笔记
2011-10-12 21:22 2240spring-framework-reference中文版摘录 ... -
Mastering Spring MVC 3中文版
2011-10-11 23:00 3211Mastering Spring MVC 3中文版 精通Sp ... -
基于Myeclipse9.1的spring3.1MVC开发搭建
2011-10-01 14:27 2014(1)配置基础装备。每个符合Java EE规范的web应用程 ... -
Spring Security 设置session
2011-04-02 15:26 3932使用SecurityContextHolder来偷窥登入帐号密 ... -
springsecurity的URL过滤和全局过滤
2011-03-31 15:55 4823springsecurity的URL过滤和全局过滤 最近有个需 ... -
权限控制:spring 3.0 security配置例子
2011-03-31 15:21 1955我几年前自己写过一个 ... -
SpringSide 3 中的 Struts 2
2011-03-03 18:01 922在SpringSide 3 中,使用的MVC框架是Struts ... -
springside 中 报 org.hibernate.MappingException: Unknown entity: XXX
2011-03-03 17:25 1256org.hibernate.MappingException: ... -
springside 迁移sqlserver数据库报错
2011-03-02 16:55 826报错信息: java.lang.AbstractMethodE ... -
使用SpringSide 3.1.4.3开发Web项目的全过程(上)
2011-03-01 17:41 1154http://www.blogjava.net/youxia/ ... -
MultiActionController绑定command
2007-06-03 08:56 2553dlpower: 一般只见到用SimpleFormContro ... -
Error creating bean with name
2007-06-02 10:07 2584org.springframework.beans.fac ...
相关推荐
在Spring MVC框架中,`mvc:annotation-driven`和`mvc:message-converters`是两个非常重要的元素,它们在处理基于注解的控制器和数据转换方面起着关键作用。本篇文章将深入探讨这两个组件的工作原理以及如何在实际...
本教程将通过一个简单的例子来介绍如何入门 Spring MVC。 ### 1. Spring MVC 架构 Spring MVC 的设计基于 MVC 设计模式,它将业务逻辑、数据和用户界面分离,使得开发更加模块化,易于维护。主要组件包括: - **...
**Spring MVC 入门教程** Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关注底层细节。在...
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
### Spring MVC 学习指南详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Model-View-Controller (MVC) 设计模式的 Web 应用程序。它提供了丰富的功能来简化 Web 开发过程,...
3. **Spring Test**:Spring 提供了自己的测试模块,包含`@RunWith(SpringRunner.class)`注解,它可以将JUnit测试与Spring环境结合,自动加载ApplicationContext,使得我们可以使用依赖注入来测试bean。 4. **@...
3. 在MyEclipse中创建和运行Spring MVC项目。 4. web.xml和spring-servlet.xml的配置。 5. 视图解析器的配置与使用。 6. Controller处理请求并返回响应的流程。 通过这个实例,你可以深入理解Spring MVC的工作原理...
在这个例子中,`@RequestMapping("/hello")`指定了一个映射路径,当用户访问此URL时,`sayHello()`方法会被调用,返回"Hello, Spring MVC!"作为响应。 为了处理视图,我们需要配置视图解析器。Spring MVC支持多种...
import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Controller; @Controller public class TestController { @Async public void asyncTask() { // 耗时操作 ...
3. **创建servlet-context.xml**:这是Spring MVC的配置文件,用于配置处理器映射器、视图解析器以及其他Spring MVC相关的组件。例如: ```xml <mvc:annotation-driven /> <bean class="org.springframework.web....
这个简单的例子展示了Spring MVC如何通过注解驱动的方式,将HTTP请求映射到特定的方法,并返回响应。随着对Spring MVC的深入学习,你可以了解到更多高级特性,如模型绑定、视图解析、拦截器、数据验证、异常处理等。...
Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...
下面是一个简单的Spring MVC中AOP的例子,分为配置和实现两部分。 ### 配置 1. 在`spring-common.xml`配置文件中,我们需要引入AOP相关的命名空间,并声明一个`<aop:aspectj-autoproxy>`元素。这会告诉Spring容器...
在Spring 3版本中,`<mvc:annotation-driven>`元素启用了一些核心功能,如JSR-303数据验证支持和HTTP消息转换器,使得JSON和XML等格式的数据交换成为可能。 在提供的压缩包中,你可能会找到以下文件结构和文件: -...
在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...
在这个入门小例子中,我们将探讨如何利用注解驱动的方式实现Spring MVC的功能。注解驱动使得开发过程更为简洁,减少了XML配置文件的需求。 ### 1. Spring MVC 框架概述 Spring MVC是Spring框架的一部分,专门用于...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分,主要用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本篇文章将带你通过一个简单的 "HelloWorld" 示例,深入了解...
3. **配置servlet-context.xml**:在`servlet-context.xml`中,我们需要配置Spring MVC的核心组件,如视图解析器、模型-视图-控制器(MVC)配置等。 ```xml <mvc:annotation-driven /> <bean class="org....
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> ``` 在这个例子中,`DefaultAnnotationHandlerMapping`负责根据注解来映射请求,而`...
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> ``` ...