2010年04月27日, 22:36:34
在 Spring3 中,响应、接受 JSON都十分方便。
向前台返回 JSON 格式的数据:
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getUserList() {
logger.info("列表");
List<UserModel> list = new ArrayList<UserModel>();
UserModel um = new UserModel();
um.setId("1");
um.setUsername("sss");
um.setAge(222);
list.add(um);
Map<String, Object> modelMap = new HashMap<String, Object>(3);
modelMap.put("total", "1");
modelMap.put("data", list);
modelMap.put("success", "true");
return modelMap;
}
使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON。
Spring这个转换是靠org.codehaus.jackson这个组件来实现的,所有需要引入jackson-core-asl和org.codehaus.jackson两个jar包,并且在web.xml中配置:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list id="beanList">
<ref bean="mappingJacksonHttpMessageConverter" />
</util:list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
Continue reading ‘Spring3 MVC Hello World(3)使用JSON进行前后台数据交互’ »
2010年04月26日, 23:59:02
和低版本的Spring不同,创建一个 Controller 时,不需要继承任何类或实现接口,只需要加入@Controller的注解即可。
package net.liuweifeng.spring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*
* Spring3 MVC Demo
*
* @author liuweifeng
* @date 2010-04-26 23:24:20
*/
@Controller
@RequestMapping("/test")
public class DemoController {
@RequestMapping("test1")
public void test1() {
}
@RequestMapping("test2")
public void test2() {
}
}
这样,一个Controller就可以处理两个请求,分别访问 http://localhost:8080/demo/test/test1 和 http://localhost:8080/demo/test/test2 即可。
真正让 DemoController 具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解。@RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来;还可以标注在方法签名处,以便进一步对请求进行分流。
2010年04月26日, 23:35:45
最近尝试了一下Spring 3.0 MVC,感觉比 Struts2 要方便很多。基于注解的开发方式,可以基本实现零配置,并且可以完美支持RESTful URL。
STS(SpringSource Tool Suite,SpringSource 官方的IDE,基于Eclipse)可以很方便的创建 Spring MVC 工程。

Continue reading ‘Spring3 MVC Hello World(1)’ »
2010年04月04日, 18:00:05
在Struts2中整合JSON插件,报“Positioned Update not supported”异常。
解决方案有如下如下:
- 排除不需要JSON序列化的属性,如在Action中注入的Service。
<action name="actionName" class="xx.xx.xxAction" method="list">
<result type="json">
<param name="excludeProperties">xxxService</param>
</result>
</action>
- 在Action中删除不需要JSON序列化的属性的get方法。
2010年01月10日, 00:02:00
今天读到为之漫笔翻译的一篇文章——《Nicholas C. Zakas如何面试前端工程师》,反省了一下,自己距离前端开发工程师的目标还有很大的差距。这篇文章中总结的前端开发工程师面试时涉及的基础问题,我想,是很有必要再回头总结下了。
我们生活在互联网时代,你想知道的任何事情几乎都能在15分钟内找到相关信息。可是,能找到信息并不等于你会使用它。我认为所有前端工程师至少都应该掌握某些基本的知识,才能有效地完成自己的工作。如果一遇到问题,就停下工作上网四处搜索解决方案,怎么可能保证按期完成工作呢?听听,还有谁在说“我不知道,但我可以上网搜到。”请这些同学把手举起来,让大家认识一下(immediately raises a flag for me.)。下面我列出一些基本的知识点,这些都是我认为一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
- DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
- DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
- 事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
- XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
- 严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
- 盒模型——外边距、内边距和边框之间的关系,IE < 8中的盒模型有什么不同。
- 块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
- 浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
- HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
- JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
重申一下,上述这些知识点都应该是你“想都不用想”就知道的东西。我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。虽然上面列出的这些知识点并没有面面俱到,但我觉得你至少应该掌握这些,才有可能跟我坐到一间办公室里来。
上面这几点,可以总结为前端开发人员必备的基础知识。对于如何通过Nicholas C. Zakas的面试,为之漫笔还翻译了另一篇文章《如何通过Nicholas C. Zakas的面试》,值得一看。
2009年09月06日, 01:59:49
最近遇到一个问题,无法为span元素设置width属性。查看CSS文档得知,浏览器会忽略行内元素(inline,或称:内联元素)的width属性。
网上给出的一种解决方法:
span { background-color:#f00; display:block; width:200px;}
但是这样会使 span 和它前后的元素分属两行,也就是说 span 其实是变成类似 div 的块级 (block)元素。
另一种解决方案(在上面的基础上增加左浮动):
span { background-color:#f00;display:block; float:left; width:200px;}
但是这时,span后的文字就需要增加清理,否则span前后的文字就会连在一行内。
Continue reading ‘span元素的width问题’ »
2009年08月30日, 00:50:44
这是最近正在看的书。两本书都很权威。
1、《锋利的 jQuery》

此书的作者是 cssrain.cn的博主,博客里的 jQuery 学习资料和实例可谓十分丰富,其实本书就是这些资料的整理和延伸。
另一个作者的网站http://shawphy.com/。
官方站点:http://www.cssrain.cn/jquery
2、《Dojo 权威指南》

作者博客:http://www.cn-cuckoo.com。
2009年07月16日, 22:38:13
近日,aptana.com发布了 Aptana Studio 1.5 正式版。
Aptana Studio 是目前业界最棒的 web 2.0 开发工具,它可以提供 JavaScript 及各种流行 Ajax 框架(如 jQuery、ExtJS、Dojo等)的智能提示(Code Assist),可以支持 JavaScript 调试,同时支持 RoR、PHP 和 Python 以及 Adobe AIR 1.5 等的开发。
Continue reading ‘Aptana Studio 1.5 正式版发布’ »
2009年07月07日, 21:51:01
著名的跨浏览器RIA框架——ExtJS 发布了 3.0 正式版。
官方网站提供的更新:
- Direct, CRUD and REST support for streamlined server communications
- New Examples and Components including Charting
- Over a 1,000 enhancements and fixes - improved memory management in IE6
- Documented API and refactored CSS.
- Backwards compatible to keep you moving forward.
关于 ExtJS,参见这里。
官网:http://extjs.com
2009年01月15日, 11:03:26
在 jQuery 3周岁这一天,John Resig 发布了 jQuery 1.3 版本。
新功能及改进如下(来自 jQuery 官方文档)
- Sizzle:一个全新的选择器引擎
- Live Events:可以对“将来的”元素添加事件
- jQuery Event Overhaul:完全重写的事件检测,简化了事件处理
- HTML Injection Rewrite:重写了append, prepend, before, 和 after等方法,据说速度快了6倍。
- Offset Rewrite:重写了 Offset,超快的元素定位计算
- No More Browser Sniffing:取消了浏览器侦测,全面改用jQuery.support。
另外,新版的 jQuery 带来了崭新的 API浏览器,并且包含可以自动更新的离线版(基于 Adobe AIR,包含 jQuery和 jQuery UI 的 API)。可以到这里下载。
Continue reading ‘jQuery 1.3 发布’ »