上一篇Struts入门经验,我们主要讲述了如何安装Struts以及注册页面:reguser.jsp,本文将主要介绍Struts应用实例、优缺点和实施经验。

Struts-config.xml:

<Struts-config>
<form-beans>
<form-bean      name="regUserForm"
type="org.cjea.Struts.example. RegUserForm "/>
</form-beans>
<action-mappings>
<action  path="/regUserAction"type=" org.cjea.Struts.example.RegUserAction "attribute=" regUserForm "scope="request"validate="false"><forward name="failure"   path="/ messageFailure.jsp"/><forward name="success"  path="/ messageSuccess.jsp"/>
</action>
</action-mappings>
</Struts-config>

Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。

FormBean:RegUserForm

package org.cjea.Struts.example;import javax.Servlet.http.HttpServletRequest;
import org.apache.Struts.action.ActionForm;
import org.apache.Struts.action.ActionMapping;public final class RegUserForm extends ActionForm{private String logname;private String password;private String email;public RegUserForm(){logname = null;password = null;email = null;}public String getLogName() {return this.logname;}public void setLogName(String logname) {this.logname = logname;}public void setPassWord(String password) {this.password = password;}public String getPassWord() {return this.password;}public void setEmail(String email) {this.email = email;}public String getEmail() {return this.email;}public void reset(ActionMapping mapping, HttpServletRequest request){logname = null;password = null;email = null;}
}

每一个FormBean 都必须继承ActionForm类,FormBean是对页面请求的封装。即把HTTP request 封装在一个对象中,需要说明的一点就是多个HTTP request可以共用一个FormBean,便于维护和重用。

ActionBean:RegUserActionpackage org.cjea.Struts.example;import javax.Servlet.http.*;
import org.apache.Struts.action.*;public final class RegUserAction extends Action
{public ActionForward perform(ActionMapping mapping,ActionForm form,  HttpServletRequest req,HttpServletResponse res){  String title = req.getParameter("title");String password = req.getParameter("password");String email = req.getParameter("email");/*取得用户请求,做相应数据库操作,略*/  }
}

FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要求。

Servlet的演变:在常规的 JSP,Servlet,JavaBean三层结构中,JSP实现View的功能,Servlet实现Controller的功能,JavaBean实现Model的实现。

在Struts中,将常规情况下的Servlet拆分与ActionServlet、FormBean、ActionBean三个部分。ActionServlet配合Struts-config.xml,专职完成页面导航,而不再负责具体的数据获取与相应逻辑,这两部分功能由FormBean和ActionBean来完成。

Struts优缺点

优点:

Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。

除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

缺点:

Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。

Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。

Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,如果你的系统准备采用J2EE MVC架构,那么,不妨考虑一下Struts。

Struts实施经验:

1、基于Struts架构的项目开发,首先需要有一个很好的整体规划,整个系统中包括哪几个模块,每个模块各需要多少FormBean和ActionBean等,而且最好有专人负责Struts-config.xml的管理。开发基于Struts的项目的难点在于配置管理,尤其是对Struts-config.xml的管理

2、如果你的项目非常紧,并且项目组中又没有富有经验的Struts开发人员,建议不要冒然采用Struts。Struts的掌握需要一个过程,对于一个熟练的JSP程序员,自学大概需要半个月左右的时间。如果结合titls,则需要更长的时间

3、如果你在网页中大量运用taglib,那么你的美工将做出部分牺牲。当你结合Tiles,功能增强的同时,这种牺牲尤为明显。当然,你对功能和美观的取舍由你自己决定

4、Taglib是一个好东西,但灵活运用它却需要一个过程,如果你不想在Taglib上花太多的时间,那么只需理解与FORM有关的几个标记,其它的标记就放着吧,以后再看,先去研究ActionServlet和Struts-config.xml,你会觉得很有成就感

5、Struts是否只适合于大型项目呢?No!Struts适合于各种大小的项目,当然,对于大型项目,它所体现出来的优势更加明显。

