struts使用经验

news/2024/7/10 4:30:19 标签: struts, action, jsp, servlet, servlets, path

 

本文将利用Struts 1.0为大家演示建立一个简单的应用;我们在这篇文章将会一步一步的讲解Struts的应用,以这样的形式打开Struts一道道神秘的大门,通过这样的过程,相信也能激起你在应用开发中如何应用Struts的灵感。假如你对Struts的一些术语不是很清楚的话,可以参考本系列前一篇对Struts作大体介绍的文章。
  
  再次重复一遍,本文需要读者有如下几方面的知识和经验:JSP,Servlets,自定义标签库(Custom Tag libraries)和XML。此外,在本文中,我还会用到Jakarta项目组其他一些好东东,比如Tomcathttp://jakarta.apache.org/tomcat/index.Html(实现Java Servlet和JSP官方标准的Servlet容器,通俗的讲就是一个JSP的Web Server啦)和Anthttp://jakarta.apache.org/ant/index.html(基于Java的自动编译发布工具,这可是好东东啊)。
  
  作为一名一直使用前沿技术开发了诸多应用的技术人员,我一直坚信把握新技术,理解该技术开发的逻辑是至关重要的。但这往往就是陷住我们学习步伐的泥潭,正因如此,我打算将利用Struts开发的一套完整流程作为我们教学的案例。该流程的这个案例可谓“麻雀虽小、五脏据全”,你完全可以将这个流程应用到你手头那些复杂庞大的项目中,至少在我们的大项目中应用这个流程效果不错。
  
  有开发复杂商业应用的开发人员都知道,客户的需求总是在不停变幻,所以假如有一套规范的开发流程来遵循,当客户提出新的需求时,我们至少可以明确哪些“无理”需求其实是合理可行的。好,接下里我将在我的这个例子中向各位展示和应用整个流程。
  
  本文中的示例代码是StrutsSample应用中的一部分,包括build.xml的完整代码可以到此处
