2月16日
REST风格的URL映射之实现篇
昨天写了个接口类,今天就来实现了!
首先,官方文档说明有个Restful2ActionMapper的现实类,可以做到这点!Restful2ActionMapper源码有一以下一些比较重要的:
1: ActionMapping mapping = super.getMapping(request, configManager);
2: String actionName = mapping.getName();
3:
//接着是一大堆判断数据包开头的方法isGet、isPost、isPut、isDelete方法
4:
if (isGet(request)) {
5: mapping.setMethod("index");
6: } else
if (isPost(request)) {
7: mapping.setMethod("create");
8: } else
if (isGet(request)) {
9: mapping.setMethod("view");
10: } else
if (isDelete(request))
11: mapping.setMethod("remove");
12: } else
if (isPut(request)) {
13: mapping.setMethod("update"); }
14:
//判断包头方法
15:
protected boolean isPost(HttpServletRequest request) {
16:
return
"post".equalsIgnoreCase(request.getMethod());
17: }
我们现在明白了这个类的操作方式,接着要在web.xml文件设置一些参数:
struts.xml:
1:
<!--</span><span style="font-family:宋体">设置是否可以在</span><span style="font-family:Consolas">action</span><span style="font-family:宋体">中使用斜线,默认为</span><span style="font-family:Consolas">false</span><span style="font-family:宋体">不可以</span><span style="font-family:Consolas">-->
2:
constant
name="struts.enable.SlashesInActionNames"
value="true"
/>
3:
<!--</span><span style="font-family:宋体">指定请求</span><span style="font-family:Consolas">url</span><span style="font-family:宋体">与</span><span style="font-family:Consolas">action</span><span style="font-family:宋体">映射器</span><span style="font-family:Consolas">-->
4:
constant
name="struts.mapper.class"
5:
value="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper"
/>
6:
<!--</span><span style="font-family:宋体">这里我比较简单,只要一个</span><span style="font-family:Consolas">ID</span><span style="font-family:宋体">就算了</span><span style="font-family:Consolas">-->
7:
package
name="restful"
extends="struts-default"
>
8:
action
name="restful/*"
class="demo.ssh.action.RestfulAction">
9:
param
name="id">{1}param>
10:
<!--</span><span style="font-family:宋体">然后是一堆</span><span style="font-family:Consolas">CRUD</span><span style="font-family:宋体">指向的页面</span><span style="font-family:Consolas">-->
11:
result
name="create">/create.jspresult>
12:
action>
13:
package>
由于观察实现类,必需在JAVA代码中写死这几个方法名:
RestfulAction代码:
1:
public
class RestfulAction extends ActionSupport {
3:
private Integer id;
5:
// getters and setters
6: @Override
7:
public String execute() throws Exception {
8:
return super.execute();
9: }
10:
public String remove(){
11:
//TODO READ方法
12:
return
"delete";
13:
//省略一大堆其他实现方法
14: }
然后是JSP页面的:
1:
s:form
method="POST"
action="restful">
2:
s:textfield
id="id"
label="ID"
/>
3:
s:submit
value="提交"
/>
4:
s:form>
这里应该大概可以实现ReST风格的URL,但是我的报错…希望大家指点一下…
然后我喋喋不休,我找到一个比这个更好的struts2-rest-plugin.jar这个包,我开始怀疑Struts官方说明不可信了,有这么好的REST Plugin居然不说,我google一下这个类,网址:http://struts.apache.org/2.x/docs/rest-plugin.html
这个类不仅可以以ReST风格显示URL,而且可以用/product/1.xml 或者 /product/1.json,来返回文件的类型
以下是官方一个example:
1:
public
class OrdersController implements ModelDriven<order> {</order>
2:
private OrderManager orderManager;
3:
private String id;
4:
private Order model;
5:
6:
public HttpHeaders show() {
7: model = orderManager.findOrder(id);
8:
//下面应该就是实现xml,Json的返回类型格式
9:
return
new DefaultHttpHeaders("show")
10: .withETag(model.getUniqueStamp())
11: .lastModified(model.getLastModified());
12: }
13:
// 和我写的形式一样哈哈
14:
public String update() {
15: orderManager.updateOrder(model);
16:
return
"update";
17: }
18:
// getters and setters
19: }
好了,我又要写多次了…to be continue…
分享到:
相关推荐
实现REST风格的URL映射,首先需要一个强大的URL解析器,能够理解并处理各种复杂的URL结构。这通常涉及到正则表达式的使用,但为了避免手动编写大量重复的正则表达式,可以设计一套灵活的URL匹配规则,如使用占位符来...
在本章中,我们将深入探讨Spring MVC框架中的RESTful风格URL设计以及如何处理静态资源。REST(Representational State Transfer)是一种软件架构风格,常用于Web服务设计,它强调通过HTTP方法(如GET、POST、PUT、...
在IT行业中,REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,主要用于Web服务的构建。RESTful服务接口以其简洁、高效的特点,被广泛应用于分布式系统和互联网应用...
基于Ajax_REST风格的WebService的设计与实现
REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于网络应用程序设计,尤其是Web服务。它强调通过HTTP协议来实现服务接口,使得客户端和服务器之间的交互变得简单、直观。...
使用SpringMVC+jdbctemplate实现REST风格的CRUD功能 完成功能:能够对用户进行CRUD操作,界面粗糙,只做演示 运行环境:eclipse2019.03+JDK8+Tomcat9.0.41+MySQL5.5 运用到的技术:spring+springMVC+jdbctemplate+...
RESTLET介绍 Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。...该程序已经实现了rest风格的API,二次开发非常方便!
Jersey 的这些特点使得其成为 REST 风格 Web 服务开发的不二之选。下面是一个简单的示例,演示了如何使用 Jersey 构建一个 REST 风格 Web 服务: 首先,我们定义了一个 Student 资源,包含学生的姓名和年龄信息,...
在本篇中,我们将深入探讨如何使用Spring MVC构建RESTful接口,主要关注的是在实际项目中创建第一个REST风格接口的源代码实现。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,...
### 基于REST风格的RBAC模型研究 #### 概述 随着互联网技术的不断发展,Web应用系统规模持续扩大,对于访问控制的需求也日益增长。传统的基于角色的访问控制(Role-Based Access Control, RBAC)模型在面对大规模...
【标题】"CXF开发REST风格接口所需的最小JAR包" 在Java开发中,Apache CXF是一个广泛使用的开源服务框架,它支持Web服务(SOAP)和RESTful接口的创建。REST(Representational State Transfer)风格的接口已经成为...
REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于Web服务的设计,以简洁、无状态和基于标准的方式提供接口。REST框架的实现通常涉及到HTTP协议中的四个基本操作:GET、POST...
REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于网络应用程序设计,尤其是Web服务。它强调简洁、无状态和基于标准的接口,使得不同的系统间能够轻松进行交互。REST风格的...
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找...
7. **安全性**: WCF REST服务的安全性可以通过多种方式实现,包括基本身份验证、Windows身份验证、证书验证等。配置安全设置以保护服务免受未经授权的访问。 在提供的压缩包"Solution4"中,可能包含了完整的WCF ...
* 无状态服务器:REST 风格应用可以实现交互,但它却天然地具有服务器无状态的特征。 在互联网应用中,系统的各个部分通常既是生产者又是消费者,必须要打破生态环境的界限才能相互协作。REST 架构风格提供了一种...
Rest风格接口实现,即RESTful API设计,遵循 Representational State Transfer(表述性状态转移)原则,是一种网络应用程序的设计风格和开发方式,强调资源的识别和操作。在SSM框架下,我们通常使用Spring MVC的@...
通过该平台,可以轻松实现身份验证、即时通讯以及活动动态等功能,进一步提升应用程序与 Windows Live 的结合度,提供更加直观的用户体验。 #### 核心应用功能详解 **用户身份** - **快速登录与注册**:每月有数...