﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;DIV id="ddm_Title"&gt;&lt;H1&gt;大大毛&amp;nbsp;&lt;i class="little"&gt;的笔记&lt;/i&gt;&lt;/H1&gt;&lt;H2&gt;&amp;nbsp&amp;nbsp;DDM's Note&lt;/H2&gt;&lt;/DIV&gt;-文章分类-&lt;b value="0103" class="ddm_subItem"&gt;Struts&lt;/b&gt;</title><link>http://www.blogjava.net/tw-ddm/category/12284.html</link><description>&lt;div id="ddm_subTitle"&gt;
&lt;h2 class="catchline"&gt;
        哪怕没有办法一定有说法,&lt;br/&gt;
        就算没有鸽子一定有乌鸦,&lt;br/&gt;
        固执无罪&amp;nbsp;梦想有价,&lt;br/&gt;
        让他们惊讶.
&lt;/h2&gt;
&lt;/div&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 13 Mar 2007 12:30:57 GMT</lastBuildDate><pubDate>Tue, 13 Mar 2007 12:30:57 GMT</pubDate><ttl>60</ttl><item><title>精通Struts笔记--04.01</title><link>http://www.blogjava.net/tw-ddm/articles/61318.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Wed, 02 Aug 2006 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/61318.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/61318.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/61318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/61318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/61318.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts应用的配置      Struts的配置是两个文件web.xml以及struts配置文件										      														1.web.xml         配置ActionServlet，其方法与配置普通的Servlet一致，涉及的元素是&lt;servlet&gt; (名称,类,参数)，&lt;servlet-mapping&gt; (se...&nbsp;&nbsp;<a href='http://www.blogjava.net/tw-ddm/articles/61318.html'>阅读全文</a><img src ="http://www.blogjava.net/tw-ddm/aggbug/61318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-08-02 11:42 <a href="http://www.blogjava.net/tw-ddm/articles/61318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精通Struts笔记--03.02</title><link>http://www.blogjava.net/tw-ddm/articles/59905.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Mon, 24 Jul 2006 16:17:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59905.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59905.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59905.html</trackback:ping><description><![CDATA[
		<font size="2">
				<p>
						<br />3.Struts的分析与设计<br /><br />   应用:<br />      电子通讯薄addressbook<br /><br />   这一章的重点在于引导进入Struts应用的 分析与设计, 要体现软件开发流程<br /><br /><strong>分析需求:<br /></strong>   该应用实现一个较简单的通讯簿<br />      .登录<br />      .添加好友联系方式<br />      .查询<br />      .根据要求查询<br />      .显示全部信息<br />      .注销<br />   在分析中可以发现,登录是整个应用的入口,其它的模块都依赖于此,因此贯穿整个应用应该有一个已登录检查的要求<br /><br /><strong>数据库设计:</strong><br />   根据需求,需要两张表:<br />   1.address<br />      该应用的主体数据表,里边存放应用中所需的联系方式信息<br />      ID(int,key) 记录ID,仅作主键使用<br />      name(varchar,not null) 联系人的姓名<br />      telephone(varchar)联系人的电话<br />      address(varchar)联系人的地址<br />   2.userInfo<br />      该表保存登录用户信息,用于登录检验<br />      例程中改用XML数据文件的方式加以替代<br /><strong><br />用户界面设计:</strong><br />   对应于需求可设计:<br />      登录界面<br />      菜单界面<br />      添加界面<br />         数据的更改是一项权重的动作,因此提供一个添加结果界面<br />      查询条件界面<br />      查询结果界面<br />      对于注销需求,其对应于一个简单动作,可以不提供界面<br /><br /><strong>详细设计:</strong><br />   <strong>登录</strong><br />      数据项userName,password<br />      视图(login.jsp)<br />         userName,password的输入;<br />         userName不能为空;<br />      控制器<br />         成功:<br />            将userName存入session, forward到menu.jsp<br />         失败:<br />            login.jsp<br />      模型<br />         连接数据源(此处是XML数据文件);<br />         数据的逻辑有效性检查(userName,password必须完全一致)</p>
				<p>   <strong>添加</strong><br />      数据项name,telephone,address<br />      视图(insert.jsp)<br />         name,telephone,address的输入;<br />         name,telephone不能为空;<br />      控制器<br />         成功:<br />            insertOk.jsp<br />         失败:<br />            insert.jsp<br />      模型<br />         insert条目</p>
				<p>   <strong>查询</strong><br />      数据项name,telephone,address<br />      视图(search.jsp)<br />         name,telephone,address的输入;<br />         name,telephone,address不能同时为空;<br />      控制器<br />         display.jsp<br />      模型<br />         select条目</p>
				<p>   <strong>注销</strong><br />      控制器<br />         login.jsp<br />      模型<br />         销毁session中的userName<br /><br />   <strong>登录检查</strong><br />      由于需要在JSP页面被载入前调用, 以标签提供<br />      检查session("userName")对象是否为空,否则forward到login.jsp<br /></p>
		</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-25 00:17 <a href="http://www.blogjava.net/tw-ddm/articles/59905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts国际化的快速演示</title><link>http://www.blogjava.net/tw-ddm/articles/59899.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Mon, 24 Jul 2006 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59899.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59899.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59899.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Verdana">   <strong>前言:</strong><br />      虽说刚看"精通Struts"几章,已经迫不及待的想试试它的"国际化"效果了.测试环境:JDK1.4 + Tomcat5 + 中文XP<br /><br />      先用的方法是网络上流行的方法:<br />      在IE/Internet选项/语言 中删除掉中文,选择英文,如此类推,则可以看到页面的国际化效果.<br />      但是这种方法有缺点:<br />         1.很麻烦;<br />         2.非常的不灵,刚开始俺整了几回都<em><strong>偶尔</strong></em>出效果了,但是玩这招多了,Tomcat5.0.29就再也不理我了,任我怎么变,它依旧显示中文.<br />      基于第2点那是非解决不可啊<br /><br />   </font>
				<font face="Verdana">
						<strong>分析:<br /></strong>      按"精通Struts"里面对于Struts国际化的解释,应该是页面会从Session(<em>如果有的话</em>)中取出Locale对象,只有当该对象为空时才会将request中的Locale对象放入session中去,而资源文件的选择是依据session中的Locale对象的,如此这般,就可以拿出一个简单点演示国际化效果的方法来:<br />         提供一个JSP让用户选择语种,如英文,中文.提交到Action时 来个相应处理<br /></font>
		</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000">        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(action.equalsIgnoreCase(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">english</span>
								<span style="COLOR: #000000">"</span>
						</font>
				</font>
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000">)) {<br />            request.getSession().setAttribute(Globals.LOCALE_KEY,</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Locale(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">en</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">,</span>
								<span style="COLOR: #000000">""</span>
						</font>
				</font>
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000">));<br />        }<br />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(action.equalsIgnoreCase(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">chinese</span>
								<span style="COLOR: #000000">"</span>
						</font>
				</font>
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000">)) {<br />            request.getSession().setAttribute(Globals.LOCALE_KEY,</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Locale(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">zh</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">,</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">CN</span>
								<span style="COLOR: #000000">"</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<font face="Verdana" size="2">));<br />        }<br /></font>
				</span>
		</div>
		<font size="2">
				<font face="Verdana">         这样做应该是符合Struts的要求的,结果测试失败.<br /><br />   </font>
				<font face="Verdana">
						<strong>解决办法:<br /></strong>      事实证明,并不是理解Struts有误, 问题只是出在容器的处理方法上,还是按上面的方法,搭配Tomcat5.5测试成功,现在要想看"国际化"的效果就轻松多了,只要在应用的主菜单上加入语言选项,以后的各种跳转都一切OK.<br /><br />   </font>
				<font face="Verdana">
						<strong>还存在的问题:<br /></strong>      经测试证明,这种方法能够达到根据菜单自动切换语种显示的目的,但是也注意到了一点,就是 request.getLocale(); 方法得到的始终都是本机IE的编码,这与session中存放的那个Locale是不一致的,当然也是利用了Struts需要先判断session中的Locale对象是否为空才进行改变这一点.不过这也带来这种演示方法的局限性:<br />      1.有些Struts应用是允许客户端在应用的过程中改变Locale的,因此为此覆盖了RequestProccessor.proccessLocale()方法,支持动态的更新.这样会造成此种演示方法的可耻失败;<br />      2.必须依赖于session,<br />      3.如果程序中存在有手工从资源文件中取资源的情况(<em>如我提到过的标签中的使用</em>),那么<br /> </font>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Verdana">
								<span style="COLOR: #000000">   getMessage( <strong>(Locale)session.getAttribute(Globals.LOCALE_KEY)</strong> , key </span>
								<span style="COLOR: #000000">)</span>
						</font>
				</div>
				<font face="Verdana">      与<br /></font>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<span style="COLOR: #000000">
								<font face="Verdana">   getMessage( <strong>request.getLocale() </strong>, key )</font>
						</span>
				</div>
				<font face="Verdana">      的效果是会完全不同的.<br /><br />  </font>
				<font face="Verdana">
						<strong> 有关Tomcat5.5的一点提示:<br /></strong>      网上有说 </font>
				<a title="Tomcat5.5下载" href="http://tomcat.apache.org/download-55.cgi" target="_blank">
						<font face="Verdana">Tomcat5.5</font>
				</a>
				<font face="Verdana"> 是不能与 JDK1.4 搭配使用的,只能用 JDK5 ,这是<font color="#ff0000">错误</font>的.<br />      Tomcat5.5如果搭配 JDK1.4 使用的话,需要注意一点的是:<br />         1.不能使用那个for windows 的EXE安装文件,需要下载ZIP文件进行安装;<br />         2.除了必需下载的那个 apache-tomcat-5.5.x.zip 主体文件外,使用 JDK1.4 还必须下载那个 apache-tomcat-5.5.x-compat.zip 文件才行,下载回来后解压到同一个目录中即可直接使用.<br />         3.手工添加管理员<br />            向Tomcat\conf\tomcat-users.xml中加入<br />               &lt;role rolename="admin" /&gt;<br />               &lt;role rolename="manager" /&gt;<br />               &lt;user username="admin" password="你的密码" roles="admin,manager" /&gt;<br /><br />      另外Tomcat5.5与Tomcat5.0还有一个显著的区别就是在数据源的使用上<br />         Tomcat5.0是用的<strong>DBCP</strong>数据源的,因此common/lib下有DBCP需要用到的包;<br />         而Tomcat5.5则不同,如果想要使用DBCP数据源的话,需要手工向common/lib下加下DBCP所需的包:<br />            commons-dbcp-1.2.1.jar;<br />            commons-collections-3.1.jar;<br />            commons-pool-1.2.jar;<br /></font>
		</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-24 22:59 <a href="http://www.blogjava.net/tw-ddm/articles/59899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中action之间控制权转移的问题</title><link>http://www.blogjava.net/tw-ddm/articles/59856.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Mon, 24 Jul 2006 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59856.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59856.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59856.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<strong>    起因:</strong>
						<br />      在学习那个addressbook例程中遇到这个问题的,当时我改变了例程的流程, 不让menu.jsp直接使用&lt;a link&gt;来跳,而是配合JS提交action到menuAction,而对于那个display和displayAll两个模块,我当时也想改改,因为按书上的例程,是要把"生成SQL并压入到session中"分放到两处进行处理的,这样的感觉很不爽,如果需要发生什么变化的话,需要到多个地方去对应着更改,因此我的作法是在menuAction 中压入一个displayAll = 0 or 1,再forward,这样在 searchAction 中 sql = "select * from address"; if(displayAll == 1) { ...;sql += where;}.<br />      当时遇到了麻烦,我将displayall配成 "search.do" ;运行结果有些让人意外,searchAction并没有得到控制权,而是跳到了它的input页面 search.jsp.现在问题已经解决,下面就详细说明一下原因及解决方法:<br /><br />   <strong>问题的分析:<br /></strong>      之所以从menuAction --&gt; searchAction时会跳到search.jsp页面,是因为在转移到 searchAction 时产生了 检验错误, Struts根据Action的配置参数,转向到Action.input所指定的JSP文件,从而出现上面的一幕.<br /><br />   <strong>解决方法:<br /></strong>      方法1:<br />         步骤一:   查看Action的属性,可以看到有一个 "<strong>validate</strong>"属性,是个boolean属性,<strong>缺省为true</strong>,它表明Action是否需要调用ActionForm.validate();将其设为false;或者去掉ActionForm中的校验.<br />         步骤二:   既然去掉了视图层的校验,那就有必要在控制器中实现这个输入值校验的功能了.<br />      方法2(<em><strong>取巧的办法</strong></em>):<br />         利用一个比较特殊的东东,记得我在  <a href="/tw-ddm/articles/58865.html">笔记02</a> 中提到过的那个<strong>&lt;html:cancel /&gt;标签</strong>,现在就转转弯,用它了,来个<br /></font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">request.setAttribute(Globals.CANCEL_KEY,</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">);</span>
		</div>
		<p>         只要给它一个对象,Struts控制器就会认为是按下了Cancel,这样的话也可以绕过ActionForm中的validate(),而且从正常的Input JSP页面提交的话,ActionForm.validate()方法还是可以产生作用的.<br /><br />   <strong>后记:<br /></strong>      Myeclipse里面配置Action时能够设置的属性并不多,也不包含这个validate属性,需要自己手工处理struts-config.xml<br />      如果技术上达不到,暂时取取巧还是可以的,随着技术的深入,解决问题的方法也会越来越中规中矩</p>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-24 17:26 <a href="http://www.blogjava.net/tw-ddm/articles/59856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中文问题的暂时解决</title><link>http://www.blogjava.net/tw-ddm/articles/59728.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Sun, 23 Jul 2006 17:15:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59728.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59728.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59728.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Verdana" size="2">   跟大家一样,我在学习Struts的过程中,也不可避免的遇到这个问题,综合网上说的再加上实践,暂时有了解决方案(<em>说它暂时是不知道各种情况下都能适用</em>),反正以后遇到例外再改吧.<br /><br />   解决问题的核心就是要统一使用Unicode编码(<strong>UTF-8</strong>)需要从以下几个方面着手<br />      <strong>1.JSP页面编码</strong><br />         这个较容易搞定,只需要指定页面的contentType="text/html;charset=UTF-8"即可<br />      <strong>2.资源文件编码<br /></strong>         这个是针对国际化来讲的,如果只有E文的资源,那是不可能出问题的,如果有其它语种的资源文件,需要进行编码,如果手工做的话需要用到 JDK/lib 目录下的 native2ascii.exe 工具进行命令行的操作,Eclipse下省心的方法也有,就是去下个插件</font>
				<a href="http://www.guh-software.de/jinto.html" target="_blank">
						<font face="Verdana" size="2">JInto</font>
				</a>
				<font face="Verdana" size="2">,让"国际化"的大师们来做这些民工活好了,这个插件还可以对照着多语种进行资源文件的编辑,easy啊.<br />      <strong>3.页面输入编码</strong><br />         说具体点就是从JSP页面form提交上去的中文数据,回显及插入到数据库中都成了乱码,这个我在网上查了,有说用Fileter的,不过看着就挺麻烦啊,有个挺简单的解决方法就是用自己的ActionServlet替换缺省的那个,具体操作是:<br />         (1)定义一个类,让它extends ActionServlet ,覆盖process方法</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #0000ff">protected</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">void</span>
								<span style="COLOR: #000000"> process(HttpServletRequest request, HttpServletResponse response) </span>
								<span style="COLOR: #0000ff">throws</span>
						</font>
				</font>
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000"> java.io.IOException, javax.servlet.ServletException {<br /><br />       request.setCharacterEncoding(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">utf-8</span>
								<span style="COLOR: #000000">"</span>
						</font>
				</font>
				<font size="2">
						<font face="Verdana">
								<span style="COLOR: #000000">);   <br />       </span>
								<span style="COLOR: #0000ff">super</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<font face="Verdana" size="2">.process(request, response);  <br />    }</font>
				</span>
		</div>
		<p>
				<font face="Verdana" size="2">         (2)修改web.xml文件中的&lt;servlet-class&gt;元素,把这个标签的内容指向自己的类;<br /><br />   到此问题解决,不过我在使用中也注意到一个有趣的现象,运行后生成的Web页面有一个特点,就是从IE的 "查看/编码方式" 上可以看到IE自动使用的是UTF-8编码,而你如果换成 "简体中文GB2312"的话得到的将是一个乱码页面<br /><br /></font>
		</p>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-24 01:15 <a href="http://www.blogjava.net/tw-ddm/articles/59728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DBCP数据源的配置问题(Myeclipse)</title><link>http://www.blogjava.net/tw-ddm/articles/59705.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Sun, 23 Jul 2006 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59705.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59705.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59705.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Verdana">
						<br />   在应用过程中想使用DBCP数据源，遇到了一些问题,配置环境:Eclipse3.1,Myeclipse4.02<br /><br />   在struts-config.xml的设计视图中可以选择"新增数据源"，Myeclipse会弹出向导窗口，这里使用的缺省DataSource的Type是"org.apache.struts.util.GenericDataSource"，而用DBCP数据源的话需要改为"org.apache.commons.dbcp.BasicDataSource"，当然了通过Myeclipse插入的Struts框架中是缺少DBCP的包的，好在Tomcat用的就是这个，因此能够在Tomcat\common\lib目录中找到需要的包：<br />   1.commons-dbcp-1.2.1.jar<br />   2.commons-pool-1.2.jar<br />   在工程的配置路径中加入即可.也可以从apache的网站上 </font>
				<a title="DBCP下载" href="http://jakarta.apache.org/commons/dbcp/downloads.html" target="_blank">
						<font face="Verdana">下载</font>
				</a>
				<br />
				<br />
				<font face="Verdana">   Myeclipse的向导窗口中具有一些属性栏，在这里可以输入数据源使用的Driver类名以及URL，当然还有用户名/密码。<br />   属性栏全部都配置完毕后，会在struts-config.xml文件中加入&lt;data-sources&gt;标签，这里面的&lt;data-source&gt;即是刚刚新建的数据源配置参数，这里需要<strong>手工更改：</strong><br /><br />      1.<strong>增加&lt;data-source&gt;标签的type属性，这样 &lt;data-source type="org.apache.commons.dbcp.BasicDataSource"&gt;；</strong><br />      2.<strong>属性名 driverClass 改为 dirverClassName；</strong><br />      3.<strong>属性名 user 改为username，注意n是小写的；</strong><br />      4.<strong>去掉属性标签 loginTimeout。</strong><br /><br />   改完以后就可以启动Tomcat看效果了</font>
		</font>
		<font face="Verdana">
		</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-23 21:24 <a href="http://www.blogjava.net/tw-ddm/articles/59705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精通Struts笔记--03.01</title><link>http://www.blogjava.net/tw-ddm/articles/59701.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Sun, 23 Jul 2006 13:02:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59701.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59701.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59701.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Verdana">   快有一个星期没有更新学习进度了,不过这几天我也没闲着,还在啃书中....<br /><br />   学习的要点在于实践,这一章的书已经看完,不过实践过程中涉及到的技术实在是很多,很多时间都花在了网络资料的查找以及本书后面几章中相关技术的学习上.<br /><br />   这一章中挖掘出来的东东:<br />      1.解析XML的Digester;<br />      2.数据源的配置(DBCP);<br />         2.1连接在运用上的结构问题;<br />      3.页面控制流程的跳转;<br />      4.标签类的内部设计;<br /><br /><br />   下面详细解释一下:<br /></font>
				<li>
						<font face="Verdana">解析XML的Digester:<br />      这里我</font>
						<a href="/tw-ddm/articles/59299.html" target="_blank">
								<font face="Verdana">有一篇</font>
						</a>
						<font face="Verdana">有关类使用的介绍<br /><br /><br /><li>DBCP数据源的配置:<br />      介绍在</li></font>
						<a href="/tw-ddm/articles/59705.html" target="_blank">
								<font face="Verdana">这里</font>
						</a>
						<br />
						<br />
						<br />
						<font face="Verdana">
								<li>连接在运用上的结构问题: <br />      这个问题是针对例程提出来的.例程中实际用到连接的在AddressBookBean中,而有关数据源的getConnection()方法被放于DbUtil工具类中;在结构上DbUtil.connectionToDb()和AddressBookBean的insert(),search()方法被设计为static,这样的设计在用自定义数据库连接时没有什么问题,但是我现在的要求是使用Struts数据源,问题就出来了,DbUtil只是一个普通的用户类,在里面我无法拿到DataSource(暂时我还没有找到解决方法),因此我需要在结构上做一些改动:<br />      <strong><em>想法</em></strong>:<br />         1.在DbUtil上增加一个static void setConnection()接口,这样做的好处是改动不大;<br />         2.在JavaBean上改动数据操作接口,让它依赖于外部Connection传入,这样做的好处是看起来比较OK一些,降低一点逻辑层与数据层的藕合.<br />      基于以上两种方法的考虑,我在实践中采用了第2种方法,同时也在后续的自定义标签设计中为此付出了代价<img height="19" src="http://www.blogjava.net/Emoticons/71_71.gif" width="19" border="0" /><br /><br /><br /></li>
								<li>页面控制流程的跳转:<br />      <strong><em>起因</em></strong>:我又改动了设计结构,原本由menu.jsp实现link,我把它改成menu.jsp --&gt; menuAction --&gt;forward,这样改的好处是在struts-config.xml设计视图中就可以很清楚地看到整个应用的流程,嘻嘻.<br />      <strong><em>方法</em></strong>:menu.jsp上加入一个form以及一个hidden,在&lt;a&gt;中调用JS实现action的提交,menuAction中来个findAction(action);<br />      <em><strong>小插曲</strong></em>:对于应用中的那个displayAll模块,我先前是让它的forward指向searchAction.do,在跳转之前,压个SQL进session,不过我得到的却是可耻的失败,action之间的跳转没有达到目的(menuAction -&gt; searchAction -&gt; display.jsp),跳转的结果成了这样(menuAction --&gt; search.jsp),我在forward中设置的search.do根本就没有得到控制权,而是直接跳到它的input页面去了,多方查资料,至今尚未得到解决(已经解决,<a title="Struts中action之间控制权转移的问题" href="/tw-ddm/articles/59856.html" target="_blank">参看这里</a>.).<br />      只能再改动成(menuAction --&gt; display.jsp),由标签实现display功能,而session中sql对象的压入也被迫放在了两个地方(menuAction,searchAction),这个有点不爽,看起来还是例程中的(menu.jsp -&gt; search.jsp + menu.jsp -&gt; displayAllAction)设计要好一些.<br /><br /><br /></li>
								<li>标签类的内部设计:<br />      ValidateSessionTag标签的设计没有什么可改变的;<br />      DisplayTag标签需要做相应的改动:<br />         1.由于之前我在JavaBean使用Connection的结构上做了变动,因此这里也要产生变化了,在DisplayTag中我需要拿到那个DataSource,<br />            Connection con = ((DataSource)this.pageContext.getServletContext().getAttribute(Globals.DATA_SOURCE_KEY)).getConnection();<br />            当然了,标签上应该增加属性,允许设置DataSource的key<br />         2.既然Struts需要实现国际化,标签也应该对应着进行一点改动,DisplayTag中要显示一整个&lt;table&gt;元素,而例程中的表头的生成显然会产生问题,表头元素应该是从资源文件中取.<br />            ((MessageResources)request.getAttribute(Globals.MESSAGES_KEY)).getMessage(request.getLocale(), key );<br />            如果考虑周全点,同上一点一样,也应该增加属性才行<br /><br />    </li>
						</font>
						<font face="Verdana">
								<strong>思考:<br /></strong>      经我改动的数据操作上还是存在麻烦,由于在标签类内部引用了DataSource,这样就遗留下隐患,从类的结构上可以看到自定义连接的DirverManger与DataSource根本就是两条线,这样如果我的应用不用这种连接池的设计,而是改用自定义连接的话,很显然这个标签是需要进行改动的,这显然不爽于仅仅改动一个工具类.因此我的考虑是,在实现上应该从更加通用的Connection接口着手.<br /><br /><strong>   具体实现</strong>:<br />      自定义<strong>接口DbSource</strong>,在此接口中仅有一个方法<strong>public Connection getConnection();</strong>让自己的数据库工具类实现这个接口,这样在众多的应用中,就可以把传入的对象向DbSource接口转化,从而成功的得到Connection对象.这样做的好处就是让这个DbSource接口充当适配器的角色,从而将Connection与具体的连接方式隔离开来.<br />      如果应用在例程上,也可以解决从各个地方直接调用一个类的不好现象(接口毕竟比类通用啊)<br /></font>
				</li>
		</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/59701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-23 21:02 <a href="http://www.blogjava.net/tw-ddm/articles/59701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Digester类的简单使用方法</title><link>http://www.blogjava.net/tw-ddm/articles/59299.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Thu, 20 Jul 2006 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/59299.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/59299.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/59299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/59299.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/59299.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用一个小实例演示:								         该例子将演示:读者正在读书的情况(读的什么书,各读了多少章节)   .需要解析的数据XML																														XML文件																				Code highlighting produced by Actipro CodeHighligh...&nbsp;&nbsp;<a href='http://www.blogjava.net/tw-ddm/articles/59299.html'>阅读全文</a><img src ="http://www.blogjava.net/tw-ddm/aggbug/59299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-20 23:57 <a href="http://www.blogjava.net/tw-ddm/articles/59299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web.xml中无法添加&amp;lt;taglib&amp;gt;标签问题的解决</title><link>http://www.blogjava.net/tw-ddm/articles/58879.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Tue, 18 Jul 2006 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/58879.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/58879.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/58879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/58879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/58879.html</trackback:ping><description><![CDATA[
		<font size="2">状况:<br />   向web.xml中加入Struts标签库信息时遇到问题,xml校验报错:Invalid content was found starting with element 'taglib'<br /><br />环境:<br />   eclipse3.1.1,myeclipse4.0.2,tomcat5.0.29<br /><br />解决方法:<br />   1.将&lt;taglib&gt;标签放在&lt;jsp-config&gt;标签内即可;<br />   2.使用DTD进行验证<br /><br />产生问题的原因:<br />   将出问题的web.xml文件与tomcat下其它的文件进行比较发现,区别在于xml文件使用了不同的文档类型描述<br />   能够直接添加的web.xml使用是DTD<br />   </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #0000ff">
						<font size="2">&lt;!</font>
				</span>
				<font size="2">
						<span style="COLOR: #ff00ff">DOCTYPE web-app<br />    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br />    "http://java.sun.com/dtd/web-app_2_3.dtd"</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
		</div>
		<br />
		<font size="2">   而我的这个web使用的是XML Schema<br /></font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">web-app </span>
						<span style="COLOR: #ff0000">xmlns</span>
						<span style="COLOR: #0000ff">="http://java.sun.com/xml/ns/j2ee"</span>
						<span style="COLOR: #ff0000"> xmlns:xsi</span>
						<span style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span>
						<span style="COLOR: #ff0000"> version</span>
						<span style="COLOR: #0000ff">="2.4"</span>
						<span style="COLOR: #ff0000"> xsi:schemaLocation</span>
						<span style="COLOR: #0000ff">="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
		</div>
		<font size="2">   出现这种差别的原因在于,一个采用的是JSP1.2规范,而另一个使用的是JSP2.0规范,可以参看<a title="jsp2.0" href="http://www.oreilly.com.cn/news/jsppart2.php?c=java" target="_blank">这里</a></font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/58879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-19 00:37 <a href="http://www.blogjava.net/tw-ddm/articles/58879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精通Struts笔记--02</title><link>http://www.blogjava.net/tw-ddm/articles/58865.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Tue, 18 Jul 2006 14:27:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/58865.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/58865.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/58865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/58865.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/58865.html</trackback:ping><description><![CDATA[
		<font size="2">
				<strong>
						<font size="3">2.简单的Struts应用   helloapp<br /><br /></font>
				</strong>   应用需求:<br />      1.接受name输入<br />      2.不允许name为空<br />      3.如果是特定姓名,则不向其打招呼<br />      4.满足条件则向其问好<br /><br />   例程:<br />      可能由于本需求很简单,因此例程只使用了一个JSP作为视图,从struts-config.xml的设计视图上可以看到逻辑显得很乱<br /><br />   具体步骤(Myeclipse):<br />      1.先建一个项目,选择J2EE下的WEB项目<br />      2.在项目上加入Struts框架<br />      3.选择struts-config.xml配置文件可进入设计视图<br />      4.新建一个ActionForm Bean,加入name属性,并根据此ActionForm bean新建一个JSP<br />      5.新建一个Action,可以自行另取名称(不一定必须与form对应),之后还要在Input的JSP文件中将form 的 action改为对应的Action路径,记住要加.do后缀<br />      6.在Myeclipse中设置应用服务器,使用Tomcat5<br />      7.发布<br /><br />   注意事项:<br />      ActionForm Bean只能由具体的类进入编辑;<br />      Action在设计视图上可以加入ActionForward,但是这样做实际上只是在配置文件中进行了配置,还需要在Action中自行编码进行findForward()才能实现跳转;<br />      Action中设置出ActionErrors后,必须this.saveError(request)才会产生作用;<br />      Struts配置文件的中文问题:<br />         在XML配置文件中设置的一个配置文件,实际上是一个缺省配置文件,一个资源对象实际上对应多个配置文件(多语言),文件在名称上有要求,据此可以配置多个语言的资源文件;<br />         Struts实际上是依靠多个资源文件来实现国际化;<br />         Eclipse自身对于配置文件采用的编码方式是ISO8859,因此用它编辑配置文件后,再打开会是一些问号,JSP页面也会显示不正常,需要使用JDK的native2ascii来手工转码,对于某些版本的Eclipse提供了自行设置编码的设置.<br />         用<a title="JInto" href="http://www.guh-software.de/jinto.html" target="_blank">JInto</a>插件可以简化操作,并同时对多个语言的资源文件进行编辑(对照着,很E啊)<br />         多语言效果的测试:<br />            IE中的Internet选项/语言,可以看到当前IE所使用的语言,选择需要测试的语言,应用后刷新或重开IE窗口即可(不过测试中失败了好多次).<br />            ?:我试着选择一个没有对应资源的语言,但是却没有看到那种使用缺省资源文件的效果,还是中文的.<br />         按书上的,写成ActionErros.add("key",new ActionMessage("key"));的形式在本机上出类转换异常,改成ActionErros("key",new ActionError("key"));的方式通过;<br />         &lt;html:cancel /&gt;标签:<br />            由ActionForm新建一个JSP时,Form域中是放上了submit和cancel两个按钮的.<br />            cancel的用途还不太清楚,但是它可以完成一个submit动作,而且在<strong>使用cancel进行提交时,ActionForm的校验没有起作用</strong>,直接提交到Action进行处理,从而忽略了视图层的检验<br /><br />   这一章中有两点映象:<br />      1.书上的例程,在各处都广泛地引用到了配置文件,这应该是出于国际化的要求,对于大型项目来说是很重要的;<br />      2.校验的问题,该例程将空值校验放入ActionForm检验中,划归于视图层的检验,而对于特定姓名拒绝打招呼这样的检验,放入Action中,属于业务逻辑.</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/58865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-18 22:27 <a href="http://www.blogjava.net/tw-ddm/articles/58865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精通Struts笔记--01</title><link>http://www.blogjava.net/tw-ddm/articles/58853.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Tue, 18 Jul 2006 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/58853.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/58853.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/58853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/58853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/58853.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<font size="3">
								<strong>1.Struts与Java Web应用简介<br /><br /></strong>
						</font>   Struts为Java Web应用提供了框架.它可以提高开发的速度.<br />   优点:<br />      本身是一群Web开发专家的智慧结晶;<br />      运用广泛;<br />      适用于开发大型复杂的Web应用.</font>
		</p>
		<p>
				<font size="2">   Java Web应用的核心技术是Servlet和JSP<br />   Struts框架中JSP位于视图层,而Servlet位于控制层</font>
		</p>
		<p>
				<font size="2">   几个重要的API<br />      HttpServletRequest:由Servlet容器把用户的请求存在此对象中<br />      HttpServletResponse:用于生成Http响应结果<br />      HttpSession:容器为每个Http会话而创建的一个实例,用于保存会话中的共享数据<br />      ServletContext:为每个Web应用而创建的实例,存放application范围内的数据</font>
		</p>
		<p>
				<font size="2">      HttpServletRequest,HttpSession,ServletContext都提供了操作共享数据的方法<br />      setAttribute(String key,Object value)<br />      getAttribute(String key)<br />      与容器提供的接口一样,因此getAttribute(String key)方法返回的是Object,需要做强制转型</font>
		</p>
		<p>
				<font size="2">   HttpSession的生存期有:<br />      客户端关闭浏览器;<br />      会话过期;<br />      服务端调用HttpSession.invalidate()方法.<br /><br />   相对来说Session的生存期较长,因此如果可以的话应将数据保存在Request范围内,这样可以缩短对象的生存期;另外象Tomcat这样的容器提供了管理Session的功能,可以对其做持久化管理.</font>
		</p>
		<p>
				<font size="2">   Web应用中数据生存的范围:<br />      1.page<br />      2.request<br />      3.session<br />      4.application</font>
		</p>
		<p>
				<font size="2">   JavaBean:<br />      就是符合特定规范的Java对象,在JSP中提供了标签便于处理<br />      JSP中操作JavaBean常用标签有:<br />         &lt;jsp:useBean id="bean名称" scope="生存期" class="ddm.MyBean" /&gt;<br />         &lt;jsp:getProperty name="bean名称" property="属性名" /&gt;<br />         &lt;jsp:setProperty name="bean名称" property="属性名" value="值" /&gt;<br />   JavaBean常位于模型层,由它提供数据及逻辑<br />   Struts中的ActionForm Bean就是一种JavaBean,它仅在视图层和控制层之间传递用户输入的表单数据,位于视图层,它只能有两种生存范围:request,session</font>
		</p>
		<p>
				<font size="2">   客户化JSP标签<br />      在Jsp1.1中出现,支持用户在JSP中自定义客户化标签,这些标签常用于处理复杂的逻辑运算和事务以及定义JSP的输出内容和格式.<br />      优点:<br />.         标签具有可重用性,因此可以提供开发效率<br />            <em>类似于asp中的JS函数,jsp中的嵌入页</em><br />.         可以在JSP页面中以静态或动态的方式设置标签的属性<br />.         标签可以访问JSP网页中的所有对象<br />.         标签可以相互嵌套,来完成复杂的逻辑<br />.         可以使JSP页面更简洁,提高可读性<br />            <em>对于这个有不同的意见,我认为实际上降低了可读性;因为程序的可读性实际上是适用于程序开发/测试人员的,除此之外别无他人,而引用各种技术,只会提升技术上的复杂度,增加修改的难度;所谓的"类的可重用性",就我看来是指特定人群的,对于专业的高手来说是可以提升效率的,但是对于某种技术一知半解的人来说,只会提升开发难度.一旦类被重用,错误的影响面也会非常之广.<br /></em><br />   Struts提供了五种标签库:<br />      1.Bean<br />      2.HTML<br />      3.Logic<br />      4.Nested<br />      5.Tiles</font>
		</p>
		<p>
				<font size="2">   EJB<br />      EJB(企业JavaBean)组件是基于标准分布式对象技术,CORBA,RMI的服务端Java组件<br />      它与JavaBean的联系<br />         相同点:都用于实现企业应用的业务逻辑,都位于模型层<br />         区别:EJB总是分布式的;EJB需要运行于应用服务器中,而JavaBean只需要Servlet/JSP容器</font>
		</p>
		<p>
				<font size="2">   XML<br />      应用广泛,它可以描述结构化的数据,通常与DTD一起使用(声明标记使用规则),常用于配置文件<br />      Struts中的两种重要的XML文件<br />      web.xml<br />         普通的Web应用都有,它用于配置Web应用,如配置Servlet<br />.     struts-config.xml(<em>可以使用别的名称,需要在web.xml中对应</em>)<br />         Struts框架的配置文件,主要是Action的配置,这个XML文件包含了几个标签,在书写时各子标签的书写顺序有着严格要求</font>
		</p>
		<p>
				<font size="2">   Web组件的关联关系<br />      1.请求转发<br />         只能发生在同一个Web应用中,在服务端完成转发<br />         RequestDespatcher rd = request.getRequestDispatcher("hello.jsp");<br />         rd.forward(request,response);<br />         JSP中使用的标签:<br />            &lt;jsp:forward page="hello.jsp" /&gt;<br />         这种方式可以共享request范围内的数据<br />      2.重定向<br />         与转发类似,但是可以将请求转发到不同的Web应用,在客户端完成定向(由服务端发一个信息给客户端浏览器,浏览器将新发一个请求)<br />         response.sendRedirect("</font>
				<a href="http://www.javablog.net/tw-ddm">
						<font size="2">http://www.javablog.net/tw-ddm</font>
				</a>
				<font size="2">");<br />         由于可能发生在不同的Web应用,因此不能共享request范围的数据<br />      3.包含<br />         是一个聚集的概念,可以共享request数据,常用于模板,程序的控制权在调用者,被包含者只是暂时有控制权,执行完毕后需要传回<br />         RequestDispatcher rd;<br />         rd = request.getRequestDispatcher("/header.jsp");<br />         rd.include(request,response);<br />         包含由于不会产生控制权的转移,因此能够在一个组件中包含多个<br />         JSP中使用标签:<br />            &lt;jsp:include page="/hello.jsp" flush="true"&gt;<br />               &lt;jsp:param name="username" value="ddm"/&gt;<br />            &lt;/jsp:include&gt;<br />         这是动态包含,它可以传递参数,它可以包含动态或静态文件,每次运行时容器都会去检查文件是否发生变化<br />         &lt;% @include file="/hello.jsp" %&gt;,容器不会每次去检查文件,常用于包含静态页面<br /><br /></font>
				<font size="2">   Struts是实现MVC模式的框架<br />      视图层:<br />         JSP作为MVC中的视图,它没有业务逻辑,也没有模型信息,只有标签<br />         ActionForm bean 由于只处理表单数据,联系视图和控制器,因此也被分为视图层<br />      模型层:<br />         由JavaBean和EJB来实现,某些简单的功能,有时也直接让Action扮演控制器和模型两种角色<br />      控制器:<br />         由ActionSevlet和Action来实现.<br />         ActionSevlet类是Struts框架中的核心组件.继承了HttpServlet,在MVC中作为中央控制器存在,因此只能有一个<br />            <em>这个核心玩意也是可以替换的,只要新类是从ActionServlet派生即可,同时也需要在web.xml中改变对应的class名称</em><br />         Action由ActionServlet根据Struts-config.xml配置文件来产生,它负责调用合适的模型(JavaBean,EJB),因此它也具有适配器的作用,相当于控制器和模型之间的隔离层(<em>适配器</em>)<br />         Action必须实现基类的execute()方法,此方法返回一个ActionForward对象,由ActionForward对象封装响应,为增加应用的可配置,提倡从配置文件中findForward<br /><br />   配置文件:<br />      struts-config.xml<br />      配置文件中描述了多个Action的映射信息,初始化时被封装在ActionMapping对象中,每个action元素对应一个ActionMapping对象<br />      该配置文件中有个&lt;controller&gt;元素,是用于配置ActionServlet的,比较有用的是:&lt;controller contentType="text/html;charset=UTF-8" locale="true" /&gt;,这里的contentType应用于全局范围,如果在JSP文件中指定将在局部履盖这个选项,换句话说这里指定了,就可以在JSP页面省心了,另外说一句,用Myeclipse生成的JSP,如果是从ActionForm生成则不会有这些信息,只有要设计视图中单独拖一个出来时才会具有.<br /><br />   工作流程:<br />      1.检索与用户请求匹配的ActionMapping对象,如果不存在则返回路径无效的信息.<br />      2.检查有无ActionForm对象,如果没有则创建,并将用户提交的表单数据保存在其中.<br />      3.根据配置决定表单是否需要验证,如果需要验证,则调用ActionForm的validate()方法.<br />      4.如果validate()方法返回null或不含ActionMessage的ActionErrors对象,则表示成功.失败则返回input页面<br />      5.根据ActionMapping包含的映射信息,查找及新建Action对象,然后调用该对象的execute()方法.<br />      6.Action对象的execute()返回一个ActionForward对象,然后由ActionServlet转发客户请求给ActionForward中指向的JSP组件<br />      7.由该JSP生成网页以响应客户请求.</font>
		</p>
		<p>
				<font size="2">
				</font> </p>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/58853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-07-18 21:57 <a href="http://www.blogjava.net/tw-ddm/articles/58853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Myeclipse插件布署时的TOMCAT JDK NAME问题的解决</title><link>http://www.blogjava.net/tw-ddm/articles/53499.html</link><dc:creator>大大毛</dc:creator><author>大大毛</author><pubDate>Sat, 17 Jun 2006 11:04:00 GMT</pubDate><guid>http://www.blogjava.net/tw-ddm/articles/53499.html</guid><wfw:comment>http://www.blogjava.net/tw-ddm/comments/53499.html</wfw:comment><comments>http://www.blogjava.net/tw-ddm/articles/53499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tw-ddm/comments/commentRss/53499.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tw-ddm/services/trackbacks/53499.html</trackback:ping><description><![CDATA[
		<font size="2">   使用Myeclipse插件进行布署时遇到了错误，提示是“Tomcat JDK name”。不得其解，求助于网络，找到一篇关于这个问题的解决办法：<br />   引用：<a class="" title="" href="/ranxiang/articles/23158.html" target="_blank">冉翔的技术专栏</a><br /><br />   该篇文章提到了2种解决办法，经测试通过。也给了我一些思路。<br />按照这种结果我推断 问题应该是出在工作区的配置文件上，根据出错的提示该问题是由于Tomcat所用的JRE与工作区缺省配置的JRE不一致所致。当然这里所说的“JRE不一致”除了冉翔技术专栏上所提的JDK前后所用版本发生变动以外，还包括JRE所在位置的不同（因为俺一直都用的是1.4..2_05<img height="19" src="http://www.blogjava.net/Emoticons/regular_smile.gif" width="19" border="0" />），经过试验证实了这个推断。<br /><br />   除了引用中所提到的2种解决办法可行外，我另加种解决办法：<br /><br />   <strong>1.</strong>为Myeclipse插件的Application Server指定新的JRE。<br /><br />   <strong>2.</strong>修改缺省的JRE配置路径。<br /><br />   方法1（以Tomcat5为例)：<br />      点击eclipse 的菜单项目   窗口 -&gt; 首选项<br />      在MyEclipse -&gt; Application Servers中选择需要配置的应用服务器Tomcat5，选择应用服务器下的JDK，可以看到右边出现"Tomcat JDK name"项，点击右部按钮 "Add..."，弹出窗体中设置"JRE名称"(随便起了)，设置"JRE主目录"，设置为当前的JAVA_HOME所指向的位置，即JDK安装的目录。然后确定。<br />      <a class="" title="Tomcat JDK name" href="/tw-ddm/gallery/image/4411.html" target="_blank">示意图</a><br />      这时可见Tomcat5 的 Tomcat JDK name中使用的即是刚才所设置的JRE名称了，应用即可。<br /><br />   方法2：<br />      eclipse的窗口-&gt;首选项，在JAVA下可见一个"已安装的JRE"，选择它，右部可以看到所有的JRE库名称及位置，选择当前所使用的，编辑它，会弹出一个窗口（与方法1中窗口一样），修改一下JRE的主目录位置即可。<br /><br />   应该来说，添加新的JRE系统库，然后针对不同的App server使用不同的系统库。这种做法应该比直接修改缺省的JRE配置路径要好一些<img height="19" src="http://www.blogjava.net/Emoticons/teeth_smile.gif" width="19" border="0" />。</font>
<img src ="http://www.blogjava.net/tw-ddm/aggbug/53499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tw-ddm/" target="_blank">大大毛</a> 2006-06-17 19:04 <a href="http://www.blogjava.net/tw-ddm/articles/53499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>