`
wangcheng
  • 浏览: 1460452 次
  • 性别: Icon_minigender_1
  • 来自: 青岛人在北京
社区版块
存档分类
最新评论

用Struts通配符配置导航

阅读更多

想映射如下URL到Action的指定方法
/user/Account.do -> AccountAction.init()
/user/Account/create.do -> AccountAction.create()
/user/Blog/list.do -> BlogAction.list()

 

在struts-config.xml中配置如下

<action path="/user/*/*"
	type="supertest.web.action.{1}Action"
	parameter="{2}"
	scope="request">
</action>

<action path="/user/*"
	type="supertest.web.action.{1}Action"
	parameter=""
	scope="request">
</action>

 

再写个BaseAction如下

public abstract class BaseAction extends DispatchAction {
	
	private static final String DispatchActionMethodName = "method";
	
	private static final String DefaultActionMethod = "init";

    public abstract ActionForward init(ActionMapping mapping,
            ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception;
    
	/**
	 * Override DispatchAction.getMethodName() for CoC
	 */
    @Override
	protected String getMethodName(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response,
			String parameter) throws Exception {
    	
    	//using DispatchAction's process if the parameter equal 'method'
    	if (StringUtils.equalsIgnoreCase(parameter, DispatchActionMethodName)) {
    		return super.getMethodName(mapping, form, request, response, parameter);
    	}
		
    	//using default method if parameter not define
    	if (StringUtils.isBlank(parameter)) {
    		return DefaultActionMethod;
    	}
    	
    	return parameter;
	}

	@Override
    protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
        return init(mapping, form, request, response);
    }
	
    protected ActionForward forward(String path) {
    	return new ActionForward(path);
    }
    
    protected ActionForward redirect(String path) {
    	return new ActionForward(path, true);
    }
    
    protected void bind(Object formBean, HttpServletRequest request) {
    	try {
			BeanUtils.populate(formBean, request.getParameterMap());
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
    
}

 

这就使用Struts通配符来匹配所有合适的URL了。
如果还要兼容以前的 /user/account.do?method=create 的连接。也是可以的。
在struts-config.xml中还像以前那样配置parameter="method"即可。

<action path="/account"
	type="supertest.web.action.AccountAction"
	parameter="method"
	scope="request">
</action>

 

分享到:
评论

相关推荐

    struts2.3.8配置案例含源码

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为开发者提供了构建可...实践中,你还可以尝试更复杂的配置,如使用通配符、国际化、异常处理等,逐步深入理解Struts2的强大功能。

    Struts2全解Struts2全解

    Namespace、自定义Action、路径问题、通配符、包含模块配置文件、默认Action、接受用户输入、服务器跳转、Action中访问web元素、简单数据校验、调用Action的自定义方法 5struts2国际化 ......... 6 struts2输入校验...

    struts2 详解文档

    13. **通配符定义Action**:使用通配符(*)可以为一组相似的Action创建一个通用配置。 14. **接收参数**:Struts2自动将请求参数绑定到Action的属性,同时支持接收数组、列表等复杂类型。 15. **自定义类型转换器**...

    Struts2帮助```````

    通配符配置允许为一类相似的Action创建一个通用的Action映射,减少了配置的复杂性,例如`*.{method}`表示可以匹配任意方法。 八、Action属性接收参数: Action可以通过成员变量接收请求参数,同时有多种方式接收...

    struts2例子.doc

    此配置指定了Struts2过滤器的名称和类名,并使用`/*`通配符映射所有URL,确保所有请求都能被Struts2处理。 3. **项目结构**:合理的项目结构有助于代码的管理和维护。在`src`目录下创建`example`文件夹,用于存放...

    struts2基本知识点

    6. 创建HelloWorld示例,包括Action类和JSP页面,测试Struts2配置是否成功。 **Struts2配置**: 1. `constant`:定义Struts2框架的常量。 2. `package`:定义Action的分组,可以设置拦截器、结果等。 3. `namespace...

    struts与jdbc的分页

    配置中可能需要处理分页参数,如通过通配符`*`捕获URL中的页码信息。 7. **视图(View)**:使用JSP、FreeMarker或其他模板技术来展示分页结果。在页面上,通常会显示页码导航,允许用户切换页码。视图需要根据模型...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    ssh 框架技术

    - **通配符配置Action**:使用通配符简化配置。 - **配置拦截器**:定义拦截器的行为。 - **多配置文件实现**:通过引用多个配置文件来组织大型项目。 - **通过注解实现action的零配置**:使用注解代替XML配置文件。...

    java 框架总结

    - **使用通配符映射**:简化大量相似的Action配置。 - **命名空间**:用于组织Action,实现逻辑隔离。 ##### 3. 配置示例 - **XML配置** ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2....

    sitemesh框架简单例子

    装饰器通常包含页眉、页脚、导航栏等重复元素,而页面内容则作为被装饰的对象,被插入到装饰器的指定位置。 要开始使用Sitemesh,你需要在你的项目中引入Sitemesh的依赖。如果你的项目是基于Maven的,可以在pom.xml...

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    6.4.1 使用通配符 6.4.2 使用条件导航 6.4.3 使用重定向 6.4.4 视图参数的XML配置 6.4.5 在Servlet错误页上使用JSF组件 第7章 用户界面组件模型 7.1 什么是用户界面组件 7.1.1 基于组件的Web开发的兴起 7.1.2 Java ...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    6.4.1 使用通配符 6.4.2 使用条件导航 6.4.3 使用重定向 6.4.4 视图参数的XML配置 6.4.5 在Servlet错误页上使用JSF组件 第7章 用户界面组件模型 7.1 什么是用户界面组件 7.1.1 基于组件的Web开发的兴起 7.1.2 Java ...

    JavaServer Faces完全参考手册(JSF:Complete Reference)

    - **更复杂的导航示例**:探讨了使用通配符、重定向等高级导航技巧。 #### 6. 用户界面组件模型 - **用户界面组件**:是JSF中最核心的概念之一,用于构建用户界面。 - **基于组件的Web开发**:介绍了组件化开发的...

    Java Server Faces:The Complete Reference

    这包括静态和动态导航规则,以及使用通配符、重定向和在faces-config.xml外部定义规则的灵活性。 6. **用户界面组件模型** - JSF提供了一系列预定义的UI组件,如按钮、输入字段和表格,开发者可以利用这些组件快速...

Global site tag (gtag.js) - Google Analytics