站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Struts 专题struts简单例子的分析

struts简单例子的分析

摘要: struts简单例子的分析 struts简单例子的分析 转:www.code365.com <!-- 以下仅为个人经验,供大家参考。不足或谬误之处请大家指教 --> <!-- ...
struts简单例子的分析



↑返回目录
前一篇: 在struts中分页的一种实现
后一篇: Struts标记库

struts简单例子的分析

转:www.code365.com
<!-- 以下仅为个人经验,供大家参考。不足或谬误之处请大家指教 -->
<!-- 徐建明 -->

首先你要对你的环境进行配置

配置TomCat环境
1、到我的机器(IP为192.1.168.7,用户为Guest,口令没有)上的"共享"目录中,拷贝j2sdk-1_4_2_02-windows-i586-p.exe、jakarta-tomcat-5.0.14.zip、jakarta-struts-1.1.zip三个压包文件。
2、先双击j2sdk-1_4_2_02-windows-i586-p.exe安装jdk,最好安装到一个根目录下。在此假设安装在D:\j2sdk1.4.2_02下。
3、安装TOMCAT。TOMCAT不用安装,只用直接解压jakarta-tomcat-5.0.14.zip到硬盘上。假设解压到D:\TOMCAT下。
4、配置环境变量。右键点击"我的电脑"图标,选择"高级"子项,点击"环境变量"按扭。在"系统变量"中新建如下几个环境变量:
名称 键值 说明
JAVA_HOME D:\j2sdk1.4.2_02 就是你的JDK的安装目录
CLASSPATH .;%JAVA_HOME%\LIB
5、解压jakarta-struts-1.1.zip到任一目录,将其中\jakarta-struts-1.1\webapp目录下的struts-example.war文件拷贝到TOMCAT下的\tomcat\webapps中
6、进入\tomcat\bin目录,点击startup.bat以启动TomCat。(TomCat启动后点击shutdown.bat可关闭)
7、让TomCat在后台运行,打开ie,在地址栏中输入http://localhost:8080/可进入TomCat的主页,输入http://localhost:8080/struts-example可进入struts的一个例子。

祝大家安装顺利 :)

然后,我们来看一下STRUTS例子中的最重要的两个文件,这两个都是配置文件,

struts-config.xml(具体配置的情况我作了注释)

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";>

<!--
This is the Struts configuration file for the example application,
using the proposed new syntax.
-->


<struts-config>

<!-- ========== Form Bean Definitions =================================== -->
<!-- FormBean是struts的一个概念,本质是JavaBean,用来自动存储页面表单中各个域的值,并在适当的时候回填表单域,不需要象传统那样request.getParameter("fieldName");,常被action-mappings中的action 使用 -->
<form-beans>
<!-- 稍后我们会新增一个GetparameterForm类,用来存储用户信息 -->
<form-bean name="GetParameterForm" type="beans.GetParameterForm"/>
</form-beans>

<!-- ========== Global Forward Definitions ============================== -->
<!--这里存放整个系统都可以使用的全局转向中转(Forward)地址 -->
<!-- 一般情况下,一个Action处理完毕后,会转发到一个JSP页面进行显示。这也是JSP中的MVC的实现的要点。-->
<global-forwards>
<!--failed.do和success.do将被当成servlet请求,到action-mappings中寻找对应的action处理。-->
<forward name="success" path="/success.do"/>
<forward name="fail" path="/fail.do"/>
</global-forwards>

<!-- ========== Action Mapping Definitions ============================== -->
<!--web.xml中后缀为.do的请求被转到这里处理。这里相当于struts的Model部分,Model部分是struts中比较灵活的地方。-->
<action-mappings>
<!--处理showinput.do的请求,使用的FormBean是GetparameterForm,既beans.GetParameterForm类,当处理过程发生错误时将返回index.jsp-->
<action path="/showinput" type="beans.ShowAction" name="GetParameterForm" scope="request" input="/index.jsp" />
<action path="/success" forward="/success.jsp"/>
<action path="/fail" forward="/error.jsp" />
</action-mappings>

