因为项目需要一些动态的权限验证.需要根据命名空间找到类,然后反射出所有的方法做权限的验证.还希望能够动态的配置页面显示的模块.
实现的过程中遇到一个问题,如果根据namespace获得对应的action.java呢??
找了些资料,并没有发现直接回答这个问题的.只要自己来找吧.
打开FilterDispatcher.java来看看doFilter都组了什么.
//根据URI地址获得当前mapping
mapping = actionMapper.getMapping(request, dispatcher.getConfigurationManager());
//利用mapping执行action
dispatcher.serviceAction(request, response, servletContext, mapping);
以上两个是关键点..首先struts2会根据当前的uri获得mapping..实现的原理和我处理页面URL的差不多.有时间我贴出来给大家看..然后又通过mapping和必要的参数开始执行action的方法..那我需要的一个字第二部里了.点击Ctrl进入看看吧.
这个时候打开了Dispatcher.java
Configuration config = configurationManager.getConfiguration();
//通过namespace+name+method+extracontext执行action
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
namespace, name, method, extraContext, true, false);
嘿嘿找到了.原来是在ActionProxy上啊.这就简单了.打开我的Action开始测试一下.
Dispatcher dispatcher = Dispatcher.getInstance();
ConfigurationManager configurationManager = dispatcher.getConfigurationManager();
Configuration config = configurationManager.getConfiguration();
Container container = config.getContainer();
ActionProxyFactory actionProxyFactory = container.getInstance(ActionProxyFactory.class);
//针对当前需求,这里用到的只有"/system/module"和第二个"module"有用.,其他参数没有实际用途.
ActionProxy proxy = actionProxyFactory.createActionProxy("/system/module", "module", "module", null, true, false);
Object obj = proxy.getAction();
System.out.println(obj.getClass().getName());
页面输出
com.wisdom.pmall.web.system.module.ModuleAction
可以根据命名空间和名称来获得类了...已经达到最开始预想的要求了..现在我能不能遍历所有的命名空间和名字呢?
这些东西应该是在config里的吧.
config.getPackageConfigs()
可以返回所有的配置信息.包括了命名空间.但是没有name...看来还需要近一步跟踪...马上下班了.明天再弄吧!
分享到:
相关推荐
<package name="default" namespace="/" extends="struts-default"> <!-- 添加如下内容 --> <result-types> <result-type name="streamx" class=...
Struts2 JSON Plugin是Apache Struts框架的一个重要插件,主要功能是使Struts2能够无缝地处理JSON(JavaScript Object Notation)数据。这个插件极大地增强了Struts2应用程序的可交互性和响应速度,尤其在开发Web...
Struts2 JSON Plugin是Apache Struts框架的一个扩展插件,主要功能是支持Struts2应用程序与JSON(JavaScript Object Notation)格式的数据进行交互。JSON是一种轻量级的数据交换格式,广泛用于Web服务和AJAX...
通过该插件,Struts2能够自动扫描并识别Web应用程序中的Action类,从而推测出它们的命名空间(namespace)。此外,Zero Config还能够根据Action类的位置推断出结果视图(result view)的路径。 ##### 2.1 配置方法 在`...
Struts2是一个非常流行的Java Web框架,用于构建可维护性和可扩展性良好的企业级应用程序。在Web应用中,为了确保数据传输的安全性,通常会使用HTTPS协议,它基于SSL/TLS来加密通信,保护用户的隐私信息。Struts2...
<package name="HelloPackage" namespace="/" extends="struts-default"> <action name="Hello"> <result>/Hello.jsp </action> </struts> ``` 这里设置了Struts2的开发模式(devMode)为true,以便在开发...
<package name="struts2" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.struts2.action.HelloWorldAction"> <result name="success">/WEB-INF/page/hello.jsp </action> ...
Struts2是一个流行的Java web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了便利。然而,正如标题所示,“Struts2的bug——关于Struts2中找不到Action的”,这个问题可能困扰了许多开发者。在Struts2...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,JSON(JavaScript Object Notation)包是一个关键组件,它提供了与JSON数据格式交互的能力,使得Web应用能够...
通常,Action类是Java编写的,但通过Struts2的插件机制,我们可以使用Groovy来创建Action,这为我们的开发工作带来了更多的灵活性。 要集成Groovy和Struts2,我们需要做以下几步: 1. **配置环境**:确保你的项目...
Struts2是一个非常流行的Java Web开发框架,它极大地简化了MVC应用的构建。JSON(JavaScript Object Notation)是用于数据交换的一种轻量级格式,它在Web服务和客户端之间传递数据时非常常见。在Struts2中,JSON支持...
当Action执行完成后,返回"success",Struts2的JSON插件会根据配置自动将`result`和`list`属性转换为JSON并发送给客户端。 总的来说,Struts2通过整合JSON,提高了Web应用的响应速度和用户体验,使得服务器与客户端...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建企业级Java Web应用程序。在Struts2框架中,ActionError和ActionMessage是处理用户输入验证和错误反馈的重要组件,它们使得开发者能够优雅地管理应用程序...
前几天在网上下载一个struts2的helloword的例子,那个作者也真够缺德的,搞个错误的程序,害得我查了一天的程序错误。 最后发现竟然是struts.xml被写成啦sturts.xml。 碰见这样的问题先鄙视下提供例子的作者, 再...
<package name="chapter1" namespace="/chapter1" extends="struts-default"> <action name="HelloWorld" class="chapter1.action.Chapter1Action" method="execute"> <result name="success">/WEB-INF/JspPage/...
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、模块化且易于管理的MVC(模型-视图-控制器)应用。在本文中,我们将深入探讨Struts2框架的基本概念,以及如何利用Struts2-2.1.6版本创建一个最简单...
Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...
<package name="default" namespace="/" extends="struts-default"> <!-- 全局允许的方法 --> <global-allowed-methods>regex:.*</global-allowed-methods> <!-- 添加具体的Action配置 --> </struts> ``` - *...
Struts2是一个流行的Java Web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。它由Apache软件基金会维护,并且是基于XWork框架构建的。在深入讲解Struts2的知识点之前,让我们先了解如何开始一个Struts2...
在struts.xml或struts.properties文件中,我们可以定义Action的namespace和actionName,形成完整的Action路径。这有助于组织和模块化应用的不同部分。 `Struts2_0500_ActionMethod`讲解了如何配置Action类的执行...