﻿<?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-david database lab-文章分类-STRUTS</title><link>http://www.blogjava.net/javaex/category/35471.html</link><description>开放务实 热情奔放 不断进取</description><language>zh-cn</language><lastBuildDate>Wed, 24 Jun 2009 20:12:25 GMT</lastBuildDate><pubDate>Wed, 24 Jun 2009 20:12:25 GMT</pubDate><ttl>60</ttl><item><title>Struts1.x系列教程</title><link>http://www.blogjava.net/javaex/articles/283547.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Mon, 22 Jun 2009 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/283547.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/283547.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/283547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/283547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/283547.html</trackback:ping><description><![CDATA[1.http://blog.csdn.net/nokiaguy/archive/2009/01/13/3766308.aspx <br />
2.http://blog.csdn.net/nokiaguy/archive/2009/01/14/3772527.aspx <br />
3.http://blog.csdn.net/nokiaguy/archive/2009/01/15/3786503.aspx <br />
4.http://blog.csdn.net/nokiaguy/archive/2009/01/16/3793473.aspx <br />
5.http://blog.csdn.net/nokiaguy/archive/2009/01/16/3797879.aspx <br />
6.http://blog.csdn.net/nokiaguy/archive/2009/01/19/3835476.aspx <br />
7.http://blog.csdn.net/nokiaguy/archive/2009/01/19/3838344.aspx <br />
8.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/03/253022.html 9.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/07/253722.html 10.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/12/254421.html 11.http://www.blogjava.net/nokiaguy/archive/2009/02/14/254687.html 12.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/14/254688.html 13.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/16/254835.html 14.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/16/254916.html 15.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/18/255228.html 16.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/19/255383.html 17.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/19/255398.html 18.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/20/255819.html 19.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/23/256345.html 20.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/24/256426.html 21.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/24/256497.html 22.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/25/256711.html 23.http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/02/archive/2009/nokiaguy/archive/2009/02/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/archive/2009/02/27/257067.html 24.http://www.blogjava.net/nokiaguy/archive/2009/02/27/257076.html 
<img src ="http://www.blogjava.net/javaex/aggbug/283547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2009-06-22 13:30 <a href="http://www.blogjava.net/javaex/articles/283547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html:link 转自http://www.blogjava.net/xXx324423/archive/2006/12/27.html</title><link>http://www.blogjava.net/javaex/articles/283544.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Mon, 22 Jun 2009 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/283544.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/283544.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/283544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/283544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/283544.html</trackback:ping><description><![CDATA[<div style="font-size: 10pt" class="postbody">
<p>html:link有很多参数选项，如关键有：<br />
action --指定点击链接后，进入的*.do动作action的值不需要跟后缀，struts自动补上.do<br />
page&nbsp; -- 跟action一样的功能，不过这个不会自动补.do，也就是说可以链接其他类型的动作，如html,jsp,php等</p>
<p>paramId--指定参数的key名称，如要输出<a href="http://abc.com/ss?kk=abc">http://abc.com/ss?kk=abc</a>,则paramId="kk"<br />
paramName -- 能识别作用域(任意)内的Object的名称。<br />
paramProperty--paramName的输出属性，paramId,paramName ,paramProperty可以组成单一参数传递的link，如&lt;html:link&nbsp; action="/PRC301E1"&nbsp; paramId="prc_no" paramName="element" paramProperty="fjPrcNo"&gt;，当element.getfjPrcNo()的值为prc1时，则输出为 <a href="http://xxoo.com/PRC301E1.do?prc_no=prc1">http://xxoo.com/PRC301E1.do?prc_no=prc1</a></p>
<p>name--为HashMap属性的对象，用此属性，可以进行多参数输出。例：</p>
<p>CODE:<br />
[Copy to clipboard]<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap map=new HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.put("check","22");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.put("name","abc");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageContext.setAttribute("map",map); //因为所有tag的取值只会搜索作用域(page/request/session/application)，而不会识别当前的实例，所以只有存入。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html:link action="/PRC301E1"&nbsp; name="map"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多参数输出<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;</p>
<p>-----------------------------------------------------------------------------------------</p>
<p>在struts标签&lt;html:link&gt;的page属性指定的URI后面传递参数可以有几种方式： </p>
<p>1.若明确参数名和参数值则直接在URI后输出，<br />
如：&lt;html:link page="/test.do?action=add"&gt;add&lt;/html:link&gt;</p>
<p>2.对于参数值不确定的，paramName和paramProperty来输出，用paramId属性指定参数名。<br />
对于paramName指定的对象应该存在于page、request、session、application其中之一。一般来说，是从Action类传过来的，作为request的属性之一（requst.setAttribute("name",object)）。<br />
如果paramName指定的对象是action的ActionForm，则无需使用request.setAttribute方法。<br />
例：&lt;html:link page="/test.do" paramId="userid" paramName="uid"&gt;uname&lt;/html:link&gt;<br />
若参数值是一个bean对象的属性值（比如ActionForm,或者集合中存放的对象）则：<br />
&lt;html:link page="/test.do" paramId="userid" paramName="user" paramProperty="uid"&gt;uname&lt;/html:link&gt;</p>
<p>3.若两个参数，一个确定一个不确定，则是以上两种方法的结合，即：<br />
&lt;html:link page="/test.do?action=modify" paramId="userid" paramName="uid"&gt;modify&lt;/html:link&gt;</p>
<p>4.对于多个参数的问题，可以使用一个HashMap集合对象来存放所有的参数名及对应的参数值的方式，paramName属性值指定为该HashMap集合对象即可。<br />
举例：<br />
&lt;%<br />
//代码理想的位置应该是在action中<br />
//可以在jsp页面测试<br />
&nbsp; java.util.HashMap pms = new java.util.HashMap();<br />
&nbsp; pms.put("code", "001002");<br />
&nbsp; pms.put("name", "tester");<br />
&nbsp; pms.put("alias", new String[]{"matin","jack"});<br />
&nbsp; request.setAttribute("params", pms);<br />
%&gt;<br />
&lt;html:link action="/test.do" name="params" &gt;test&lt;/html:link&gt;<br />
编译后的结果：&lt;a href="/test.do?code=001002&amp;name=tester&amp;alias=matin&amp;alias=jack"&gt;test&lt;/a&gt;<br />
这种方式虽然可以解决传多参数的问题，但是实现起来也比较麻烦，特别是对记录集中的数据逐条列出的时候</p>
<p>5.针对有的网友在&lt;html:link&gt;标签中嵌入使用jsp脚本(scriptlet)的问题，<br />
例如:<br />
&lt;html:link page="/test.do?code=&lt;%=varible%&gt;"&gt;add&lt;/html:link&gt;，这种写法是错误的，是无法编译的。<br />
有的网友认为在struts标签内是不允许使用jsp脚本的，这种说法也不准确。如果前面的写法改成:<br />
&lt;html:link page="&lt;%="/test.do?code="+varible%&gt;"&gt;add&lt;/html:link&gt;，就可以被执行，但是要注意URL相对路径的问题。</p>
<p>虽然在struts标签中嵌入jsp脚本不是真正意义上的struts应用，但是有时在委曲求全的情况下也只能如此了，除非使用自定义标签。比如在form表单中可能需要根据具体数据让某个字段是只读的，就可以用嵌入jsp脚本来实现：<br />
&lt;%<br />
boolean rdonly=false;<br />
if(2==2) rdonly=true;<br />
%&gt;<br />
&lt;html:text property="userid" readonly="&lt;%=rdonly%&gt;" /&gt; <br />
</p>
<p>6.另外一种比较变态的方法，既不是真正意义上的struts，也不符合xml规范。那就是在&lt;a&gt;标签中用&lt;bean:write&gt;标签输出参数值。<br />
如：&lt;a href="test.do?uid=&lt;bean:write name="user" property="userid"/&gt;&amp;name=&lt;bean:write name="user" property="username"/&gt;"&gt;test&lt;/a&gt;</p>
</div>
<img src ="http://www.blogjava.net/javaex/aggbug/283544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2009-06-22 13:11 <a href="http://www.blogjava.net/javaex/articles/283544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转）Struts -- html:link 标签的使用</title><link>http://www.blogjava.net/javaex/articles/283542.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Mon, 22 Jun 2009 04:59:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/283542.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/283542.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/283542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/283542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/283542.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">&lt;html:link&gt; 标签用于生成HTML &lt;a&gt; 元素。&lt;html:link&gt; 在创建超链接时，有两个优点：<br />
(1) 允许在URL 中以多种方式包含请求参数。<br />
(2) 当用户浏览器关闭Cookie 时，会自动重写URL，把SessionID 作为请求参数包含在URL 中，用于跟踪用户的Session 状态。</span></p>
<p><span style="font-size: 10pt">&lt;html:link&gt; 标签有以下重要属性：<br />
(1) forward：指定全局转发链接。<br />
(2) href：指定完整的URL 键接。<br />
(3) page：指定相对于当前网页的URL。</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html:rewrite&gt; 用于输出超链接中的URI部分，但它并不生成HTML &lt;a&gt; 元素。URI指的是URL 中协议、主机和端口以后的内容。URI 用于指定具体的请求资源。例如，对于URL：HTTP：//localhost:8080/HtmlBasic.do，它的URI为/HtmlBasic.do</span></p>
<p><span style="font-size: 10pt">示例：<br />
1、创建全局转发链接<br />
&nbsp;&nbsp;&nbsp; 首先，在Struts-config.xml 中&lt;global-forwards&gt; 元素中定义一个&lt;forward&gt; 元素：<br />
&nbsp;&nbsp;&nbsp; &lt;global-forwards&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name = "index" path="/index.jsp"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/global-forwards&gt;<br />
&nbsp;&nbsp;&nbsp; 接着，在JSP 文件中创建&lt;html:link&gt; 标签：<br />
&nbsp;&nbsp;&nbsp; &lt;html:link forward="index"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link to Global ActionForward<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;html:link&gt; 标签的forward 属性和&lt;global-forwards&gt; 元素中的&lt;forward&gt; 子元素匹配。以上代码生成如下HTML 内容：<br />
&nbsp;&nbsp;&nbsp; &lt;a href="/index.jsp"&gt;Link to Global ActionFoward&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp; 值得注意的是，&lt;html:link&gt; 的forward 属性只引用Struts-config.xml 配置文件中&lt;global-forwards&gt;内的&lt;forward&gt; 子元素，如果引用&lt;action&gt; 内的&lt;forward&gt; 子元素，在运行时将会抛出异常：<br />
&nbsp;&nbsp;&nbsp; Cannot create rewrite URL: Java.Net.MalfomedURlException: Cannot retrieve ActionForward</span></p>
<p><span style="font-size: 10pt">2、创建具有完整URL 的链接<br />
&nbsp;&nbsp;&nbsp; 如果Web 应用需要链接到其他站点，应该给出其他站点完整ＵＲＬ，例如：<br />
&nbsp;&nbsp;&nbsp; &lt;html:link href="http://jakarta.apache.org/struts/index.html"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generate an "href" directly<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; 生成HTML 代码如下：<br />
&nbsp;&nbsp;&nbsp; &lt;a href="http://jakarta.apache.org/struts/index.html"&gt;Generate an "href" directly&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp; 值得注意的是，如果指定了&lt;html:link&gt; 标签的href 属性，即使用户浏览器的Cookie 关闭，&lt;html:link&gt; 标签也不会把用户SessionID 作为请求参数加和到URL 中。</span></p>
<p><span style="font-size: 10pt">3、从当前网页中创建相对URL<br />
&nbsp;&nbsp;&nbsp; 如果从一个网页链接到同一个应用中的另一网页，可以采用以下方式：<br />
&nbsp;&nbsp;&nbsp; &lt;html:link page="/HtmlBasic.do"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A relative link from this page<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;html:link&gt; 标签的 page 属性用于指定相对于当前应用的URI。以上代码生成如下HTML 内容：<br />
&nbsp;&nbsp;&nbsp; &lt;a href="/lib/HtmlBasic.do"&gt;......&lt;/a&gt;</span></p>
<p><span style="font-size: 10pt">4、在URL 或 URI 中包含请求参数<br />
&nbsp;&nbsp;&nbsp; 如果要在URL或URI 中包含请求参数，只要把请求参数加在URL 或 URI的末尾就可以了。例如：<br />
&nbsp;&nbsp;&nbsp; &lt;html:link page="/HtmlBasic.do?prop1=abc&amp;amp;prop2=123"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hard-code the url parameters<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- or --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;html:rewrite page="/HtmlBasic.do?prop1=abc&amp;amp;prop2=123"/&gt;<br />
&nbsp;&nbsp;&nbsp; 以上代码生成如下HTML 内容：<br />
&nbsp;&nbsp;&nbsp; &lt;a href=/lib/HtmlBasic.do?prop1=abc&amp;amp;prop2=123"&gt;......&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp; rewrite: /HtmlBasic.do?prop1=abc&amp;amp;prop2=123</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; 提示：在HTML 中&amp;amp 代表特殊字符 "&amp;"</span></p>
<p><span style="font-size: 10pt">5、在URL 或 URI 中包含单个请求变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要在URL 中包含一个请求参数，而这人参数的值存在于当前网页可访问的一个变量中，可以按以下方法来实现。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了演示这一功能，首先创建一个当前网页可访问的变量。例如，本例中创建了两个变量，一个是字符类型，一个是CustomerBean ， 它们存存于一个 page 范围内：<br />
&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Create a string object to store as a bean in<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * the page content and embed in this link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String stringBean = "Value to Pass ont URL";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageContext.setAttribute("stringBean", stringBean);<br />
&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;jsp:useBean id = "customerBean" scope="page" class="htmltaglibs.beans.CurstomerBean"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;jsp:setProperty name="customerBean" property="name" value="weiqin"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着，把这两个变量作为请求参数，加入到URL或URI 中：<br />
&nbsp;&nbsp;&nbsp; &lt;html:link page="/HtmlBasic.do"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramId="urlParamName"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramName="stringBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL encode a parameter based on a string bean value<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;html:link page="/HtmlBasic.do"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramId="urlParamName"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramName="customerBean"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramProperty="name"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL encode a parameter based on a customer bean value<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; rewrite: &lt;html:rewrite page="/HtmlBasic.do"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramId="urlParamName" paramName="stringBean"/&gt;<br />
&nbsp;&nbsp;&nbsp; rewrite: &lt;html:rewrite page="/HtmlBasic.do"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramId="urlParamName" paramName="customerBean"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramProperty="name"/&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; &lt;html:link&gt; 标签的 paramId 属性指定请求参数名，paramName 属性指定变量的名字。如果变量为JavaBean ，用paramProperty 属性指定JavaBean 的属性。<br />
&nbsp;&nbsp;&nbsp; 对于本例的stringBean，请求参数值为stringBean 的字符串值。对于customerBean，指定了paramProperty 属性，请求参数值为customerBean 的 name 属性值。<br />
&nbsp;&nbsp;&nbsp; 以上代码生成如下HTML 内容：<br />
&nbsp;&nbsp;&nbsp; &lt;a href="/HtmlBasic.do?urlParamName=Value to Pass on Url"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Url encode a paramter based on a string bean value<br />
&nbsp;&nbsp;&nbsp; &lt;/a&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; &lt;a href="/HtmlBasic.do?urlParamName=weiqin"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url encode a parameter based on a customer bean value<br />
&nbsp;&nbsp;&nbsp; &lt;/a&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; rewrite: /HtmlBasic.do?urlParamName=Value to Pass on Url<br />
&nbsp;&nbsp;&nbsp; rewrite: /HtmlBasic.do?urlParamName=weiqin<br />
6、在URL 或 URI 中包含多个请求变量<br />
&nbsp;&nbsp;&nbsp; 如果在URL 或 URI 中包含多个请求参数，而这些参数的值来自多个变量，需要先定义一个Map类型的java 类，如java.util.HashMap，用它来存放请求变量。例如：<br />
&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Strore values int a Map(HashMap in this case)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * and construct the URL based on the Map<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * /<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.util.HashMap myMap = new java.util.HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myMap.put("myString", new String("myStringValue"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myMap.put("myArray" , new String[]{"str1","str2","str3"} );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageContext.setAttribute("map", myMap);<br />
&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp;&nbsp; 在以上代码的HaspMap 中存放了两个对象，其中第二个对象是个字符串数组。HashMap 被存放在PageContext 中。 接下来就可以把这个HashMap 作为请求参数，加入到URL 或 URI 中：<br />
&nbsp;&nbsp;&nbsp; &lt;%-- For this version of the &lt;html:link&gt; tag: --%&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%-- map = a map with name/value pairs to pass on the url --%&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;html:link page="/HtmlBasic.do" name="map"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL encode a parameter based on value in a Map<br />
&nbsp;&nbsp;&nbsp; &lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%-- Create the same rewrite string for the above link. --%&gt;<br />
&nbsp;&nbsp;&nbsp; rewrite:&lt;html:rewrite page="/HtmlBasic.do" name="map"/&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; &lt;html:link&gt; 标签的name 属性指定包含请求变量的HashMap 对象。HashMap 对象中的每一对"key/value" 代表一对或多对"请求参数名/请求参数值"。以上代码生成如下的Html 内容：<br />
&nbsp;&nbsp;&nbsp; &lt;a href="/HtmlBasic.do?myString=myStringValue&amp;amp;myArray=str1&amp;amp;myArray=str2&amp;amp;myArray=str3"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL encode a parameter based on value in a Map<br />
&nbsp;&nbsp;&nbsp; &lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; rewrite:/HtmlBasic.do?myString=myStringValue&amp;amp;myArray=str1&amp;amp;myArray=str2&amp;amp;myArray=str3</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/dongfengpaopao666/archive/2008/01/05/2027055.aspx</span></p>
<img src ="http://www.blogjava.net/javaex/aggbug/283542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2009-06-22 12:59 <a href="http://www.blogjava.net/javaex/articles/283542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts数据库连接</title><link>http://www.blogjava.net/javaex/articles/239243.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Fri, 07 Nov 2008 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/239243.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/239243.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/239243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/239243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/239243.html</trackback:ping><description><![CDATA[step1. 添加包<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commons-collections-3.1.jar&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commons-dbcp-1.2.1.jar&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commons-pool-1.2.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ojdbc14.jar<br />
<br />
step2. 创建Action<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得servlet上下文<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext ctx = servlet.getServletContext();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得数据源<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSource ds = (DataSource) ctx.getAttribute("DataSource");&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得数据连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn =ds.getConnection();<br />
<br />
step4. 配置struts-config.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>&lt;struts-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;data-sources&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;data-source key="DataSource" type="org.apache.commons.dbcp.BasicDataSource"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-property property="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-property property="username" value="scott"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set-property property="password" value="tiger"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/data-source&gt;</p>
<p>&lt;/data-sources&gt;</p>
<img src ="http://www.blogjava.net/javaex/aggbug/239243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2008-11-07 13:58 <a href="http://www.blogjava.net/javaex/articles/239243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts标签使用举例--logic篇_转</title><link>http://www.blogjava.net/javaex/articles/236385.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Fri, 24 Oct 2008 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/236385.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/236385.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/236385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/236385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/236385.html</trackback:ping><description><![CDATA[1.&nbsp; logic:empty
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该标签是用来判断是否为空的。如果为空，该标签体中嵌入的内容就会被处理。该标签用于以下情况：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1）当Java对象为null时；</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2）当String对象为""时； </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3）当java.util.Collection对象中的isEmpty()返回true时；</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4）当java.util.Map对象中的isEmpty()返回true时。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eg.&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:empty &nbsp; name="userList"&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/logic:empty&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该句等同于：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if &nbsp; (userList.isEmpty()) &nbsp; &nbsp;&nbsp;&nbsp;<br />
<strong>&nbsp;&nbsp; <font color="#ff0000">2.&nbsp; logic:notEmpty</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签的应用正好和logic:empty标签相反，略。<br />
<strong>&nbsp;&nbsp;<font color="#ff0000"> 3. logic:equal</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签为等于比较符。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg1.&nbsp;比较用户的状态属性是否1，若为1，输出"启用";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:equal &nbsp; name="user" &nbsp; property="state" &nbsp; value="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/logic:equal&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg2.&nbsp;如果上例中的value值是动态获得的，例如需要通过bean:write输出，因struts不支持标签嵌套，可采用EL来解决该问题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:equal &nbsp; name="charge" &nbsp; property="num" &nbsp; value="$"&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/logic:equal&gt;<br />
<font color="#ff0000">&nbsp;</font><strong><font color="#ff0000">&nbsp;&nbsp;&nbsp;4. logic:notEqual</font><br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该标签意义与logic:equal相反，使用方法类似，略。<br />
<strong>&nbsp;&nbsp;&nbsp;<font color="#ff0000">&nbsp;5. logic:forward<br />
</font></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签用于实现页面导向，查找配置文件的全局forward。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg. &lt;logic:forward name="index"/&gt;<br />
<strong>&nbsp;&nbsp;&nbsp; <font color="#ff0000">6. logic:greaterEqual</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为大于等于比较符。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg.&nbsp;当某学生的成绩大于等于90时，输出&#8220;优秀&#8221;：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:greaterEqual name="student" property="score" value="90"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;优秀<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:greaterEqual&gt; <font size="3"><font color="#000000" size="2"><br />
<strong>&nbsp;&nbsp;&nbsp; <font color="#ff0000">7. logic:greaterThan</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></font> 此为大于比较符，使用方法同logic:greaterEqual，略;<br />
<font size="3"><font color="#000000" size="2"><strong><font color="#ff0000">&nbsp;&nbsp;&nbsp; 8. logic:lessEqual</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font>此为小于等于比较符，使用方法同logic:greaterEqual,略;<font size="3"><font color="#000000" size="2"><br />
<strong>&nbsp;&nbsp;&nbsp;<font color="#ff0000"> 9. logic:lessThan</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font>此为小于比较符，使用方法同logic:greaterEqual,略;<font size="3"><font color="#000000" size="2"><br />
<strong>&nbsp;&nbsp;<font color="#ff0000">&nbsp; 10. logic:match</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font>此标签比较对象是否相等；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg1. 检查在request范围内的name属性是否包含"amigo"串：&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:match name="name" scope="request" value="amigo"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="name"/&gt;中有一个&#8220;amigo&#8221;串。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:match&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg2. 检查在request范围内的name属性是否已&#8220;amigo&#8221;作为起始字符串：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:match name="name" scope="request" value="amigo" location="start"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="name"/&gt;以&#8220;amigo&#8221;作为起始字符串。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:match&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg3.&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:match header="user-agent" value="Windows"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你运行的是Windows系统<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:match&gt;<br />
<strong><font color="#000000" size="2"><font size="3"><font color="#ff0000">&nbsp;&nbsp;&nbsp; </font></font></font><font color="#ff0000">11. &nbsp;logic:notMatch</font></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此标签用于比较对象是否不相同，与logic:match意义相反，使用方法类似，略。<br />
<font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp; <strong>12. logic:messagePresent</strong></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签用于判断ActionMessages/ActionErrors对象是否存在；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg.&nbsp;如果存在error信息，将其全部输出：<br />
<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:messagePresent property="error"&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:messages property="error" id="errMsg" &gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="errMsg"/&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/html:messages&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:messagePresent &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000"><strong>13. logic:messagesNotPresent</strong></font><br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似，略<br />
<strong><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14. logic:present</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此标签用于判断request对象传递参数是否存在。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;eg1. user对象和它的name属性在request中都存在时，输出相应字符串：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:present name="user" property="name"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user对象和该对象的name属性都存在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:present&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg2. 若有一个名字为&#8220;user&#8221;的JavaBean，输出对应字符串：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:present name="user" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有一个名字为&#8220;user&#8221;的JavaBean。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:present&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eg3.&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:present header="user-agent"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;we got a user-agent header.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:present&gt;<br />
&nbsp;&nbsp;<strong>&nbsp;&nbsp;&nbsp; <font color="#ff0000">15. logic:notPresent</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此标签用于判断request对象传递参数是否不存在，意义与了logic:present相反，使用方法类似，略。<br />
&nbsp;&nbsp;<strong>&nbsp;&nbsp;<font color="#ff0000">&nbsp; 16. logic:redirect</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该标签用于实现页面转向，可传递参数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg1. &lt;logic:redirect href="<u><font color="#638f27">http://<u><font color="#638f27">www.chinaitlab</font></u>.com"/</font></u>&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">17. logic:iterator</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用于显示列表为collection的值（List ,ArrayList,HashMap等）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg1.&nbsp;逐一输出用户列表(userlList)中用户的姓名：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate&nbsp; id="user" name="userList"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="user" property="name"/&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg2.&nbsp;从用户列表中输出从1开始的两个用户的姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate&nbsp; id="user" name="userList" indexId="index"&nbsp; offset="1" length="2"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="index"/&gt;.&lt;bean:write name="user" property="name"/&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg3. logic:iterator标签的嵌套举例<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;logic:iterate id="user" indexId="index" name="userList"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="index"/&gt;. &lt;bean:write name="user" property="name"/&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="address" name="user" property="addressList" length="3" offset="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="address"/&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;</p>
 <img src ="http://www.blogjava.net/javaex/aggbug/236385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2008-10-24 13:25 <a href="http://www.blogjava.net/javaex/articles/236385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html:errors标签与ActionMessage和Struts资源文件指南_转</title><link>http://www.blogjava.net/javaex/articles/235934.html</link><dc:creator>javaex</dc:creator><author>javaex</author><pubDate>Wed, 22 Oct 2008 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/javaex/articles/235934.html</guid><wfw:comment>http://www.blogjava.net/javaex/comments/235934.html</wfw:comment><comments>http://www.blogjava.net/javaex/articles/235934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaex/comments/commentRss/235934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaex/services/trackbacks/235934.html</trackback:ping><description><![CDATA[<div class="item-content"><span style="font-size: 10pt">在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息，错误信息一般来自于消息资源文件（xxx．properties文件，一般位于classes目录下，文本文件），当然错误信息也可以是不是资源文件中的文本消息，而是自定义的文本。接下来将详细讲述。 </span>
<p><span style="font-size: 10pt">　　先来看一个简单例子</span></p>
<p><span style="font-size: 10pt">1、资源文件错误信息来源(其格式为 <font color="#ff0000" size="4">key = value</font> )<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <font color="#3366ff" size="4">error.test</font> = this is a test error.</span></p>
<p><span style="font-size: 10pt">2、JSP页面中用于显示错误信息标签<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; &lt;html:errors <font color="#ff0000" size="4">property</font>="<font color="#ff0000" size="4">testerror</font>"/&gt;</span></p>
<p><span style="font-size: 10pt">3、ActionFormBean的validate()方法中产生错误信息</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp; ActionErrors error = new ActionErrors();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp; error.add("<font color="#ff0000" size="4">testerror</font>",new ActionMessage("<font color="#3366ff" size="4">error.test</font>"))<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; return error;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　这个例子的功能就是在ActionForm Bean的validate()方法中产生一条名为：<font color="#ff0000">testerror</font>的错误信息，错误信息息是资源文件中key为<font color="#3366ff">error.test</font>的值。然后在页面上用html:errors标签输出t<font color="#ff0000">esterror</font>这条错误信息。</span></p>
<p><span style="font-size: 10pt">　　这是最常用的一种功能，所有的错误信息都在资源文件里面。</span></p>
<p><span style="font-size: 10pt">　　有人会问，错误信息只能存放在资源文件中吗，其实不是这样。<font color="#0000ff" size="3"><strong>不需要资源文件也可以产生错误信息</strong></font>。</span></p>
<p><span style="font-size: 10pt">　　我们再来看一下ActionMessage的另一种构造方法:</span></p>
<p><span style="font-size: 10pt">　　<font color="#000080" size="4">ActionMessage(<font color="#ff00ff">String</font> key,<font color="#ff00ff">boolean</font> isresource)</font></span></p>
<p><span style="font-size: 10pt">　　如果isresource值为true,则表示key是资源文件中的key，产生的消息就是与key相对应的消息<br />
　　如果isresource值为<font color="#ff0000" size="4">false</font>,<font color="#0000ff">则表示key为一条普通的消息。</font></span></p>
<p><span style="font-size: 10pt">　　如果上面的error.add改为error.add("testerror",<font color="#ff0000">new ActonMessage</font>("<font color="#0000ff">这是一条自定义消息",<font color="#ff0000">false</font></font>",));那么页面上显示的将是：这是一条自定义消息.</span></p>
<p><br />
<span style="font-size: 10pt">　　另外还可以用ActionMessage产生复合消息，比如我们要输出：xxx不能用作用户名，其中xxx是一个变量。</span></p>
<p><span style="font-size: 10pt">　　首先我们在资源文件中加一个条复合消息</span></p>
<p><span style="font-size: 10pt">　　<font color="#3366ff" size="3">testmsg </font>=<font color="#ff0000" size="4"> {0}</font>不能用作用户名。这里<font color="#ff0000" size="4">{0}</font>是要被替换的参数。</span></p>
<p><span style="font-size: 10pt">　　我们再来看一下ActionMessage的另一中构造方法<br />
　　<font color="#0000ff">ActionMessage<font color="#0000ff">(String key,Object value0);</font></font></span></p>
<p><span style="font-size: 10pt">　　也就是说用<font color="#ff0000">value0</font>的值来替换<font color="#ff0000">{0}</font></span></p>
<p><span style="font-size: 10pt">　　我们修改error.add为error.add("testerror",<font color="#ff0000">new ActonMessage(<font color="#3366ff" size="3"><strong>"testmsg"</strong></font><font size="4">,</font><font color="#0000ff" size="3"><strong>"孙中山"</strong></font></font><font color="#ff0000">)</font>)</span></p>
<p><span style="font-size: 10pt">　　那么JSP页面上将显示：毛泽东不能用作用户名。</span></p>
<p><br />
<span style="font-size: 10pt">　　当然在一条复合消息中也可带多个参数，参数依次为</span><span style="font-size: 10pt"><font color="#0000ff" size="3">{0},{1},{2}或更多<br />
</font>　　例如：</span><span style="font-size: 10pt"><font color="#3366ff" size="4">loginUser = 用户名:{0} 姓名:{1} 登录次数:{2}.....<br />
</font>　　那么在产生错误消息时就用new ActionMessage(String key,Object value0,Object value1,Object&nbsp; value2.....)或者使用对象数组new ActionMessage(String key,Object[] values)<br />
　　</span></p>
<p><font size="4"><span style="font-size: 10pt">　　</span><span style="font-size: 10pt">String[] detail = {"Admin","王晶","12"};<br />
　　error.add("testerror",new ActionMessage("loginUser",detail))<br />
</span></font><br />
</p>
</div>
<span style="font-size: 10pt">
<hr />
Note：<br />
<br />
<font color="#ff0000"><strong>Cannot find message resources under key org.apache.struts.action.MESSAGE&nbsp; 错误</strong></font>的原因是没有配置资源文件<br />
<br />
解决办法： 在struts-config.xml 中加入如下的一段<br />
<br />
&lt;message-resources parameter="application" null="false"&gt;&lt;/message-resources&gt;<br />
</span>
 <img src ="http://www.blogjava.net/javaex/aggbug/235934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaex/" target="_blank">javaex</a> 2008-10-22 14:22 <a href="http://www.blogjava.net/javaex/articles/235934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>