</struts-config>

web.xml(具体配置的情况我作了注释)

<!-- Action Servlet Mapping -->
<!--该系统的servlet可以映射成.do为后缀的文件,后缀名可以改成任何名称.-->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- The Welcome File List -->
<!--该系统的默认首页是index.jsp,可以有多个,系统按次序找,类似IIS--> 
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- Application Tag Library Descriptor -->
<!-- 定义标签库 -->
<!--
<taglib>
<taglib-uri>/WEB-INF/app.tld</taglib-uri>
<taglib-location>/WEB-INF/app.tld</taglib-location>
</taglib>
-->

</web-app>

这两个文件是我们用JDK+TOMCAT+STRUTS的基本配置,注意:在更改了这个配置后需要对TOMCAT进行重新启动!

在\你的目录\中存放你的.JSP文件,他们的编写你可以使用HTML或FRONGPAGE等工具编写,对于大家这个是比较简单的,在此我就不再觜书,代码如下:

INDEX.JSP

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*,java.sql.*,java.text.*,java.io.*"%>

<form name="form1" method="post" action="showinput.do">
输入success将返回到"success"页面,否则返回到"fail"页面<br><br>
input:<input type="text" name="valu">  <input type="submit" value="submit">
</form>
<br>
<a href="success.do">success</a><br>
<a href="fail.do">fail</a>

SUCCESS.JSP

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*,java.sql.*,java.text.*,java.io.*"%>

success!

ERROR.JSP

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*,java.sql.*,java.text.*,java.io.*"%>

error page!

再在\你的文件夹\WEB-INF\classes\beans中我们编写需要处理消息请求的类。具体代码如下:

GetParameterForm.java

package beans;
import org.apache.struts.action.ActionForm;
public class GetParameterForm extends ActionForm
{
private String valu="null";

public GetParameterForm() {
}

public void setValu(String s) {
valu = s;

public String getValu() {
return valu;

}

ShowAction.java

package beans;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;
import org.apache.struts.util.*;

public final class ShowAction extends Action

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Locale locale = getLocale(request); 
MessageResources messages = getResources(request); 
HttpSession session = request.getSession(); 
GetParameterForm userform = (GetParameterForm) form;
if(userform.getValu().equals("success")) {
return(mapping.findForward("success"));
}
else {
System.out.println(userform.getValu());
return(mapping.findForward("fail"));
}
}
}


最后你可以运行了。

在TOMCAT中地址中填写http://localhost:8080/你的文件夹/ 

 
 

--------------------------------------------------------------------------------
MY HOTLE CALIFORNIA: 加 洲 旅 馆 
 
 
runner

初级用户
发帖: 29
积分: 49
来自: 
状态: offline
注册: 2004-10-14 
 发表于: 2004-11-7 11:42:00                    2楼 
 
 

Re:struts简单例子的分析

