`
锅巴49
  • 浏览: 163328 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

strurts2 中的 ActionMapper的 作用

 
阅读更多

最近在项目中要做http api,要求提供的url是 http://***.domain.com/api/rest?sign={签名}&method={namespace}.{action名}.{调用方法名}&......

 

类似淘宝的top api url 风格,一个url,根据参数不同,映射到不同的控制器。

 

实现方法详细:

 

1、实现自己的ActionMapper,通过method参数将请求转发到具体的action

public class RestActionMapper extends DefaultActionMapper {

	private static final Pattern p = Pattern
			.compile("([^\\.]+?)\\.([^\\.]+?)\\.([^\\.]+?)$");

	@Override
	public ActionMapping getMapping(HttpServletRequest request,
			ConfigurationManager configManager) {

		ActionMapping mapping = new ActionMapping();

		final String method = request.getParameter("method");
		if (method == null) {
			throw new IllegalArgumentException("param method can not be null");
		}
		Matcher m = p.matcher(method);
		if (!m.matches()) {
			throw new RuntimeException("method" + method + " unmatch pattern:"
					+ p);
		}

		mapping.setNamespace("/" + m.group(1));
		mapping.setName(m.group(2));
		mapping.setMethod(m.group(3));

		return mapping;
	}

}

 2、在struts.xml增加配置,将默认的actionmapper换成自定义的

<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper"
		name="api_rest" class="com.my.profile.struts.RestActionMapper" />
<constant name="struts.mapper.class" value="api_rest" />

 

3、在web.xml中,这样将接收/api/rest 的所有请求

<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/api/rest</url-pattern>
	</filter-mapping>

 

struts2很强大

0
2
分享到:
评论
1 楼 xiaokang1582830 2012-10-31  
api/rest这样的定义如果项目中不存在此路径则会是404错误

相关推荐

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    &lt;bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class="com.struts2.MyDefaultActionMapper" /&gt; &lt;constant name="struts.mapper.class" value=...

    struts2 漏洞利用工具

    1. **Ognl(Object-Graph Navigation Language)表达式注入**:这是Struts2中最常见的一类漏洞,源于其使用OGNL语言解析用户输入来执行服务器端操作。攻击者可以通过构造恶意的OGNL表达式,从而执行任意服务器端代码...

    struts2 源码分析

    Struts2 中它的默认实现类是 DefaultActionMapper,ActionMapper 很大的用处可以根据自己的需要来设计 url 格式,它自己也有 Restful 的实现。ActionProxy 是 Action 的一个代理,由 ActionProxyFactory 创建,它...

    Struts2漏洞利用工具

    首先,我们要了解Struts2中最著名的漏洞之一——CVE-2017-5638,这是一个严重的远程代码执行漏洞。攻击者可以通过精心构造的HTTP请求头,使Struts2的S2-045或S2-048等插件解析恶意的OGNL表达式,从而在服务器端执行...

    struts2的struts.properties配置文件详解

    15. struts.mapper.class:这是一个ActionMapper实现类,Struts2用于处理请求映射。 16. struts.multipart.maxSize:这是multipart请求信息的最大尺寸(文件上传用),Struts2用于限制文件上传的尺寸。 17. struts...

    Struts2漏洞利用工具2016版 32.zip

    然而,如同任何复杂的软件系统一样,Struts2在它的生命周期中也暴露出了一些安全漏洞,其中一些可能导致严重的安全问题,比如远程代码执行(RCE)。 标题中的“Struts2漏洞利用工具2016版”很可能是指针对2016年...

    Struts2+技术内幕——深入解析Struts2架构设计与实现原理

    同时,Struts2提供了丰富的插件系统,如Tiles插件用于页面布局,Ajax插件支持异步交互,以及上传下载插件等,这些都会在《Struts2技术内幕》中有详细讲解。 在源码分析部分,你将了解到Struts2如何解析HTTP请求,...

    struts2面试题

    Struts2 的主要特点是使用 FilterDispatcher 作为核心控制器,将请求分发到相应的 Action 中。下面是 Struts2 面试题中涉及到的知识点: 1. Struts1 和 Struts2 的区别: Struts1 和 Struts2 是两个不同的框架,...

    Struts2——教程

    在Struts2中,Model代表业务逻辑,View负责展示数据,Controller则协调Model和View之间的交互。Struts2使用ValueStack来存储和传递数据,使得数据可以在Action和JSP之间无缝流动。 四、配置与注解 Struts2支持XML...

    Struts2 chm文档

    6.Struts2中的零配置与CoC(Convention over Configration).doc 7.Struts2介绍之使用链接标签.doc 8.Struts2入门.doc 9.Struts2学习进阶(基础篇1-7) 10.Struts2学习进阶(实例篇1)——struts2-blank-2.0.8实例...

    深入浅出Struts2.pdf

    Struts2提供基于注解或XML的表单验证机制,可以在Action类中定义验证规则,并在用户提交表单时自动执行。 总之,“深入浅出Struts2”这份资料全面讲解了Struts2的各个关键组成部分,包括其工作原理、配置方式、拦截...

    Struts2初步使用总结

    在Struts2中,所有的Action调用都是通过`ActionProxy`来完成的。 通过以上内容,我们可以看到Struts2是一个功能强大且易于使用的Java Web开发框架,它简化了Web应用程序的开发过程,使开发者能够更专注于业务逻辑的...

    Struts1与Struts2原理 区别详解汇总

    不同于Struts1中的ActionServlet,Struts2中的FilterDispatcher是基于Java Servlet过滤器(Filter)来实现的。 2. **Action**:在Struts2中,Action不再直接与Servlet API耦合,而是通过拦截器(Interceptors)进行...

    struts2重要知识点原理

    在Struts2应用中,Action的配置通常在struts.xml文件中完成。每个Action都有一个唯一的`name`属性,对应于用户请求的URL部分,还有一个`class`属性,指定了Action的具体实现类。值得注意的是,实际处理用户请求的并...

    Struts2 工作原理 Struts2框架 有图

    Struts2框架作为Java Web开发领域中的一款经典MVC(Model-View-Controller)框架,其工作原理涉及到了一系列复杂的组件交互与流程控制。本文将深入解析Struts2的工作流程,帮助开发者理解其核心机制。 ### 一、...

    Struts2源码阅读

    Struts2中的几个关键类值得进一步了解: 1. `ActionMapper`:默认实现为`DefaultActionMapper`,它将HTTP请求与Action调用进行映射,降低了Action对Servlet API的依赖。通过自定义ActionMapper,你可以自定义URL...

    Struts2漏洞检查工具2017版

    1. **CVE-2017-9791(S2-045)**:这是一个远程代码执行漏洞,由于Struts2的StrutsPrepareAndExecuteFilter类在处理ActionMapper时存在缺陷,攻击者可以通过精心构造的HTTP请求头来触发这个漏洞,从而执行任意服务器...

    Struts2 动态方法调用(十三)

    在Struts2中,动态方法调用(Dynamic Method Invocation,DMI)是一种特性,允许我们通过URL直接调用Action类的方法,而无需在配置文件中显式指定。这在某些情况下提供了更大的灵活性。 在Struts2的动态方法调用中...

    struts2_core-jar

    XWork框架在Struts2中扮演着重要角色,使得Struts2能够更灵活、更安全地处理Web应用程序的请求和响应。 "struts2-core"是Struts2框架的主要部分,包括了控制器组件、动作类、配置管理、插件架构等。它负责接收HTTP...

    struts2框架源码

    在Struts2中,这通常通过配置文件(如struts.xml)或注解完成。 3. **Interceptor(拦截器)**:拦截器是Struts2的一个关键特性,它允许开发者在Action执行前后插入自定义的处理逻辑。例如,日志记录、权限检查、...

Global site tag (gtag.js) - Google Analytics