Struts入门经验(二)相关推荐

  1. 600页!分享珍藏很久的《推荐系统学习手册》(附下载链接及入门经验)

    这是之前学习推荐系统时的学习资料,非常全面,包含经典模型的解析及代码实现.模型的评估.最新工业界论文解读等等,全网仅此一份!该手册有PDF版本和Markdown版本,总计有600多页! 资料领取方式: ...

  2. 700页!分享珍藏很久的《推荐系统学习手册》(附下载链接及入门经验)

    这是之前学习推荐系统时的学习资料,非常全面,包含经典模型的解析及代码实现.模型的评估.最新工业界论文解读等等,全网仅此一份!该手册有PDF版本和Markdown版本,总计有700多页! 资料领取方式: ...

  3. Struts入门(三)深入Struts用法讲解

    访问Servlet API Action搜索顺序 动态方法调用 指定多个配置文件 默认Action Struts 后缀 接收参数 处理结果类型 1.访问Servlet API 首先我们了解什么是Ser ...

  4. 数码摄影入门之二 准确的曝光

    数码摄影入门之二准确的曝光 曝光的定义,如果予以科学的解释的话,即是:光线的强度乘以光线所作用的时间.定义中的"光线的强度",是指CCD受光线照射的强度,即照度(以I代表照度,单位 ...

  5. 游戏开发入门(二)游戏中的设计模式

    视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟) 该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解 笔记与总结(请先学习视频内容): 1.有必要深 ...

  6. 无人驾驶汽车系统入门(二十三)——迁移学习和端到端无人驾驶

    无人驾驶汽车系统入门(二十三)--迁移学习和端到端无人驾驶 前面我们介绍了神经网络和深度学习的基础知识,在本文中我们将介绍迁移学习的概念,并将迁移学习应用于端到端无人驾驶模型.一般来说,大型深层神经网 ...

  7. Elasticsearch入门(二) API

    Elasticsearch入门(二) API VSCode部署 RESTful API 索引库管理 列举索引 创建job_idx索引库 查看索引 删除索引 数据管理 数据插入 数据更新 删除数据 Bu ...

  8. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

  9. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

最新文章

  1. HtmlParser 简介
  2. python测试之道进阶,Pytest-Mock 进阶用法详解
  3. UNIX学习笔记(七) 后台执行命令3 命令
  4. Clion生成动态链接库.dll
  5. logback.xml 常用配置详解
  6. 组态王 6.55 启停plc_永宏PLC在远程控制系统中的应用
  7. wordpress去掉index.php,wordpress去掉url中index.php 创建分类目录404如何解决
  8. html手机号带国家前缀,今天跟大家总结一下手机型号的前缀、后缀(...
  9. matlab 图像分割-自定义函数T_SGM
  10. Egret(引擎篇)
  11. 巴布亚企鹅需要开启sshd的root权限
  12. Fitness Notes 健身笔记
  13. 大一计算机系挂科,大一挂科和大三挂科,哪个后果更严重?实际差距不是一星半点...
  14. rotation的单位是角度
  15. 做一个自己的LaTeX幻灯片模板
  16. 6.数据仓库搭建之数据仓库设计
  17. 修改照片为社保照片 358*441
  18. localhost拒绝了我们的连接请求
  19. JS实现鼠标经过和离开图片放大缩小效果
  20. VsCode 使用less

热门文章

  1. session的创建方式
  2. CCNA-3-Cisco静态路由
  3. 从Google搜索联想到了jQuery
  4. java 笔记(3) —— 动态代理,静态代理,cglib代理
  5. PHP数组学习(一)
  6. 《C++编程——数据结构与程序设计方法》程序范例:影碟店(源代码)
  7. 剑指 Offer II 044. 二叉树每层的最大值
  8. 【免费毕设】ASP.NET 网上选课系统的设计与实现(源代码+lunwen)
  9. springboot交通事故档案管理系统答辩PPT免费下载
  10. 明知道计算机是吃青春饭,为什么还有那么多人前仆后继