二、Struts安装

  1、安装Struts需要的软件 

  Java Development Kit-- 我们需要download和install 1.2(或之后)版本的JDK。

   下载地址:

   http://java.sun.com/j2se

  Servlet Container -- 通常的选择是下载Tomcat(至少是3.1版,推荐使用4.0以上的版本)。

   下载地址:

   http://jakarta.apache.org/tomcat

  Ant Build System -- 如果我们通过Struts源码发布包安装,我们必须下载1.1或之后版本的ant build system。在我们通过Struts来开发我们自己的Web应用程序是,推荐使用ant来build我们的应用。

   下载地址:

   http://jakarta.apache.org/ant

  Servlet API Classes -- 为了编译Structs自己,或应用程序使用Struts,我们需要一个包含Servlet和JSP API对象的servlet.jar包。大多数Servlet container(例如Tomcat)已经自带了这个文件。否则,我们必需下载:http://jakarta.apache.org/builds/jakarta-servletapi

  XML Parser -- Structs需要一个与Java API for XML Parsing(JAXP)规格兼容的XML处理器,我们可以使用Xerces。

   下载地址: 

   http://xml.apache.org/xerces-j

  Xalan XSLT Processor -- 如果我们通过Structs源码发布版来构造我们的Structs系统,我们必须下载和安装1_2_D01或之后版本的Xalan XSLT处理器(Xerces中已自带Xalan)。这个处理器用于将基于XML的Structs文档转换为Html文档。

  2、通过源码构造Structs 

  1)下载Structs的源码发布包。

  2)设置ANT_HOME环境变量,指向我们的Ant目录。

  3)设置JAVA_HOME环境变量,指向我们的JDK目录。

  4)设置SERVLETAPI_HOME环境变量,指向我们的Servlet API目录(如果我们的CLASSPATH已经包含了servlet.jar,就不需要指定该目录)

  5)将Structs的源码发布包进行解包。

  6)进入Structs目录,运行以下命令:

  ./build.sh dist

  该命令将创建Struts的二进制发布包,目录在../dist/structs(相对于我们的编译目录)。

  3、通过Struts的二进制发布包安装Structs 

  1)下载Struts的二进制发布版。

  2)将Struts的二进制发布版进行解包。(如果我们是通过Struts源码构造Struts,build的结果就已经是已解包的Struts)。解包后的Struts包含以下内容:

  lib/struts.jar -- 这个文件包含了Struts的所有Java对象。我们需要把它拷贝到我们的Web应用的WEB-INF/lib目录。

  lib/structs.tld --这是一个"tag library descriptor"文件,它描述了Struts库的自由tag。需要将它拷贝到我们的Web应用的WEB-INF目录。

  webapps/struts-documentation.war -- 这是一个"web application archive"文件,包含了所有的Struts文档。我们可以将它安装到支持Servlet API 2.2或之后版本的servlet container(推荐使用tomcat)中。

  webapps/struts-example.war -- 这是一个web应用实例,它广泛地演示了Struts的许多功能。我们可以将它安装到兼容Servlet2.2或之后版本以及JSP1.1或之后版本规范的servlet容器中(推荐使用tomcat)。
webapps/struts-test.war -- 这个web应用包含了Struts支持的许多tag的测试网页,可以作为使用Struts tag的例子。

  4、Struts的基本组件包

  安装好的struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括
action,actions,config,util,taglib,validator。如下表1所示:

org.apache.struts.action 
 基本上,控制整个struts framework的运行的核心类、组件都在这个包中,比如我们上面提到的控制器ActionServlet。已经Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 类。增加了动态扩展生成FormBean功能 
org.apache.struts.actions 
 这个包是主要作用是提供客户的http请求和业务逻辑处理之间的特定适配器转换功能,而1.0版本中的部分动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm组件所取代 
org.apache.struts.config 
 提供对配置文件struts-config.xml元素的映射。这也是sturts1.1中新增的功能 
org.apache.struts.util 
 Strtuts为了更好支持web application的应用,体统了一个些常用服务的支持,比如Connection Pool和Message Source。详细信息请参考http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html 
org.apache.struts.taglib 
 这不是一个包,而是是一个客户标签类的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个用于构建用户界面的标签类。 
org.apache.struts.validator 
 Struts1.1 framework中增加了validator framework,用于动态的配置from表单的验证。详细信息请参阅 http://home.earthlink.net/~dwinterfeldt/ 

三、Struts 配置与组件介绍

  有关struts组件配置struts-config.xml文件说明在前面的文章中已经介绍过,这里就不再说了,下面主要介绍框架中组件与配置。

  下表列出了Struts的核心类,即对应的经典的MVC组件职责。

  表格2 核心Struts 类和MVC 的对应

类 描述 
ActionForward 用户指向或者视图选择 
ActionForm 状态改变的数据 
ActionMapping 状态改变事件 
ActionServlet 控制器,接受用户请求和状态改变,以及发出视图选择 
Action 控制器的一部分,于模型交互,执行状态改变或状态查询,以及告诉ActionServlet 下一个选择的视图 

  除了这些核心类, Struts 使用一些配置文件和视图助手(view helpers)来沟通控制器和模型。下表列出了Struts 配置文件和描述了他们在架构中的角色。

  表格3 Strtuts 配置文件