http://www.onjava.com/onjava/2001/10/31/examples/StrutsPartII.jar下载。
  
  Struts开发过程
  从Struts发布的版本号可以看出,Struts是个新玩意,她有好几个部分组成,明智的你假如搞清楚了何时该开发完成合适的部分,那将会更好的利用我们的开发时间。从我所开发的几个利用Struts应用中,我大致总结出如下这个比较有效的开发步骤:
  
  1,明确应用需求;
  
  2,由用户输入和获取数据的角度出发,明确和设计出每一个用户界面;
  
  3,确定用户界面的进入路径;
  
  4,由应用逻辑信息确定动作映射表(ActionMapping);
  
  5,由设计完成的用户界面开发其所用到的类和应用函数;
  
  6,由用户界面中的数据信息开发ActionForm和相应的数据校验方法;
  
  7,ActionMapping中将会被调用相应的Action或转到相应的JSP页面,这一步我们先开发这些Action;
  
  8,开发商业应用逻辑,就是相应的JavaBean、EJB或其他东东;
  
  9,开发由ActionMapping定义的系统工作流程完成对应的JSP页面;
  
  10,完成系统配置文件:struts-config.xml和web.xml;
  
  11,编译/测试/发布。
  
  明确应用需求
  开发任何应用系统的第一步就是收集用户需求信息。不管一个用户逻辑初看上去多么合理,但总有可能在开发时才发现它比看上去要难得多。所以,建议拟一份明确的用户需求列表,这不只是出于开发的目的,还能通过该表分析用户需求以确定哪些地方可能需要花更多的精力。
  
  在我们这个StrutsSample项目中,应用需求就是:
  
  作为一个展示Struts框架应用的完整例子,本示例完成的功能是用户登录。目的只为明确Struts的应用,本示例将不会涉及到一般复杂应用系统中可能应用的安全、数据库、EJB开发等等相关技术。
  
  设计用户界面
  这个应用中,包括如下三个用户界面:
  
  1)登录界面,用于用户名和密码输入;
  
  2)当登录用户为合法用户时的欢迎界面;
  
  3)当登录失败时的错误提示界面。
  
  确定用户界面的进入路径
  1)登录界面作为这个应用的默认页面;
  
  2)欢迎界面只有当成功登录后才能进入;
  
  3)任何可能发生错误的页面能可以进入错误提示界面;
  
  由应用逻辑信息确定ActionMapping ActionMap昀三篇学??? ?本文是三篇学习Struts框架系列文章的第二篇。在本系列的的第一篇中,我们大致浏览了Struts框架,框架的功能以及框架中应用到的各个模块。而本文,我将利用Struts 1.0为大家演示建立一个简单的应用;在第三篇文章中将介绍如何利用Struts的标签在JSP中访问ApplicationResource文件中的信息。 我们在这篇文章将会一步一步的讲解Struts的应用,以这样的形式打开Struts一道道神秘的大门,通过这样的过程,相信也能激起你在应用开发中如何应用Struts的灵感。假如你对Struts的一些术语不是很清楚的话,可以参考本系列前一篇对Struts作大体介绍的文章。
  
  再次重复一遍,本文需要读者有如下几方面的知识和经验:JSP,Servlets,自定义标签库(Custom Tag libraries)和XML。此外,在本文中,我还会用到Jakarta项目组其他一些好东东,比如Tomcathttp://jakarta.apache.org/tomcat/index.html(实现Java Servlet和JSP官方标准的Servlet容ping为整个应用确定的“线路图”,在配置文件struts-config.xml对ActionMapping进行定义,通过转发请求(forward)来理顺应用的处理流程,确定应用中每个用户请求对应的动作。 通常我们在开发过程中就逐步确定了ActionMapping所需的信息,开发代码的过程就是在由草稿开始一步步完善struts-config.xml的过程。当Action类处理完用户请求后,其返回的的forward就是在ActionMapping中定义的一个。一个Action返回的forward完全有多种可能,尽管一个Action一般只定义其相关的几个forward。那么,假如有多个Action都可能返回的同一个forward,那么就可以将其定义为全局转发(global forward)。这类似于C中的头文件中全局变量,假如在struts-config.xml描述信息中,某一个forward并不是在当前Action描述中定义的而是全局定义的,那么这个全局的将起作用,同样,一个Action中当前定义的forward将覆盖全局定义。在我们所给的这个简单实例中,我们定义了全局forward――“error”,当某Action返回的forward是“error”这个映射,那么Errorpage.jsp页面将会显示给用户,尽管当前Action并没有对其定义。 我们继续不断的开发,项目日渐完善,项目相关的配置文件也会越来越具体。在下面的例子中,我们将以StrutsSample中用到的struts-confug.xml文件为例,学习global forward和一个Action中相关映射的定义。下面定义了一个名为“login”的Action,其为com.oreilly.actions.LoginAction的实例,当Action处理用户登录成功后将一个名为"sUCcess"的forward返回,用户也就会看到Welcome.jsp页面,假如登录失败,Action将返回对应的forward以再显示Login.jsp给用户,而假如处理过程中发生其他错误,Action将返回全局定义的forward――“error”,用户也就会看到错误提示页面Errorpage.jsp
  
  <!-- ========== Global Forward 定义 -->
  <global-forwards>
  <forward name="login" path="/Login.jsp"/>
  <forward name="error" path="/Errorpage.jsp"/>
  </global-forwards>
  
  <!-- ========== Action Mapping 定义 -->
  <action-mappings>
  <!-- <action>元素的相关属性 -->
  <!--
  
  以下只列出常用属性,其他请参考org.apache.struts.action.ActionMapping的相关文档
  
  path - 当前Action对应的用户请求URI路径
  
  type - 实现当前Action的Java class的完整名字
  
  name - 当前Action中用到的ActionForm的名字,其具体信息在配置文件其他地方另有具体定义
  
  unknown - 假如将该属性设置为true,那么就是声明这个Action将处理整个应用中所有未找到相应处理Action的请求,当然,一个应用系统中也只会有一个Action的unknown属性可以设为true
  
  scope - Action中所用到的ActionForm的生存期,可以为“request”或“session”,随着生存期的设置,该Action也会在相应的时间被创建
  
  input - 该Action中相关ActionForm获取用户输入的输入页面,当将ActionForm设为自动验证输入数据,发现不合法数据返回错误时,将返回该页面
  
  validate - 假如本属性为true则在Action动作之前其对应的ActionForm的validate方法会自动被调用,一般用以验证用户输入的数据
  
  forward 元素 - 定义当前Action相关的ActionForward
  
  -->
  <!-- =================== -->
  <!-- O'Reilly Struts Sample Main Actions -->
  <!-- =================== -->
  <action path="/login"
  type="com.oreilly.actions.LoginAction"
  name="loginForm"
  scope="request"
  input="/Login.jsp">
  <forw昀三篇学??? ?ard name="success" path="/Welcome.jsp"/>
  <forward name="failure" path="/Login.jsp"/>
  </action>
  </action-mappings>
  
  struts-config.xml就是MVC模式的的Controller。在确定struts-config.xml中的配置信息时,应该多花些时间精力在上面。

 

