前期阅读了Struts的UserGuide和相关的一些文档,开始动手做Struts的开发

例子很简单,就是做一个登录的过程,参考了文档和Struts的一些Example的代码,总结了以下几点:

1、能用struts的标签的HTML代码最好都用struts的标签来代替。因为struts的标签一般都提供将相对路径转换为绝对URL的功能,这样可以保证css,图片等资源被100%找到

2、 <html:base/>标签最好用上,因为这样做了之后,就可以保证在一些无法用struts标签代替的HTML代码中的资源路径的引用是 正确的。如<link ...>这样的HTML,还有<td background="...>这样的HTML代码

3、 struts自带了common-logging,可以使用log4j,jdk的logging还有自身的simple-logging,推荐使用 log4j!具体的做法是这样,首先将log4j的jar包放到WEB-INF/lib下,这样,struts就可以找到log4j了;然后,在WEB- INF/class目录下建立一个文件log4j.properties,在里面写上配置,这样,log4j就可以工作了!至于在代码中如何调用,请看 struts文档阅读摘要。log4j的配置请看刚发的“log4j官方sample配置”一帖!

4、如果要使用Validator,还要使用DynaActionForm,那么要保证如下一些事情:

(1)在struts-confg.xml中配置validator的Plug-In

(2)在validator.xml中配置validate的规则

(3)在struts-config.xml中配置form-bean,typeclass必须是DynaValidatorForm

(4)在struts-config.xml中配置这个action时,必须要配置input属性,这样DynaValidatorForm才可以在validator失败的时候正确返回到输入页面

注:这里DynaValidatorForm还有一个继承类,是DynaValidatorActionForm,这两个类,根据源码里面的注释,有这样的区别(目前还不是很理解):

DynaValidatorForm:

* <p>This class extends <strong>DynaActionForm</strong> and provides
* basic field validation based on an XML file. The key passed into the
* validator is the action element's 'name' attribute from the
* struts-config.xml which should match the form element's name attribute
* in the validation.xml.</p>

DynaValidatorActionForm:

* <p>This class extends <strong>DynaValidatorForm</strong> and provides
* basic field validation based on an XML file. The key passed into the
* validator is the action element's 'path' attribute from the
* struts-config.xml which should match the form element's name attribute
* in the validation.xml.</p>

还漏了一点,要用validator,要在jsp代码里添加如下:

1、在<html:form 标签里添加 οnsubmit="return validateLoginForm(this);"

2、在JSP页面里添加

<html:javascript formName="LoginForm" dynamicJavascript="true" staticJavascript="false"/>
<script language="Javascript1.1" src="staticJavascript.jsp"></script>

5、我们可以通过书写PlugIn的方式,让我们的应用在启动的时候就执行一些代码,通常这些代码都是初始化用的。书写完成后需要在struts-config.xml中书写PlugIn的配置,然后就OK了。具体的实现代码和配置可以看EasyCluster的代码。

6、一般来说,在PlugIn里初始化后,可以将数据放在application对象中,其实也就是servlet context中。代码如下:

servlet.getServletContext().setAttribute(Constants.DATASOURCE_KEY, ds);

这样,以后在JSP中,就可以直接调用application.getAttribute方法来获得对象

在servlet中,就可以调用this.getServlet().getServletContext().getAttribute来获得对象

7、bean:write 这个标签中有一个属性叫做filter,默认值是true。如果这个filter被置为true的话,那么,Struts将会自动对bean:write的输出做HTML的解析,如把<font color=red>变成

&ltfont color=red&gt

这是非常讨厌的情况,因为我们有的时候会在JavaBean里面写上一些HTML代码,希望将来在JSP中直接可以显示出来。所以,如果在JavaBean里有这样的HTML代码,记得在客户端输出的时候把filter置成false

转载于:https://www.cnblogs.com/super119/archive/2011/03/19/1988606.html