文件 目的 
ApplicationResources.properties 存储本地化信息和标签,以使应用可以国际化 
struts-config.xml 存储控制器对象的缺省配置,包括模型支持的用户指向,状态改变,状态查询 

  为将Struts配置数据暴露给视图,框架以JSP标签的形式提供了大量的助手类,如表4 Strtus 视图助手。


标记库描述符 目的 
struts-html.tld 扩展HTML Form的JSP标记 
struts-bean.tld 扩展处理JavaBean的JSP标记 
struts-logic.tld 扩展测试属性值的JSP标记 

  控制器组件的配置

  框架中的控制器组件是有org.apache.struts.action.ActionServlet类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。

  ActionServlet配置:

  我们需要在web.xml中声明ActionServlet,并且将它配置成启动时进行加载。以下为可以配置的初始化参数:

参数 默认值 描述 
application Null 应用程序的资源集合的类 
bufferSize 4096 文件上传的缓冲区大小 
config /WEB-INF/struts-config.xml 配置文件的位置和名称 
content Text/html 默认的内容类型 
debug 0 程序调试的级别 
detail 0 程序调试细节的级别 
factory Null 消息资源工厂,糜诠?驶?薪馐拖?⒆试?/TD> 
formBean org.apache.struts.action.ActionFormBean 封装ActionForm bean信息的类的名称 
forward Org.apache.struts.action.ActionForward 封装ActionForward对象信息的类的名称 
locale True 为true,将在用户会话中存储一个本地对象 
mapping Org.apache.struts.action.ActionForward 封装ActionMapping信息的类的名称 
maxFileSize 250M 上传文件的最大尺寸 
multipartClass Org.apache.struts.action.ActionForward 处理多部分请求的类的名称 
noCache False HTTP标头是否要设置为禁止缓寸 
Null True 设置为true,对于无效的信息关键字将返回null 
tempDir 作为一个servlet参数提供给程序的工作目录 处理下载文件是使用的临时工作目录 
validate True 是否使用新格式的配置文件 
vallidating True 是否对配置文件进行有效性分析 

  大多数情况下,标准的servlet就能够满足用户需要。

  第一次收到特定请求的URI时,ActionServlet将适当的Action类进行实例化,然后ActionServlet在Action类实例中以servlet为变量名存储一个引用。当被实例化后,Action类会被暂存以备再用。

  错误处理

  struts提供了两个类来处理错误:ActionErrors和ActionError,它们都扩展org.apache.struts.action。ActionErrors保存着ActionError对象的集合,其中每一个代表了独立的错误信息。每个ActionError都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在ActionServlet初始化参数中指定的。

四、Struts的运行

  可通过以下的步骤在我们自己的应用程序中使用Struts:

  1、将Struts目录的lib/struts.jar拷贝到web应用的WEB-INF/lib目录。

  2、将Struts目录的lib/struts*.tld拷贝到web应用的WEB-INF目录。

  3、修改Web应用目录的WEB-INF/web.xml文件,增加一个<servlet>元素来定义controller servlet,增加一个<servlet-mapping>元素来建立URI请求与servlet的对应关系。可以参照Struts例子中的WEB-INF/web.xml文件来了解详细的语法要求。

  4、修改Web应用目录的WEB-INF/web.xml文件,使之包含以下的tag库定义:

<taglib>
<taglib-uri>/WEB-INF/struts.tld</taglib-uri>
<taglib-location>/WEB-INF/struts.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib> 

  5、创建一个WEB-INF/action.xml文件来定义我们的web应用的action映射关系。可以参照Struts例子中的action.xml文件来了解详细的语法要求。

  6、在使用Struts tag库的JSP网页中加入以下tag库定义:

<@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>
<@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> 

  7、最后,在编译我们的web应用的java程序时,不要忘了在CLASSPATH中包含struts.jar文件。