上一篇博客中我们简单的介绍了BeanUtils的使用。以及其最主要的原理,今天我们进一步的理解这个类在Struts1中的使用。
    首先我们先回想一下搭建一个简单的基于Struts1框架的过程:
       1.首先新建一个webProject
             2.拷贝struts相关jar文件到WEB-INFO/lib目录下
              3.配置web.xml中的ActionServlet
              4.提供Struts-config.xml文件。
              5.建立ActionForm
              6.建立Index.jap,并完好表单
              7.新建XXAction类,继承Action并重写
    可是这些东西到底是怎么协同工作的呢,你假设想着他就是规定。那你就错过了一个非常好的学习的机会,以下通过一张图类介绍struts1在接到用户请求后的一些列的流程。

        通过上面的图,我想能非常好的解释struts的整个的执行流程了。

从图中能够看出,用户编写的两个类中Action类仅仅关心了业务的调用,而ActionForm类就是数据的载体并能提供数据验证的功能。大部分的工作都用框架帮我们实现了。

        研究Struts1的优点:
        struts1中的好多技术往往是人们解决这个问题的第一想法,并且不能不说是不错的想法。随着Struts2的问世,人们開始逐渐的放弃使用struts1了。可是绝对不是没有学习的必要性了。每种框架的改进都是有原因的。我们要学习的不不过最新的技术,更要知道老的技术中的问题,能更好的帮助我们学习和掌握新技术。

Struts1——从BeanUtils看struts的实现原理2的更多相关文章

  1. Struts1——离BeanUtils看struts其原理1

    在Struts中非常典型的特点就是使用了ActionForm来搜集表单数据,可是搜集到的表单数据所有都是String类型的.假设我们直接拿来使用我们会面临一个非常麻烦的问题就是频繁的类型装换. Str ...

  2. 跟vczh看实例学编译原理——三:Tinymoe与无歧义语法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   看了前面的三篇文章,大家应该基本对Tinymoe的代码有一个初步的感觉了.在正确分析"print ...

  3. 跟vczh看实例学编译原理——一:Tinymoe的设计哲学

    自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...

  4. 跟vczh看实例学编译原理——零:序言

    在<如何设计一门语言>里面,我讲了一些语言方面的东西,还有痛快的喷了一些XX粉什么的.不过单纯讲这个也是很无聊的,所以我开了这个<跟vczh看实例学编译原理>系列,意在科普一些 ...

  5. BeanUtils基本使用方法与原理

    使用BeanUtils的原因 因为setProperty是JSP中的标签,因此使用model 2模式JSP+Servlet+JavaBean的时候,JSP将form提交给Servlet程序,而Serv ...

  6. struts 1.x 原理

    Struts 当我接触到这个框架的时候.我就在想为什么是struts,而不是什么CraigFramework.结构.支撑,这样来理解也不难怪了. 为什么须要struts? 在struts in act ...

  7. Struts简介、原理及简单实现

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  8. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   实现Tinymoe的第一步自然是一个词法分析器.词法分析其所作的事情很简单,就是把一份代码分割成若干个tok ...

  9. 从UI Automation看Windows平台自动化测试原理

    前言 楼主在2013年初研究Android自动化测试的时候,就分享了几篇文章 Android ViewTree and DecorView Android自动化追本溯源系列(1): 获取页面元素 An ...

随机推荐

  1. swift调用相机和相册

    简单实现swift调用相机和相册的功能,分享代码与学习swift的童鞋共同进步 import UIKit class ViewController: UIViewController,UIImageP ...

  2. CentOS7--Xshell网络中断引起的vi编辑文件问题

    在编写Python的程序时,由于不小心触碰网线使xshell出现网络中断问题,当再次以vi命令打开文件准备编辑时,发现爆出英文错误: 该错误的英文翻译大概是(1)另一个程序也在编译这个文件,如果是这样 ...

  3. java基础之成员变量与局部变量

    成员变量的含义 局部变量的含义 成员变量与局部变量的区别

  4. CSS样式之背景、文本

    一.背景     1.背景颜色用background-color属性,例如:body{background-color:red}     2.用图像做背景用background-image属性,例如b ...

  5. tips[Android]

    View:2D graphics,SurfaceView:3D graphics. ProgressBar进度渐进动画,可以使用ObjectAnimator实现.动画相关的类: android.vie ...

  6. 二维码生成 - QrCodeNet

    下载QrCodeNet /// <summary> /// 生成QR码 /// </summary> /// <param name="output_path& ...

  7. mysql 常用语法

    --创建数据库 CREATE DATABASE DB_NAME; --选中数据库 USE DB_NAME; --列出数据库列表 SHOW DATABASES; --删除数据库 DROP DATABAS ...

  8. 3、HelloKhala示例说明

    最简单的dome程序只需3行代码 int main() { //设置端口号 InetAddress listenAddr(USER_PORT); //将端口号绑定到Server NodeServer ...

  9. winPcap_1_开篇

    什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 因为有些应用程序需要直接访问网络中的数据包.也就是说,那些应用程序需要访问原始数据包,即没有被操 ...

  10. php正则验证手机号码

    protected function checkphone(){ if(preg_match("/^1[34578]\d{9}$/", $phone)){ return false ...