Restlet2 + Spring3 配置如下,希望能对大家有用
Restlet : restlet-jee-2.0.3 注意是jee版本
Spring : 3.0.4.RELEASE
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>restlet</servlet-name>
<servlet-class>
org.restlet.ext.spring.RestletFrameworkServlet
</servlet-class>
<init-param>
<param-name>targetRestletBeanName</param-name>
<param-value>webApp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/resource/*</url-pattern>
</servlet-mapping>
applicationContext-restlet.xml
<bean id="webApp" class="org.restlet.Application">
<property name="root" ref="root" />
</bean>
<bean name="root" class="org.restlet.ext.spring.SpringBeanRouter"/>
<alias name="indexResource" alias="/index.html"/>
<alias name="gameTypeResource" alias="/admin/gametypes/{action}"/>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/page/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="locale">zh_CN</prop>
</props>
</property>
</bean>
IndexResource.java
@Service
@Scope("prototype")
public class IndexResource extends ServerResource {
@Autowired
protected FreeMarkerConfigurer freemarkerConfig;
@Autowired
private GameTypeManager gameTypeManager;
@Get("html")
public Representation index() {
List<GameType> gameTypeList = gameTypeManager.findListByRoot(GameTypeAttribute.Standard);
Set<FlashGame> hotGames = gameTypeManager.getGameTypeByName("推荐游戏").getGames();
final Map<String, Object> dataModel = new TreeMap<String, Object>();
dataModel.put("gameTypeList", gameTypeList);
dataModel.put("hotGames", hotGames);
return new TemplateRepresentation("index.html", freemarkerConfig.getConfiguration(), dataModel, MediaType.TEXT_HTML);
}
}
GameTypeResource.xml
@Service
@Scope("prototype")
public class GameTypeResource extends ServerResource {
@Autowired
protected FreeMarkerConfigurer freemarkerConfig;
@Autowired
private GameTypeManager gameTypeManager;
private String action;
private int pageNum = 1;
@Get("html")
public Representation represent() {
if (StringUtils.isNotEmpty((String) getRequest().getAttributes().get("action"))) {
action = (String) getRequest().getAttributes().get("action");
}
if (StringUtils.isNotEmpty((String) getRequest().getAttributes().get("pageNum"))) {
pageNum = Integer.valueOf(((String) getRequest().getAttributes().get("pageNum")));
}
if ("list".equals(action)) {
return list();
} else if ("add".equals(action)) {
return add();
} else {
return list();
}
}
public Representation list() {
PageBean pageBean = new PageBean();
pageBean.setPageNum(pageNum);
pageBean.setMaxResults(100);
List<GameType> gameTypes = gameTypeManager.getAll(pageBean);
final Map<String, Object> dataModel = new TreeMap<String, Object>();
dataModel.put("gameTypes", gameTypes);
dataModel.put("pageNum", pageNum);
return new TemplateRepresentation("admin/gametypes.html", freemarkerConfig.getConfiguration(), dataModel, MediaType.TEXT_HTML);
}
public Representation add() {
List<GameType> gameTypes = gameTypeManager.findListByAttribute(GameTypeAttribute.Standard);
final Map<String, Object> dataModel = new TreeMap<String, Object>();
dataModel.put("gameTypes", gameTypes);
return new TemplateRepresentation("admin/gametype_add.html", freemarkerConfig.getConfiguration(), dataModel, MediaType.TEXT_HTML);
}
@Post
public Representation acceptRepresentation(Representation entity) throws ResourceException {
Form form = new Form(entity);
GameType gameType = new GameType();
gameType.setName(form.getFirstValue("name"));
if (!StringUtils.isEmpty(form.getFirstValue("parentId"))) {
Long parentId = Long.valueOf(form.getFirstValue("parentId"));
GameType parent = gameTypeManager.get(parentId);
if (parent != null) {
gameType.setParent(parent);
}
}
gameType.setGameTypeAttribute(GameTypeAttribute.Standard);
gameTypeManager.saveByName(gameType);
return get();
}
@Put
public Representation storeRepresentation(Representation entity) throws ResourceException {
Form form = new Form(entity);
GameType gameType = new GameType();
gameType.setName(form.getFirstValue("name"));
if (!StringUtils.isEmpty(form.getFirstValue("parentId"))) {
Long parentId = Long.valueOf(form.getFirstValue("parentId"));
GameType parent = gameTypeManager.get(parentId);
if (parent != null) {
gameType.setParent(parent);
}
}
gameType.setGameTypeAttribute(GameTypeAttribute.Standard);
gameTypeManager.saveByName(gameType);
return get();
}
@Delete
public Representation removeRepresentations(Representation entity) throws ResourceException {
Form form = new Form(entity);
if (!StringUtils.isEmpty(form.getFirstValue("id"))) {
Long id = Long.valueOf(form.getFirstValue("id"));
gameTypeManager.removeById(id);
}
return get();
}
}
SpringBeanRouter用到的是Spring的BeanNameUrlHandlerMapping,将url映射成bean
对于要使用基于restlet注解(@Get @Put @Post @Delete)配置,一定要直接继承ServerResource
对于路径的匹配模式还需要研究下
分享到:
相关推荐
简单做了一个rsh框架的集成,知道这个而且需要欢迎下载,大家有需要的下载了给点宝贵意见。
Restlet与Spring 集成
使用注解配置实现Spring动态数据源切换,实现原理 1、自定义动态数据源类DynamicDataSource: 实现spring类AbstractRoutingDataSource的方法determineCurrentLookupKey 2、自定义Spring AOP类DataSourceAspect 3、...
浏览器请求测试插件restlet client(chrome) + http requester(火狐),用于测试restful风格的请求,测试接口数据
org.restlet.ext.spring.jar
使用注解配置Spring多数据源, spring + restlet + mysql 测试通过 OK,使用前请执行文件mysql_dml.sql中的sql以初始化测试数据
com.noelios.restlet.ext.spring_2.5.jar
restlet1.0源码+doc,比较老的版本,2.0和之后的版本不兼容
基于Spring的Restlet实例 代码和jar包
这个花了一点时时间做出来的简单的集成RSH框架,喜欢restlet的朋友可以研究研究,大家一起讨论一下,最简单的一个流程,已经完成了,个人感觉比ssh框架开发简单,中间都没有对象new,都通过spring注入方式获取对象,...
a sampel with caeml restlet in web app , jetty
Spring3.1.2+Mybatis3.1.1+Restlet2.0.1框架HelloWorld实例(Maven) maven package生成后打包war部署到tomacat测试: http://localhost:8080/oa/rest/hello 数据库为postgresql 9.2,单元测试中有mybatis的数据库...
通过java开源框架restlet来做了一个集成,比起以前的ssh框架,稍微做起来简单,而且速度也快,有什么不足的大家下载后,请给出宝贵的意见。
restlet处理各种请求方式参考示例
restlet 基于xml+http协议的轻量级web服务框架
restlet相关文档
介绍restlet如何整合spring框架进行开发。Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的,广泛的应用于应用项目中。...具体教程可以查看http://www.lifeba.org/arch/restlet_spring_3.html。
restlet项目
hadoop+restlet