Struts编程心得相关推荐

  1. IME输入法编程心得

     原文链接: IME输入法编程心得 posted @ 2012-11-30 00:42 from [FreedomShe] 自然语言处理的输入法作业成品没有做出来,但不想再在蛋疼的Win32上面耗 ...

  2. 服务器端编程心得(七)——开源一款即时通讯软件的源码

    服务器端编程心得(七)--开源一款即时通讯软件的源码 2017年04月06日 22:57:01 analogous_love 阅读数:30222更多 所属专栏: 高性能服务器编程实现细节详解 版权声明 ...

  3. grread使用例子 lisp_Autolisp编程心得

    Autolisp编程心得.txt如果不懂就说出来,如果懂了,就笑笑别说出来.贪婪是最真实的贫穷,满足是最真实的财富.幽默就是一个人想哭的时候还有笑的兴致.1.养成良好的书写习惯 众所周知,Lisp是一 ...

  4. c语言对编程对作用,c语言编程心得体会

    c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...

  5. odcl 转lisp_AUTOLISP编程心得_2.pdf

    AUTOLISP编程心得_2 [转帖]Autolisp编程心得 养成良好的书写习惯 众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为 遗漏了一个括号大费周折,所以,养成一个好的编程 ...

  6. JSP贸易管理系统myeclipse开发mysql数据库struts编程java语言

    一.源码特点  JSP贸易管理系统 是一套完善的web设计系统,系统采用struts2框架进行开发一套源码,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库 系统主要采用B/S模 ...

  7. linux系统编程心得体会范文大全,编程心得体会范文

    编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.下面是学习啦带来的编程的心得体会范文,欢迎欣赏. C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富. ...

  8. 团队编程心得(032002640姚玮欣)

    团队编程心得 在这次团队编程中我学到了很多新东西,虽然写的代码量不多,但是我通过大量的面相csdn编程学到了很多前端的注意事项,在和大家伙的讨论中深刻的体会到了和大家讨论的时候效率确实会变高,希望以后 ...

  9. 服务器端编程心得(三)—— 一个服务器程序的架构介绍

    本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节. 一.程序运行环境 操作系统:centos 7.0 编译器:gcc/g++ 4.8.3     cmake 2.8.11 mysq ...

最新文章

  1. aqs java 简书,Java并发之AQS原理
  2. c语言 统计数量用count_请问c语言当中,如何统计数字各自出现的次数
  3. Visual Studio 2013旗舰版KEY
  4. selinux= 为 disabled_微课 | 状态管理 SELinux(2)
  5. ExtJS教程(1)---初窥ExtJs
  6. MP4文件中提取H264码流保存成H264文件
  7. .NET反编译之manager,base.AutoScaleMode修复
  8. 数据分析必备算法(算数平均值,加权平均值,最值,中位数,标准差,时间数据处理 ,数组的轴向汇总, 移动均线 ,卷积(简单概念))
  9. 营业执照统一社会信用代码Java正则表达式
  10. Python量化交易平台开发教程系列5-底层接口对接
  11. vue+mapbox实现聚合以及自定义图片图层、元素激活、显示popup、自定义marker
  12. OneNote英文字体自动变成Calibri的问题
  13. 适用于DSP的四阶矩阵求逆算法
  14. 【python二级-练习题】
  15. reac-hook的使用
  16. HNOI2005 狡猾的商人
  17. matplotlib:颜色、标记和线类型,刻度、标签和图例,注释与子图加工,将图片保存到文件,matplotlib 设置
  18. 现代软件工程作业4-7(龙秋娴)
  19. 《JavaSE 基础知识》泛型的基本介绍和应用。
  20. 玩转电源设计,8个优选逆变电源参考方案大合辑

热门文章

  1. 五分钟学会centos配置gitlab
  2. Linux安装python3.6 和pip
  3. Scrapy学习篇(九)之文件与图片下载
  4. 史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中
  5. Python之路,day22-BBS基础
  6. Jetty实战之 嵌入式Jetty运行web app
  7. mvc HtmlHelper
  8. [小故事大道理] -- GoodMorning,Sir!
  9. 微信小程序开发遇到的那些“坑”(1.2.0-1.4.0)
  10. 高频运行脚本案例 $$