博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 1.x 的学习
阅读量:6881 次
发布时间:2019-06-27

本文共 1379 字,大约阅读时间需要 4 分钟。

hot3.png

    可能很多学java web的学僧看到struts 1.x 的章节就直接跳过了,因为这东东"基本没人用"了。我觉得如果不是为了急功近利现学现卖的做网站或者本科生项目和课程设计,struts 1.x 其实也应该抽时间好好看一看。毕竟是为了进一步理解后面的SSH,struts 1.x还是个相对简单的入手点,这样也能和webwork模式的struts 2.x进行对比,对后面的框架能有更好的帮助。

    这几天看《Java Web整合开发王者归来》对java web进行一个复习,不过这本一千多页的书讲得要比图书馆里的书细致很多,初学者看看这个或许帮助会大一些。

    struts 1.x 我的认识就是反射和注入。

   struts 1.x 的控制器就是ActionServlet。struts 1.x 的Action并不是Servlet,但它和Servlet一样实现各种业务,这个过程用到的就是反射。ActionServlet截获指定的请求(默认 *.do)通过struts-config.xml将请求分"配给"给指定的Action,实质是反射到那个Action类并执行它的execute。以填写hello.jsp表单为例,流程就是:

    hello.jsp→hello.do→ActionServlet(struts-config.xml)→HelloForm(validate)HelloAction→execute→forward

    这里顺便补充一下反射和RTTI的区别,其实知道RTTI的汉译就能明白。RTTI(运行期类型标识)可以用在检查下塑造型是否正确,而 反射则是查找需要的类。当然还有一个细小的区别就是反射的是类文件可以在网上,而RTTI的class类必须在本地。这部分在《thinking in java》里有详细的说明。

    struts-config.xml的配置信息可以说是注入到ActionServlet内部的。如果是小的项目,或许注入要多写不少代码,反而显得麻烦。但是如struts 一样,如果不采用注入,使用这个MVC框架就得修改ActionServlet内部代码了,那就远没有改改struts-config.xml就能用那么简单了。

   struts的FormBean是线程安全的,但Action是线程不安全的,建议用final修饰,免得出错。

     虽然现在连MyEclipse 10都能自动导入 struts 2.x 了,但这并不意味 struts 1.x 就没用了。我有个同学,为了学习SSH,结果写一个校创项目新闻发布系统时把SSH都导到项目里了……当然他是为了学习,如果是真要做简单的新闻发布系统,我觉得struts 1.x + DAO 足够了。因为struts 1.x不光有标签库,类型转换的功能,它的<data-sources />也可以配置数据库,相比自己写MVC,它的功能是蛮全面的了。

    当然,struts 1.x 肯定不适合于特别复杂的项目了,比如它是用FormBean的validate来验证的,即使用Validator也不是很方便。而struts 2.x 的过滤器可以很轻松的的解决验证问题、甚至防盗链、图片水印、日志都能通过过滤器解决。

转载于:https://my.oschina.net/tdONEmadao/blog/222711

你可能感兴趣的文章
C++文件操作(fstream)
查看>>
用main函数传参做简单的计算器的代码
查看>>
python中struct.unpack的用法
查看>>
体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)...
查看>>
Python实践之(七)逻辑回归(Logistic Regression)
查看>>
PAT (Advanced Level) 1107. Social Clusters (30)
查看>>
【开源社群系统研发日记五】ThinkSNS+ 是如何计算字符显示长度的
查看>>
Nodejs日志管理log4js
查看>>
Bat 脚本实现监控进程功能
查看>>
Js判断是否联网引入不同js
查看>>
pwnable.kr bof之write up
查看>>
Sql语句查询某列A相同值的另一列B最大值的数据
查看>>
技术串讲 CAS 有用
查看>>
怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
查看>>
Tensorflow学习笔记(1):tf.slice()函数使用
查看>>
ORA-01102的解决办法
查看>>
奇怪的iphone6 plus,H5调用拍照浏览器崩溃
查看>>
MVC接受JSON的一些注意事项
查看>>
response对象设置输出缓冲大小
查看>>
MVC+Ninject+三层架构+代码生成 -- 总结(七、顯示層 一)
查看>>