`
man1900
  • 浏览: 431951 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Struts2的缺省Action处理

阅读更多

在Struts2中,若你的所有页面都放在pages这样的目录下,并且没有进行特别的配置,而你在对外访问的时候,不想通过jsp,而是使用Struts的action来进行处理,这样,即所有的jsp都需要配置一个对应的Action.

假设我配置了Struts2的扩展名为.do.

 

http://localhost:8080/myapp/admin/main.do希望是访问我的web/pages/admin/main.jsp

 

这样一来,所有的页面的显示,均需要配置一个action.有时,我们仅是需要显示一个信息提示的页面,并不需要作页面的数据处理,这时,我们可以配置一个公共的Action作为这些访问的缺省处理。该处理则仅显示对应的jsp即可。

 

 

1.在Struts.xml中配置一个能动态处理的Action.该Action包括一个动态的视图属性,如

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <constant name="struts.action.extension" value="do" />
 <constant name="struts.devMode" value="true" />
 <constant name="struts.ui.theme" value="xhtml"/>
 <constant name="struts.custom.i18n.resources" value="conf/message" />

 <package name="default" extends="struts-default">
   <default-action-ref name="defaultAction"/>
   <action name="defaultAction" class="com.ht.web.action.BaseAction">
    <result>${successResultValue}</result>
   </action>
 </package>

</struts>

 

其中successResultValue为BaseAction中的属性。

 

如下为BaseAction的实现:

import org.apache.struts2.dispatcher.DefaultActionSupport;
public class BaseAction extends DefaultActionSupport{
	@Override
	public String execute() throws Exception {
		HttpServletRequest request=getRequest();
		String uri=request.getRequestURI();
		String url=uri.substring(request.getContextPath().length());
		url=url.replace(".do", ".jsp");
		url="/pages"+url;
		setSuccessResultValue(url);
		return SUCCESS;
	}
}

 其中DefaultActionSupport的代码如下:

/*
 * $Id: DefaultActionSupport.java 471756 2006-11-06 15:01:43Z husted $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.struts2.dispatcher;


import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * A simple action support class that sets properties to be able to serve
 */
public class DefaultActionSupport extends ActionSupport {

    private static final long serialVersionUID = -2426166391283746095L;

    private String successResultValue;


    /**
     * Constructor
     */
    public DefaultActionSupport() {
        super();
    }

    /* (non-Javadoc)
     * @see com.opensymphony.xwork2.ActionSupport#execute()
     */
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        String requestedUrl = request.getPathInfo();
        if (successResultValue == null) successResultValue = requestedUrl;
        return SUCCESS;
    }

    /**
     * @return Returns the successResultValue.
     */
    public String getSuccessResultValue() {
        return successResultValue;
    }

    /**
     * @param successResultValue The successResultValue to set.
     */
    public void setSuccessResultValue(String successResultValue) {
        this.successResultValue = successResultValue;
    }


}

 

 

因此大家可以看出,successResultValue可以为动态的result结果页。

所以在BaseAction中的execute,则把逻辑视图的url,转成真正的物理视图jsp,设置至successResultValue变量中去,然后再由struts的ActionMapping去处理。

分享到:
评论

相关推荐

    spring整合struts2与hibernate核心配置文件

    在IT行业中,SSH...通过这些配置,SSH能够协同工作,Spring负责整体控制和事务管理,Struts2处理用户交互,Hibernate处理数据库操作。这种整合提供了强大的功能,使开发者能更专注于业务逻辑,而非底层技术细节。

    struts2参数配置

    - 通过ActionMapping,Struts2能够根据请求URL找到对应的Action处理程序。 #### 六、文件上传配置 ##### 1. **Multipart配置** - **MultipartRequestHandler**:处理文件上传请求的关键组件。 - 默认使用`org....

    struts2讲义_吴峻申

    4.1 拦截器在Struts2中的缺省应用 47 4.2 拦截器原理实现 50 4.3 在Struts2中配置自定义的拦截器 53 4.3.1 扩展拦截器接口的自定义拦截器配置 54 4.3.2 继承抽象拦截器的自定义拦截器配置 56 4.3.3 继承方法拦截器的...

    Struts2讲义-作者:吴峻申

    - 开发者只需在Action类中定义文件域,Struts2会自动处理文件上传的细节。 #### 六、Struts2标签库 - **Struts2标签使用原理解疑**: - Struts2的标签库主要基于JSP技术实现。 - 这些标签内部使用了OGNL表达式...

    struts2讲义.doc

    - **FilterDispatcher和Action**:FilterDispatcher是Struts 2的前端控制器,它负责处理所有HTTP请求并转发给相应的Action;Action是业务逻辑的主要承载者。 - **配置文件**:Struts 2使用XML配置文件来管理框架的...

    struts2讲义

    - `web.xml`中定义了Struts2过滤器的配置,确保所有请求都经过Struts2处理。 - **3.2 使用配置文件struts.xml实现页面导航定义** - **知识点**: 解释了如何使用`struts.xml`文件定义页面间的跳转规则。 - **核心...

    Struts模块化编程教程 .doc

    ActionServlet是Struts框架的核心组件,用于处理用户请求,并将请求转发给合适的Action处理。在配置ActionServlet时,可以通过以下参数来支持模块化: - **Config**: 配置缺省模块的路径,默认为`/WEB-INF/struts-...

    Struts模块化编程教程

    在 Struts 框架中,**ActionServlet** 扮演了 MVC 模式中的 **控制器** 角色。 - **用户界面** 主要通过 JSP (Java Server Pages) 来构建,并且不包含业务逻辑,这部分属于 MVC 中的 **视图(View)** 部分。 - 用户...

    07-01-Struts标签.pdf

    数据标签在Struts2中扮演着数据传输和处理的角色。 2. **控制标签**:控制标签用于控制程序的执行流程,比如执行条件判断和循环控制,它们类似于传统编程语言中的控制流语句。 3. **UI标签**:这类标签负责生成Web...

    doubleselect.doc

    通过上述步骤,我们可以清晰地看到如何利用Struts2框架中的`&lt;s:doubleselect&gt;`标签实现动态的缺省值设置功能。这种方法不仅能够提高用户体验,还大大简化了开发工作量。在实际项目中,可以根据具体需求灵活调整数据...

    黄淮学院J2EE考试复习试题

    Struts2以**过滤器**(Filter)为核心,采用**拦截器**(Interceptor)机制来处理用户的请求。这种设计模式提高了代码的复用性,并简化了控制器的开发工作。 3. **构建Struts2应用的基础类库** 构建Struts2应用...

    Javaee复习超级重点.docx

    Struts2是一个流行的MVC框架,其输入校验可以通过在Action类中处理方法、继承`ActionSupport`并重写`validate()`方法或使用Struts2的内置校验框架来实现。 Struts2的工作原理涉及一系列步骤,包括客户端的HTTP请求...

    Java通用代码生成实用程序XDoclet(源码包)

    import org.apache.struts.action.ActionForward; /** * * @author yangjuqi 2007-06-13 * @struts.action name="biddingForm" path="/carriageBidQuery" validate="false" * @struts.action-forward name=...

    外文翻译-Spring的web-MVC-构架模式 (2).pdf

    - **与Struts比较**:Spring不强制使用FormController,允许直接操作任何对象,避免了ActionForm和Action之间的绑定。 - **与WebWork比较**:Spring的控制器、命令对象和模型概念更明确,而WebWork将这些角色集中...

    java面试题

    过滤器是在 java web 中,你传入的 request、response 提前过滤掉一些信息,或者提前设置一些参数,然后再传入 servlet 或者 struts 的 action 进行业务逻辑。 7. JAVA 语言如何进行异常处理 Java 通过面向对象的...

Global site tag (gtag.js) - Google Analytics