手动配置及开发Struts

 
Struts tutorial
这是 struts架构的指导。它包括一些step by step的小应用程序,可以让你短时间内用struts工作。
内容:
  01.    介绍
  02.    Struts的安装
  03.    第一个实验:简单的JSP页
  04.    第二个实验:struts的国际化
  05.    struts中的Forms
  06.    struts:介绍ActionForm
  07.    分离Book和BookForm的一个好方法
  08.    处理Invalid Entries
  09.    Recapitualation: Where we are
  10.    使用logic
  11.    Templates
  12.    FAQ
  13.    Beans to XML
  14.    Replacing JSP with XSLT
  15.    介绍AspectJ
  16.    用Ant Compilation和Distribution
     16.01.    安装Ant
     16.02.    什么是Ant
     16.03.    配置Ant
     16.04.    Ant的使用
  17.    结论
  18.    关于这个文档的技术背景
  19.    关于作者
  20.    用户注解
     20.01.    邮件
     20.02.    回执卡

Appendix:
 - Sources
 - Tables
 
01.    介绍
 在这个指导中我们将step by step开发一个小的应用程序。你应该有一些JSP和XML的经验,并且有一个可以运行的应用服务器,我们选择tomcat4.0.4。
02.    Struts的安装
 请先将Struts.jar拷贝到你应用程序的lib目录中,不用删除你的struts目录中的其他文件。结果如图1所示。
手动配置及开发Struts
03.    第一个实验:简单的JSP
 现在我们要做一个简单的JSP页,用来确认至此我们的操作是正确的。
 在strutsShop里建一个BookView.jsp的文件。内容如下,按图2所示在浏览器中运行:
手动配置及开发Struts
04.          第二个实验:struts的国际化
 我们将使用户能用本国的语言浏览预定义的文本,进而接触一些struts的功能。首先你要按照图3拷贝一些文件到WEB-INF目录下。在struts-html.tld文件里有我们要用的标签。这些我们在上接已经介绍了,你可以简短的回顾一下。
手动配置及开发Struts
struts-config.xml的配置清单如下,这是一个标准的清单,你以后的程序都可以以此为基础进行扩展:
手动配置及开发Struts
web.xml的配置清单如下,这是一个标准的清单,你以后的程序都可以以此为基础进行扩展:
手动配置及开发Struts手动配置及开发Struts手动配置及开发Struts手动配置及开发Struts
 
 
classes目录下创建一个ApplicationResources.properties的文件(此文件名在web.xml中定义),打开它,输入一行:index.title=Struts Tutorial。然后在创建一个ApplicationResources_de.properties文件,也输入一行:index.title=Struts Einführung。其实这两个文件就是当加载时会根据当前的浏览器而选择英文或德文,这里我们只能了解国际化过程来测试前者了。我们还需编写BookView.jsp文件,如下:
手动配置及开发Struts
可在浏览器中按图4浏览,你可能需要重启你的tomcat
手动配置及开发Struts
 
 其实我们可以将国际化写在一个文件中,就是将参数写在一个属性文件中。(这是作者的意图,但我没有各种版本的IE进行实验)
 
05.          struts中的Forms
 在这一章我们将创建一个简单的Bean(Book.java)和两个JSP页面,一个是创建新书的,另一个是显示它的,我们也会第一次使用struts-config.xml文件。
 我们先在你的classes目录下创建如下Book.java文件。
手动配置及开发Struts手动配置及开发Struts手动配置及开发Struts
 我们还需要创建新书的JSP页。我们将使用title,auther和number of pages三个字段,在此之前我们先要做一些工作,对于一个初学者这将有些难度。在你的BookView中加上以下内容:
