-
如何利用struts2的Restful2ActionMapper实现ReST风格的URL5
之前提过这个问题,可惜当时没仔细看就把问题给关闭了,只好又开个问题:)
针对这个问题,strut2似乎有两种方案:Restful2ActionMapper和ReST-plugin。
ReST-plugin的我试过,可惜要以无配置的方式实现,而我的方案选择通过struts.xml配置action的方式实现,所以还是考虑用Restful2ActionMapper的方式实现。
之前有一篇帖子介绍了实现方案:
http://www.iteye.com/topic/110934
恕小弟愚昧,按照帖子的配置做下来实现不了预期的效果。
配置如下:
web.xml:<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
struts.xml:<constant name="struts.devMode" value="false" /> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.enable.SlashesInActionNames" value="true" /> <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper" /> <package name="default" extends="struts-default"> <action name="article" class="com.struts2.demo.action.ArticleAction"> <result name="create">/article/create.jsp</result> <result name="update">/article/create.jsp</result> <result name="index">/article/firstpage.jsp</result> </action> </package>
com.struts2.demo.action.ArticleAction:
package com.struts2.demo.action; public class ArticleAction { private String year; private String month; /*public String execute() throws Exception { System.out.println("execute method invoked!"); return "index"; }*/ public String view(){ System.out.println("view method invoked!"); return "index"; } public String update(){ System.out.println("update method invoked!"); return "update"; } public String index(){ System.out.println("index method invoked!"); return "index"; } public String create(){ System.out.println("create method invoked!"); return "create"; } public String getMonth() { return month; } public void setMonth(String month) { this.month = month; } public String getYear() { return year; } public void setYear(String year) { this.year = year; } }
按照如上struts.xml配置,预期结果是:- 使用GET方法访问http://localhost/article/时可以调用index方法并转到firstpage.jsp;
- 使用POST方法访问http://localhost/article/时可以调用create方法并转到create.jsp;
firstpage.jsp:<table> <s:form method="POST" action="/article"> <s:textfield id="year" label="year" ></s:textfield> <s:textfield id="month" label="month" ></s:textfield> <s:submit value="post it!" /> </s:form> </table>
但两个方法都提示:There is no Action mapped for action name article
当然如果加上execute方法,并用http://localhost/article.action是可以访问的,不过这样就达不大ReST风格的URL。
有什么指导意见,请不吝指点。
//============================================================================
换成了用ReST-plugin方式解决(struts2 2.12,需要struts2-rest-plugin.jar),时来运转,做了些修改,再试一下竟然神奇地通过了。而这修改竟然只是该了下类名。将类名从ArticleAction改成ArticleController!(不是struts2官方文档里提到的*Resource,而是示例程序里的*Controller!)。
当然还有问题就是:结果类型如果不想按照默认的零配置的方案来的话,必须自己配置结果类型,而这结果类型就只能再类中通过注解的方式实现,如:@Results({ @Result(name="index", type=ServletDispatcherResult.class, value="/article/article-index.jsp"), @Result(name="create", type=ServletDispatcherResult.class, value="/article/article-success.jsp") } )
发现javaeye在周末的时候人气要淡得多,都没人回答问题:),以后在“提问的智慧”里还应该加条:请尽量在工作时间提问。:)
2008年6月14日 19:26
目前还没有答案
相关推荐
因為剛入職 公司要求會使用struts2 restful風格,剛開始都沒聽說過restful,然後在網上找了N久的講解或demo,都沒找到,花了一週 在老大的指導下搞出來了,希望可以幫助到想學restful風格的同學們
在Struts2中,可以通过配置特定的ActionMapper来支持REST风格的URL映射。`RestActionMapper`是Struts2提供的一个关键组件,它负责将RESTful请求映射到相应的Action上。 首先,让我们了解非REST方式的Struts2工作...
Struts2请求转restful所需jar包 ezmorph-1.0.6.jar json-lib-2.3-jdk15.jar struts2-convention-plugin-2.3.14.jar struts2-rest-plugin-2.3.14.jar xstream-1.4.3.jar
在这个"Struts2+rest简单实例"中,开发者创建了一个小型的示例应用,目的是帮助初学者快速理解如何在Struts2框架中集成RESTful服务。以下是这个实例中可能涉及的关键知识点: 1. **Struts2框架基础**:Struts2的...
总结起来,"Struts2 Spring3 JPA RESTful"是一个强大的Java Web开发组合,它利用各框架的优势,构建出高性能、易于维护且具有良好扩展性的Web应用。开发者可以借此快速搭建功能丰富的RESTful服务,满足各种业务需求...
STRUTS2 RESTFUL PLUGIN
Struts2 和 REST 整合是一个常见的Web开发实践,它允许开发者构建RESTful风格的Web服务,从而提高应用的可伸缩性和互操作性。在这个完整的例子中,我们将深入探讨Struts2框架如何与REST原则相结合,以及如何通过提供...
目录 1.Struts 2权威指南——第1章 Struts 2概述.doc 2.truts 2权威指南——第2章 Struts 2下的HelloWorld.doc 3.Struts 2权威指南——第3章 Struts...11.改写Restful2ActionMapper让Struts2支持REST风格的URL映射.doc
总之,"struts2+rest简单实例"是一个学习如何在Struts2框架中实现RESTful API的绝佳资源。通过实践这个示例,开发者可以更好地理解这两者的结合,以及如何构建一个符合REST原则的Java Web应用程序。
在2.3.15版本中,Struts2已经提供了完善的REST插件,使得开发者可以通过简单的配置实现RESTful请求的映射和处理。例如,通过注解或者XML配置,可以将URL路径中的不同部分映射到Action的方法上,从而实现HTTP动词与...
Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按 REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST ...REST 插件的核心是 RestActionMapper,它负责将 Rails 风格的 URL 转换为传统请求的 URL。
将Struts2与REST结合,可以让开发者利用Struts2的强大功能来创建符合REST原则的服务。 在Struts2中支持REST主要通过使用Struts2的REST插件实现。这个插件允许开发者创建RESTful的URL,以便更好地处理HTTP方法(GET...
而Struts2的REST插件则是为了让开发者能够轻松地在Struts2应用中实现RESTful服务。REST(Representational State Transfer)是一种软件架构风格,常用于设计网络应用程序,特别是Web服务。RESTful服务遵循一组特定的...
2. 在类中定义处理请求的方法,使用`@RequestMapping`和`@GetMapping`、`@PostMapping`等注解指定URL映射。例如,创建一个处理GET请求的接口来获取用户列表: ```java @RestController public class ...
在本文中,我们将深入探讨如何使用Struts2的`ModelDriven`接口以及如何控制URL,以实现`struts2-rest-showcase-2.1.8.war`项目中的功能。 首先,`ModelDriven`接口是Struts2提供的一种设计模式,用于将Action类与...
Restful是REST(Representational State Transfer)风格的缩写,是一种网络应用程序的设计风格和开发方式,强调资源的状态转移。将Struts2与RESTful结合,可以实现基于HTTP方法(如GET、POST、PUT、DELETE等)的Web...