`
dysfzhoulong
  • 浏览: 70465 次
  • 性别: Icon_minigender_1
  • 来自: 长沙市
社区版块
存档分类
最新评论

struts 配置步骤

阅读更多
Action, ActionForm, ActionForward ,这三个对象构成了Struts 的核心。
Struts 最核心的控制器是ActionServlet ,该Servlet 拦截用户请求,并将用户请求转入到Struts 体系内。
一、配置ActionServlet
ActionServlet 是一个标准的Servlet ,在web.xml 文件中配置,该Servlet 用于拦所有的HTTP 请求。因此,应将该Servlet 配置成自启动Servlet ,即为该Servlet 配置load-on-startup 属性。
注意:在应用Struts 的很多场景下,为Servlet 配置load-on-startup 属性都是必需的。因此,建议应为ServletAction 配置load-an-startup 属性。
在web.xml 文件中配置ActionServlet 应增加如下片段:
<!-- 将ActionServlet配置成自启动的Servlet -->   
<servlet>   
    <!-- 指定Servlet 的名字 -->   
    <servlet-name>actionSevlet</servlet-name>   
    <!-- 指定该Servlet 的实现类 -->   
    <servlet-class>   
        org.apache.struts.action.ActionServlet    
    </servlet-class>   
    <!-- 配置自启动的级别 -->   
    <load-on-startup>2</load-on-startup>   
</servlet>   
<servlet-mapping>   
    <!-- 配置ActionServlet的URL 映射 -->   
    <servlet-name>actionSevlet</servlet-name>   
    <!-- 所有以.do 结尾的请求由ActionServlet拦截 -->   
    <url-pattern>*.do</url-pattern>   
</servlet-mapping> 

在servlet的配置当中,<load-on-startup>2</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。

该ActionServlet作为一个标准Servlet,配置在Web 应用中,负责拦截用户请求。该Servlet 还有加载Struts 配置文件的责任。但这里并未告诉它如何加载Struts 的配置文
件,以及Struts 的配置文件放在哪里及文件名是什么。ActionServlet默认加载WEB-INF 下的struts-config.xml文件。如果需要Struts 的配置文件不在WEB-INF路径下,或者改变了文件名,则应采用如下方式配置:
<servlet>   
    <servlet-name>actionSevlet</servlet-name>   
    <servlet-class>   
        org.apache.struts.action.ActionServlet    
    </servlet-class>   
    <init-param>   
        <param-name>config</param-name>   
        <param-value>/WEB-INF/struts-config-user.xml</param-value>   
    </init-param>   
    <load-on-startup>2</load-on-startup>   
</servlet> 

在上面的配置中,指定了ActionServlet 的配置文件: struts-config-user.xml文件,该文件作为init-param参数载入,载入时候指定了参数名:config ,config 是Struts 固定的参数名, struts负责解析该参数,并加载该参数的指定的配置文件。Struts 支持使用多个配置文件,当有多个配置文件时,应将不同的配置文件配置成不同的模块,并指定不同的URI。下面的片段配置了两个配置文件:
<servlet>   
    <!-- ActionServlet 的名 -->   
    <servlet-name>actionSevlet</servlet-name>   
    <!-- 配置Servlet 的实现类 -->   
    <servlet-class>   
        org.apache.struts.action.ActionServlet    
    </servlet-class>   
    <!-- 指定Struts 的第一个配置文件 -->   
    <init-param>   
        <!-- 指定配置文件的映射 -->   
        <param-name>config</param-name>   
        <param-value>/WEB-INF/struts-con工fgl.xml</param-value>   
    </init-param>   
    <!-- 指定Struts 的第二个配置文件 -->   
    <init-param>   
        <!-- 指定配置文件的映射 -->   
        <param-name>config/wawa</param-name>   
        <param-value>/WEB-INF/struts-config2.xml</param-value>   
    </init-param>   
    <!-- 将ActionServlet配置成自启动Servlet -->   
    <load-on-startup>2</load-on-startup>   
</servlet>   

上面的配置片段中指定了两个配置文件:struts-config l.xml 和struts-config2.xml 文件。这两个配置文件分别被配置到config 和config/wawa 的路径下。表明将struts-config 1.xml 中的Action 映射到应用的根路径下,而struts-config2.xml 文件中的Action 则被映射到应用的wawa 子路径下。也就是说wawa 将作为系统的一个模块使用。
二、配置ActionForm
配置ActionForm ,必须包含ActionForm 类才行。Struts 要求ActionForm 必须继承Struts 的基类: org.apache.struts.action.ActionForm,ActionForm 的实现非常简单,该类只是一个普通的JavaBean,只要为每个属性提供对应的setter 和getter 方法即可。根据前面的讲解, ActionForm 用于封装用户的请求参数,而请求参数是通过JSP 页面的表单域传递过来的因此应保证ActionForm 的参数与表单域的名字相同。 注意: JavaB ean 的参数是根据getter 、setter 方法确定的。如果希望有一个A 的属性,则应该提供getA 和setA 的方法。
(1)ActionForm的实现
ActionForm 的属性必须与JSP 页面的表单域相同。本示例的表单包含如下两个表单域:
• usemame
• password
因此, ActionForm 必须继承org.apache.struts.action.ActionForm,并为这两个域提供对应的setter 和getter 方法,下面是ActionForm 的源代码:
import org.apache.struts.action.ActionForm;    
public class LoginForm extends ActionForm {    
    private String username;    
    private String password;    
   
    // 表单域username对应的setter 方法    
    /**   
     * @return the username   
     */   
    public String getUsername() {    
        return username;    
    }    
   
    /**   
     * @param username   
     *            the username to set   
     */   
    public void setUsername(String username) {    
        this.username = username;    
    }    
   
    /**   
     * @return the password   
     */   
    public String getPassword() {    
        return password;    
    }    
   
    /**   
     * @param password   
     *            the password to set   
     */   
    public void setPassword(String password) {    
        this.password = password;    
    }    
   
}  

另外,该ActionForm 的两个属性名可以不是usemame 和password。只要提供了usemame 和password 的setter 和getter 方法即可。
注意: FormBean 类应尽量声明成public。
(2)ActionForm 的配置
所有的ActionForm 都被配置在struts-config.xml 文件中,该文件包括了一个form-beans 的元素,该元素内定义了所有的ActionForm,每个ActionForm 对应一个form-bean 元素。
为了定义LoginForm. 必须在struts-config.xml文件中增加如下代码:
<!-- 用于定义所有的ActionForm -->   
<form-beans>   
    <!-- 定义ActionForm,至少指定两个属性: name , type-->   
    <form-bean name="loginForm" type="lee.LoginForm" />   
</form-beans>  

配置ActionForm非常简单,只需指定ActionForm 的name 属性即可。该属性定义了ActionForm的id. 用于标识该Form; 另外还需要一个type 属性,该属性定义了ActionForm的实现类。
下面将介绍Action 如何使用该ActionForm. 以及Action 如何与该ActionForm关联。
三、配置Action
Action 的配置比ActionForm 相对复杂一点,因为Action 负责管理与之关联的ActionForm. 它不仅需要配置实现类,还需要配置Action 的path 属性,该属性用于被用
户请求。对于只需在本Action 内有效的Forward. 还应在Action 元素内配置局部Forward。
(1)Action 的实现
通过ActionForm. 可使Action 无须从HTTP 请求中解析参数。因为所有的参数都被封装在ActionForm中,下面是Action 从AcitionForm 取得请求参数的源代码:
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    
import org.apache.struts.action.Action;    
import org.apache.struts.action.ActionForm;    
import org.apache.struts.action.ActionForward;    
import org.apache.struts.action.ActionMapping;    
public class LoginAction extends Action {    
    // 必须重写该核心方法,该方法actionForm 将表单的请求参数封装成值对象    
    public ActionForward execute(ActionMapping mapping, ActionForm form,    
            HttpServletRequest request, HttpServletResponse response)    
            throws Exception {    
        //将ActionForm强制类型转换为LoginForm    
        LoginForm loginForm = (LoginForm) form;    
        // 从ActionForm中解析出请求参数: username    
        String username = loginForm.getUsername();    
        // 从ActionForm中解析出请求参数: password    
        String pass = loginForm.getUsername();    
        //后面的处理与前一个示例的Action 相同。    
        ...    
    }    
}   

该Action 从转发过来的ActionForm 中解析请求参数,对应的ActionForm 则由ActionServlet 在接收到用户请求时,负责实例化。
实际的过程是: ActionServlet 拦截到用户请求后,根据用户的请求,在配置文件中查找对应的Action , Action 的name 属性指定了用于封装请求参数的ActionForm; 然后ActionServlet 将创建默认的ActionForm 实例,并调用对应的setter 方法完成ActionForm的初始化。
ActionServlet 在分发用户请求时,也将对应ActionForm 的实例一同分发过来。
(2)Action 的配置
Action 需要配置如下几个方面。
• Action 的path: ActionServlet 根据该属性来转发用户的请求,即将用户请求转发与之同名的Action 。同名的意思是:将请求的.do 后缀去掉,匹配Action 的path属性值。
• Action 的name: 此处的name 属性并不是Action 本身的名字,而是与Action 关联的ActionForm。因此该name 属性必须是前面存在的ActionForm 名
• Action 的type: 该属性用于指定Action 的实现类,也就是负责处理用户请求的业
务控制器。
• 局部Forward: Action 的转发并没有转发到实际的JSP 资源,而是转发到逻辑名,即Forward 名。在Action 内配置的Forward 都是局部Forward (该Forward 只在该Action 内有效)。
下面是该Action 的配置代码:
<!-- 该元素里配置所有的Action -->   
<action-mappings>   
    <!-- 配置Action. 指定了path , name , type 等属性 -->   
    <action path="/login" type="lee.LoginAction" name="loginForm">   
        <!-- 配置局部Forward -->   
        <forward name="welcome" path="/WEB-INF/jsp/welcome.jsp" />   
        <forward name="input" path="/login.jsp" />   
    </action>   
</action-mappings>   

四、配置Forward
正如前面所讲, Forward 分局部Forw缸d 和全局Forward 两种。前者在Action 里配置,仅对该Action 有效:后者单独配置,对所有的Action 都有效。
配置Forward 非常简单,主要需要指定以下三个属性。
• name: 该Forward 的逻辑名。
• path: 该Forward 映射到的JSP 资源。 
局部Forward 作为Action 的子元素配置;全局Forward 配置在global-forwards 元素里。
下面是配置全局Forward 的代码:
<!-- 配置全局Forward -->   
<global-forwards>   
    <!-- 配置Forward对象的name 和path 属性 -->   
    <forward name="error" path="/WEB-INF/jsp/error.jsp" />   
</global-forwards>   

上面的配置代码中,配置了一个全局Forward,该Forward 可以被所有的Action 访问。通常,只将全局资源配置成全局Forward。当每个Action 在转发时,首先在局部Forward 中查找与之对应的Forward,如果在局部Forward 中找不到对应的Forward 对象,才会到全局Forward 中查找。因此,局部Forward 可以覆盖全局Forward。
下面提供了该应用的struts-config.xm1文件的全部源代码:
<?xml version="1.0" encoding="UTF-8"?>   
<!-- Struts 配置文件的文件头,包含DTD 等信息 -->   
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">   
<!--Struts 配置文件的根元素 -->   
<struts-config>   
    <!--配置所有的ActionForm -->   
    <form-beans>   
        <!--配置第一个ActionForm,指定ActionForm的name 和type 属性 -->   
        <form-bean name="loginForm" type="lee.LoginForm" />   
    </form-beans>   
    <!--配置全局Forward对象 -->   
    <global-forwards>   
        <!--该Forward对象的name 属性为error. 映射资源为/WEB-INF/jsp/error.jsp -->   
        <forward name="error" path="/WEB-INF/jsp/error.jsp" />   
    </global-forwards>   
    <!--此处配置所有的Action 映射-->   
    <action-mappings>   
        <!--配置Action 的path. type 属性name 属性配置Action 对应的ActionForm-->   
        <action path="/login" type="lee.LoginAction" name="loginForm">   
            <!--还配置了两个局部Forward. 这两个局部Forward仅对该Action有效-->   
            <forward name="welcome" path="/WEB-INF/jsp/welcome.jsp" />   
            <forward name="input" path="/login.jsp" />   
        </action>   
    </action-mappings>   
</struts-config>   
分享到:
评论

相关推荐

    Eclipse Struts基本配置步骤

    本篇文章将详细介绍在Eclipse中进行Struts基本配置的步骤,帮助开发者构建和管理Struts应用。 首先,我们需要准备必要的库文件,这些文件在提供的压缩包中已经包含: 1. struts2-core-2.0.14.jar - Struts2的核心库...

    简单Struts配置案例

    通过Struts配置文件,我们可以定义各个Action和它们对应的处理方法。 在配置简单的Struts应用时,主要涉及以下几个步骤: 1. **添加依赖**:确保你的项目包含了Struts2的核心库。这通常通过在Maven或Gradle的依赖...

    struts2 配置dtd 自动提示

    请注意,不同版本的Eclipse或Struts2可能需要略微调整上述步骤,以确保代码提示功能正常工作。尽管如此,大部分情况下,这种配置方法是有效的,可以帮助开发者更高效地编写和维护Struts2应用的配置文件。

    Struts配置及标签库详解

    总之,掌握Struts的配置和标签库是成为一名熟练的Java Web开发者的重要步骤。通过合理配置Struts,利用其丰富的标签库,可以有效地构建出结构清晰、易于维护的Web应用。对于初学者,理解并熟练运用这些知识,将大大...

    struts2 Https 配置

    在Struts2中配置HTTPS主要涉及以下几个步骤: 1. **配置服务器**:首先,你需要在服务器端(如Tomcat、Jetty等)启用HTTPS。这通常涉及到修改服务器的配置文件(如Tomcat的`server.xml`),添加一个监听443端口的...

    Struts2 code jar+实现struts2步骤文档

    这个压缩包包含了核心库(core)的jar文件和一个实现Struts2工程的步骤文档,这对于初学者或者开发者来说是极其有价值的资源。 1. **Struts2核心库(Core Jars)**: - Struts2的核心库提供了框架的基本功能,包括...

    MyEclipse+struts+Hibernate配置开发

    配置步骤如下: 1. **创建项目**:在MyEclipse中新建一个Web项目,例如名为`test`。 2. **数据库配置**:在MySQL中创建数据库`webases`及表`admin`,定义相应的字段。然后在MyEclipse的Database Explorer透视图中...

    Struts工作原理、流程.doc

    ### Struts配置步骤 1. **导入Struts库**:在项目中引入Struts相关的jar包,这些库包含了Struts框架运行所需的所有组件。 2. **创建配置文件**:在`WEB-INF`目录下创建`struts-config.xml`,这是一个基于DTD...

    Struts2.5.2的配置及问题解决

    配置struts.xml文件是另一个关键步骤。在这个文件中,你需要定义Action、结果类型和其他相关设置。配置文件中的版本号(如`struts-2.5.2`)应与实际使用的Struts版本保持一致,以确保正确解析和执行。 在配置过程中...

    struts2初始使用环境配置

    以下将详细介绍Struts2的初始使用环境配置步骤。 首先,确保你已经安装了Java Development Kit (JDK)。JDK是开发Java应用的基础,你需要至少JDK 1.6或以上版本来支持Struts2。下载并安装JDK后,设置好系统环境变量`...

    struts各种配置

    ### Struts 各种配置详解 #### 一、概述 Struts 是一款开源的MVC框架,用于构建可扩展的企业级Java Web应用。它通过提供一套标准的开发模式和组件来简化开发流程,并且能够很好地与其他Java技术进行整合。本文将...

    struts环境配置手记

    #### 一、Struts在Eclipse中的配置步骤 **1. Eclipse的准备** - **下载地址**: [Eclipse官方网站](http://www.eclipse.org/) - Eclipse是Java开发中广泛使用的集成开发环境(IDE),提供强大的代码编辑、调试功能...

    SSH框架配置步骤图解(Struts2.1.6 Spring2.5.6 Hibernate3.3.1 2

    SSH 框架配置步骤图解(Struts2.1.6 Spring2.5.6 Hibernate3.3.1) SSH 框架是一种常用的 Java Web 应用程序框架,它由 Struts、Spring 和 Hibernate 三个框架组成。今天,我们将详细介绍如何配置 SSH 框架,包括...

    eclipse 配置struts2

    **标题:“Eclipse配置Struts2”** 在Java Web开发中,Struts2是一个非常流行的MVC(模型-...文件列表中的“eclipse配置struts.docx”可能包含了更详细的配置步骤或注意事项,如果需要更详尽的信息,建议查阅该文档。

    S2S3H3(Struts2.3.4+Spring3.0+Hibernate3.3)配置步骤

    以下是S2S3H3(Struts2.3.4+Spring3.0+Hibernate3.3)的详细配置步骤。 1. **环境准备** - IDE:MyEclipse8.5 - JDK:1.7 - 应用服务器:Tomcat6.0 - 框架版本:Struts2.3.4,Spring3.0,Hibernate3.3 - ...

Global site tag (gtag.js) - Google Analytics