应用:

http://hi.baidu.com/%BF%D7%B7%B1%E1%AA/blog/item/a1577afb2acd71254e4aeaf4.html


http://www.niftyadmin.cn/n/1052619.html

相关文章

分享.NET 3.0的书籍下载(持续更新中)

.NET 3.0 Release 也有一段时间了&#xff0c;不过相关的学习资料还是比较少。在长期关注.NET 3.0的过程中&#xff0c;收集了一些技术书籍&#xff0c;都是英文的电子书&#xff0c;打包分享给大家。基本上比较全了&#xff0c;有一些虽然在Amazon上可以看到已Published&#…

log4j之小试牛刀

自己建了一个maven项目&#xff0c;用来测试log4j.xml的不同级别限定&#xff0c;还有自定义的appender,可以将日子中的流量写入数据库&#xff0c;缓存等。

Struts应用经验(之一)

1. 使用应用模块&#xff08;Application Modules&#xff09;    Struts 1.1的一个新特性是应用模块的概念。应用模块答应将单个Struts应用划分成几个模块&#xff0c;每个模块有自己的Struts配置文件&#xff0c;jsp页面&#xff0c;Action等等。这个新特性是为了解决大中…

6个强大的JavaScript日期操作插件(翻译)

我们必须承认&#xff0c;JavaScript内建的Date方法实在是太基础了&#xff0c;远不够我们来处理日期。总有人会开发自己的JavaScript日期操作库&#xff0c;为何在能够使用已经开发并测试好的日期插件时还要再自己造个轮子呢。我已经碰到过很多次需要操作日期格式的情形&#…

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集 编写程序求每日最高最低气温&#xff0c;区间最高最低气温 气象数据集下载地址为&#xff1a;ftp://ftp.ncdc.noaa.gov/pub/data/noaa按学号后三位下载不同年份月份的数据&#xff08;例如201506110136号同学&#xff0c;就下载2013年以6开头的数据…

Windows Azure Cloud Service (20) 使用Internal Endpoint实现Role的内部通信

《Windows Azure Platform 系列文章目录》 相对于Input Endpoint而言&#xff0c;Windows Azure还提供了Internal Endpoint的概念。如果说Input Endpoint就是Windows Azure负载均衡服务器的一个映射配置&#xff0c;使得Role Instance的内部地址可以被映射到Hosted Service URL…

tomcat服务器优化

一、概述本文档主要介绍了Tomcat的性能调优的原理和方法。可作为公司技术人员为客户Tomcat系统调优的技术指南&#xff0c;也可以提供给客户的技术人员作为他们性能调优的指导手册。二、调优分类由于Tomcat的运行依赖于JVM&#xff0c;从虚拟机的角度我们把Tomcat的调整分为外部…

QT4最简单的应用程序

开发环境 主机&#xff1a;Windows 7 下 VMware 7 建立虚拟机&#xff0c;划分1G内存&#xff0c;安装 Fedora 13 KDE Desktop 客户机&#xff1a;Windows 7 putty 连接 安装软件 sudo yum install openssh gcc gcc-c qt-devel sudo system-config-firewall sudo service sshd…