手动配置及开发Struts
再次运行,你将得到图5所示内容,如果没有错,那你需要重启tomcat;如果错误不一样,没关系,因为他都是没有在配置文件中找到mapping路径。
手动配置及开发Struts
接下来我们需要第二个JSP页面CreateBook.jsp,代码如下:
手动配置及开发Struts
classes目录下创建一个BookAction文件:
手动配置及开发Struts手动配置及开发Struts
它没按照struts要求编写仅仅创建一本书并给它标题。然后编写你的struts-config.xml:
手动配置及开发Struts
 我们希望在struts中在bookForm和Book间建立连接。而且我们还用bookCreated定义了一个到BookView.jsp的转发。最后我们用action=createBook.do属性定义了我们的form做什么。关于do:与接受CreateBook.jsp输入信息的bookForm相关的bean,由createBook命令创建。
    按图6编译你的类。由于我是初手,在这里遇见很多问题,所以耽误了很久,不过它让你学到很多东东。比如:javax.servlet要用到servlet.jar包;javac后跟a.java, 而java后跟a;还有我遇见了很原文提到的问题,很多都是由于自己编写(没有copy)而造成的马虎。希望大家也能引起注意,到此除了ActionForm我们都已用到了。
手动配置及开发Struts
 编译成功后,在你的classes目录下会增加两个文件:Book.class和BookAction.class.
 重启你的tomcat(每次改动config文件你都需要重启,改动注册表需要重启机器)。现在在你的浏览器里登陆CreateBook.jsp,如图7:
手动配置及开发Struts
 当你填写后提交,另你失望的是什么也没有得到。这是由于我们并没有ActionForm bean.
06.       struts:介绍ActionForm
 这节我们继续做ActionForm bean来完成我们的例子。我们将用ActionForm得到合法的book的信息,并进行一些检验,例如没有输入标题等,向用户提供错误或成功的信息。我们还将得到book的属性并且能够更改它。
 为此我们需要一个ActionForm:它仅是一个简单的容器,没有应用程序逻辑,只有两个方法:reset(),validate().在struts1.1里,validate()方法被单独作为一个validate.xml文件。详见参考资料二。
 现在我们做另一个类:BookForm.java。它将包含book的实例,并且有一些getXXX和setXXX的方法来访问它。关于内部的方法可看struts架构介绍。
手动配置及开发Struts手动配置及开发Struts
 我们还要做一些额外的工作。去看struts-config.xml文件,我们需要用这个新类与Form关联,从而替代Book.java。因此我们必须改变form-beans: <form-bean name="bookForm" type="BookForm"/>.
 另外我们还有定义一下当错误发生时的信息,在你的配置文件中输入:error.book.title=Error
 现在编译你的类,重新启动tomcat,重新登陆CreateBook.jsp.,输入onebook,你将在tomcat的dos窗口看见如下图所示:
 你也可以在重输入其他的title,看看tomcat的dos窗口有什么变化。
手动配置及开发Struts
 07.    分离Book和BookForm的一个好方法
 上一节我们使用一个新类BookForm.java去访问Book.java,而不用struts直接连接到Book.java。接下来,我们要解决在这两个类中重复输入getXXX和setXXX。Struts允许我们直接访问实例的方法。这很容易,但需要理解。我们给出改变的CreateBook.jsp的代码:
手动配置及开发Struts
 正如你看到的,除了将title改为book.title,我们什么也没做。现在你可以去掉BookForm.java中的getXXX和setXXX方法了,如下图:(别忘记了也更改BookView.jsp,否则在你的tomcat窗口下After creation of book : null)
手动配置及开发Struts
手动配置及开发Struts
 你还应该改动BookAction.java,把String title = req.getParameter("title");中的title改为book.title,然后重新编译,这样你的tomcat下的After creation of book :none中的none就会出现你输入的名了。
08.    处理Invalid Entries
 我们将了解struts怎样处理用户无效的输入,产生的错误信息支持不同语言。
 
  
 
参考资料
1. http://rzserv2.fhnon.de/~lg002556/struts/Doku.html
2. http://www.javaren.com/bbs/cgi-bin/topic.cgi?forum=36&topic=4&show=#lastviewpost