﻿<?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-紫蝶∏飛揚↗-文章分类-JSP</title><link>http://www.blogjava.net/algz/category/43410.html</link><description>Purple Butterfly Flying
QQ群:7101519
Flex,Ext,Spring,Hibernate,EOS,SpringSecurity,Struts
http://algz.googlecode.com/svn/trunk/</description><language>zh-cn</language><lastBuildDate>Sat, 18 Jun 2011 03:08:01 GMT</lastBuildDate><pubDate>Sat, 18 Jun 2011 03:08:01 GMT</pubDate><ttl>60</ttl><item><title>在spring的bean中获取ServletContext 和 servletConfig</title><link>http://www.blogjava.net/algz/articles/352560.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Sat, 18 Jun 2011 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/352560.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/352560.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/352560.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/352560.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/352560.html</trackback:ping><description><![CDATA[<div><div>在spring的bean中获取ServletContext 和&nbsp;servletConfig</div><div></div><div>&nbsp;&nbsp;常规方式下获取servletContext需要继承HttpServlet类，然后获取servletConfig，通过这个获取servletContext（servletConfig.getServletContext()）。</div><div></div><div>&nbsp;&nbsp;但是spring的bean都是pojo，和我们常规的操作有些不同。</div><div></div><div>spring给我们提供了两个接口：org.springframework.web.context.ServletContextAware和org.springframework.web.context.ServletConfigAware。我们可以让我们的bean实现上边的任何一个接口就能获取到servletContext了 .</div><div></div><div>代码如下：</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;DicBean&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;ServletContextAware{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;ServletContext&nbsp;servletContext;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setServletContext(ServletContext&nbsp;sc)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.servletContext</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sc;<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">项目应用的绝对路径为：</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">servletContext.getRealPath(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />}<br />}</span></div></div><div></div></div><img src ="http://www.blogjava.net/algz/aggbug/352560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2011-06-18 09:44 <a href="http://www.blogjava.net/algz/articles/352560.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM4J 知识详解</title><link>http://www.blogjava.net/algz/articles/338767.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Tue, 23 Nov 2010 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/338767.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/338767.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/338767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/338767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/338767.html</trackback:ping><description><![CDATA[<p>一.Document对象,三种创建方法</p>
<p>1.<span style="color: #99cc00">读取XML文件</span>,获得document对象.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXReader reader = new SAXReader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document&nbsp; document = <span style="color: #99cc00">reader.read(new File("input.xml"));</span></p>
<p>2.解析<span style="color: #99cc00">XML格式的字符串</span>,获得document对象.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text = "&lt;members&gt;&lt;/members&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document document = <span style="color: #99cc00">DocumentHelper.parseText(text);</span><br />
3.<span style="color: #99cc00">创建document空对象</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document document = <span style="color: #99cc00">DocumentHelper.createDocument();</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element&nbsp; root = document.addElement("members");// 创建根节点,只有空DOCUMENT对象才能创建ROOT结点</p>
<br />
二.节点控制
<p>1.获取文档的<span style="color: #99cc00">根节点</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element &nbsp; root = document.<span style="color: #99cc00"><span style="color: #99cc00">getRootElement()</span></span>;<br />
2.取得节点的文本<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text=memberElm.<span style="color: #99cc00">getText</span>();<br />
也可以用：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text=root.<span style="color: #99cc00">elementText</span>("name");&nbsp;&nbsp; //这个是取得根节点下的name字节点的文字;可以类推任何节点下的文本<br />
3.设置节点文字.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ageElm.<span style="color: #99cc00">setText</span>("29");<br />
4.父节点下<span style="color: #99cc00">获得单个子节点对象</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element memberElm=root.<span style="color: #99cc00">element</span>("member");&nbsp; // "member"是节点名</p>
<p>5.取得父节点下<span style="color: #99cc00">遍历名为"member"的所有子节点</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List nodes = rootElm.<span style="color: #99cc00">elements</span>("member");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator it = nodes.iterator(); it.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element elm = (Element) it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // do something<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
6.父节点下的<span style="color: #99cc00">遍历所有子节点</span>进行.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Iterator it=root.<span style="color: #99cc00">elementIterator</span>();it.hasNext();){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element element = (Element) it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // do something<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
7.父节点下<span style="color: #99cc00">添加子节点</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element ageElm = newMemberElm.<span style="color: #99cc00">addElement</span>("age");<br />
<br />
8.父节点下<span style="color: #99cc00">删除</span><span style="color: #99cc00">子节点</span>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentElm.<span style="color: #99cc00">remove</span>(childElm);// childElm是待删除的节点,parentElm是其父节点<br />
<br />
三.属性相关.<br />
1.取得某节点下的某属性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root=document.getRootElement();&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute attribute=root.attribute("size");// 属性名name<br />
2.取得属性的文字<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text=attribute.getText();<br />
也可以用:<br />
String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值. </p>
<p>3.遍历某节点的所有属性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root=document.getRootElement();&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Iterator it=root.attributeIterator();it.hasNext();){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute attribute = (Attribute) it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text=attribute.getText();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(text);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
4.设置某节点的属性和文字.<br />
newMemberElm.addAttribute("name", "sitinspring");<br />
5.设置属性的文字<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute attribute=root.attribute("name");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute.setText("sitinspring");<br />
6.删除某属性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute attribute=root.attribute("size");// 属性名name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.remove(attribute);<br />
四.将文档写入XML文件.<br />
1.文档中全为英文,不设置编码,直接写入的形式.<br />
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));<br />
writer.write(document);<br />
writer.close();<br />
2.文档中含有中文,设置编码格式写入的形式.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputFormat format = OutputFormat.createPrettyPrint();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding("GBK");&nbsp;&nbsp;&nbsp; // 指定XML编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.write(document);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.close();<br />
五.字符串与XML的转换<br />
1.将字符串转化为XML<br />
String text = "&lt;members&gt; &lt;member&gt;sitinspring&lt;/member&gt; &lt;/members&gt;";<br />
Document document = DocumentHelper.parseText(text);<br />
2.将文档或节点的XML转化为字符串.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXReader reader = new SAXReader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document&nbsp; document = reader.read(new File("input.xml"));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root=document.getRootElement();&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; String docXmlText=document.asXML();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String rootXmlText=root.asXML();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element memberElm=root.element("member");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String memberXmlText=memberElm.asXML();<br />
六.使用XPath快速找到节点.<br />
读取的XML文档示例<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;projectDescription&gt;<br />
&nbsp; &lt;name&gt;MemberManagement&lt;/name&gt;<br />
&nbsp; &lt;comment&gt;&lt;/comment&gt;<br />
&nbsp; &lt;projects&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;project&gt;PRJ1&lt;/project&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;project&gt;PRJ2&lt;/project&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;project&gt;PRJ3&lt;/project&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;project&gt;PRJ4&lt;/project&gt;<br />
&nbsp; &lt;/projects&gt;<br />
&nbsp; &lt;buildSpec&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;buildCommand&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;org.eclipse.jdt.core.javabuilder&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arguments&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/arguments&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/buildCommand&gt;<br />
&nbsp; &lt;/buildSpec&gt;<br />
&nbsp; &lt;natures&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;nature&gt;org.eclipse.jdt.core.javanature&lt;/nature&gt;<br />
&nbsp; &lt;/natures&gt;<br />
&lt;/projectDescription&gt;</p>
<p>使用XPath快速找到节点project.<br />
&nbsp;public static void main(String[] args){<br />
&nbsp;&nbsp;&nbsp; SAXReader reader = new SAXReader();<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document&nbsp; doc = reader.read(new File("sample.xml"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List projects=<span style="color: #99cc00">doc.selectNodes</span>("/projectDescription/projects/project");<br />
<span style="color: #339966">&nbsp;&nbsp;&nbsp;&nbsp; //Element nodes0=xmlDoc.selectSingleNode("/bookstore"); //采用相对路径,即当前结点(包括当前结点)开始查找,与下列结果相同.<br />
&nbsp;&nbsp;&nbsp;&nbsp; //Element nodes=nodes0.selectNodes("book");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;////采用绝对路径,即当前结点(包括当前结点)开始查找,<br />
&nbsp;&nbsp;&nbsp;&nbsp; //XPATH语法详见:&nbsp;<a href="http://www.w3school.com.cn/xpath/xpath_syntax.asp"><span style="color: #339966"><a href="http://www.w3school.com.cn/xpath/xpath_syntax.asp">http://www.w3school.com.cn/xpath/xpath_syntax.asp</a></span><br />
</a></span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator it=projects.iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(it.hasNext()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element elm=(Element)it.next();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(elm.getText());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch(Exception ex){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }</p>
<img src ="http://www.blogjava.net/algz/aggbug/338767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-11-23 11:35 <a href="http://www.blogjava.net/algz/articles/338767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS函数 验证日期合法(测试通过)</title><link>http://www.blogjava.net/algz/articles/335682.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Wed, 20 Oct 2010 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/335682.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/335682.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/335682.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/335682.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/335682.html</trackback:ping><description><![CDATA[<p>&lt;script type="text/javascript"&gt;<br />
&nbsp;alert("2008-05-11是日期吗?答:"+isDateFormat("2008-05-11"));<br />
<br />
&nbsp;function isDateFormat(txt){ //是否为合法的日期格式:YYYY-MM-DD<br />
if(txt==null || txt == ""){return false;}<br />
else{<br />
&nbsp;&nbsp; var regex = /[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2}/;&nbsp;&nbsp; //可按具体格式修改<br />
&nbsp;&nbsp; if( regex.test(txt) ){<br />
&nbsp;&nbsp;&nbsp; var noArr = txt.split("-");<br />
&nbsp;&nbsp;&nbsp; var year = eval(noArr[0]);<br />
&nbsp;&nbsp;&nbsp; var month = eval(noArr[1]);<br />
&nbsp;&nbsp;&nbsp; var day = eval(noArr[2]);<br />
&nbsp;&nbsp;&nbsp; if ( year &lt; 1 || month &lt; 1 || month &gt; 12 || day &lt; 1 || day &gt; 31) {return false;}<br />
&nbsp;&nbsp;&nbsp; if ((month == 4 || month == 6 || month == 9 || month == 11) &amp;&amp; day &gt; 30){return false;}<br />
&nbsp;&nbsp;&nbsp; if (month == 2){<br />
&nbsp;&nbsp;&nbsp;&nbsp; if ((year % 4 != 0) &amp;&amp; day &gt; 29) { return false;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; if (year % 4 == 0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(year % 100 == 0 &amp;&amp; year % 400 != 0 &amp;&amp; day &gt; 29){return false;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (day &gt; 28){ return false;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp; }else{return false;}<br />
}<br />
}</p>
<p>&nbsp;<br />
&lt;/script&gt;</p>
<img src ="http://www.blogjava.net/algz/aggbug/335682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-10-20 13:38 <a href="http://www.blogjava.net/algz/articles/335682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EOS 解决STRUTS标签不能嵌套的问题</title><link>http://www.blogjava.net/algz/articles/333235.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Tue, 28 Sep 2010 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/333235.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/333235.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/333235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/333235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/333235.html</trackback:ping><description><![CDATA[<p>EOS提供了&lt;l:iterator/&gt;标签，可以对数组集合进行迭代。<br />
iterate标签的实现原理是对数组或集合进行迭代，每次把子元素放在page数据区指定的节点下。这个节点名称由iterate标签的id</p>
<p>属性来指定。<br />
&lt;%=&nbsp; ((DataObject)pageContext.getAttribute("id1")).getString("paramDictname") %&gt;</p>
<img src ="http://www.blogjava.net/algz/aggbug/333235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-09-28 15:34 <a href="http://www.blogjava.net/algz/articles/333235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS控制的页面回退</title><link>http://www.blogjava.net/algz/articles/333027.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Mon, 27 Sep 2010 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/333027.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/333027.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/333027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/333027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/333027.html</trackback:ping><description><![CDATA[JS返回函数<br />
onclick="javascript:history.go(-1);"
<img src ="http://www.blogjava.net/algz/aggbug/333027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-09-27 10:11 <a href="http://www.blogjava.net/algz/articles/333027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP常用的取相对路径</title><link>http://www.blogjava.net/algz/articles/333025.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Mon, 27 Sep 2010 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/333025.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/333025.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/333025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/333025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/333025.html</trackback:ping><description><![CDATA[相对路径<br />
http://127.0.0.1:8090/eos-default/dataset/taskdistribute/taskdistribute.jsp<br />
var str="&lt;%=request.getContextPath()%&gt;"+"/dataset/taskdistribute/taskdistribute.jsp";
<img src ="http://www.blogjava.net/algz/aggbug/333025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-09-27 10:10 <a href="http://www.blogjava.net/algz/articles/333025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>select元素获取选择前的值</title><link>http://www.blogjava.net/algz/articles/319749.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Fri, 30 Apr 2010 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/319749.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/319749.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/319749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/319749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/319749.html</trackback:ping><description><![CDATA[<p>在focus事件里保存初值,change事件里进行新值与旧值的比较<br />
....... <br />
&lt;SELECT NAME="myselect" ONFOCUS="SelectValue=this.value" ONCHANGE="alert('上次选择的是'+SelectValue)"&gt; <br />
&lt;OPTION VALUE="1111"&gt;1111 <br />
&lt;OPTION VALUE="2222"&gt;2222 <br />
&lt;OPTION VALUE="3333"&gt;3333 <br />
&lt;/SELECT&gt; <br />
....... <br />
</p>
<img src ="http://www.blogjava.net/algz/aggbug/319749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-04-30 09:22 <a href="http://www.blogjava.net/algz/articles/319749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL表达式解决双LIST问题等问题</title><link>http://www.blogjava.net/algz/articles/319717.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Thu, 29 Apr 2010 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/319717.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/319717.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/319717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/319717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/319717.html</trackback:ping><description><![CDATA[&lt;logic:iterate id="employeeWage" name="<span style="color: #99cc00">employeeWageList</span>"&nbsp; indexId="<span style="color: #339966">index</span>"&gt;&nbsp;&nbsp; <span style="color: #008000">//也可以用jstl c:标签</span><br />
&lt;input align="right" name="employeeWageMoney" style="text-align: right;width: 60px" value="${<span style="color: #99cc00">modifyEmployeeWageList</span>[<span style="color: #339966">index</span>].employeeWageMoney }" /&gt; 元<br />
&lt;/logic:iterate &gt;<br />
<br />
有时项目中两个同类型的对象需要传值给界面比对,此时就用到了.主要技术就是EL表达式可以直接取for的参数值,要相信一点,JSP也好,标签也好.都要转化为SERVLET类.也就是一个JAVA类.所以定义的属性或方法都可以通用的.EL对集合的取法[],对于LIST等都通用.
<img src ="http://www.blogjava.net/algz/aggbug/319717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-04-29 17:46 <a href="http://www.blogjava.net/algz/articles/319717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Jsp中实现文件上传与下载</title><link>http://www.blogjava.net/algz/articles/308091.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Sun, 03 Jan 2010 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/308091.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/308091.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/308091.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/308091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/308091.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 24pt">Jsp</span></strong><strong><span style="font-family: 宋体; font-size: 24pt">中实现文件上传与下载 <em>&nbsp;</em></span></strong></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">1</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．客户端上传文件</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 10pt">客户端通过一个Jsp页面，上传文件到服务器，该Jsp页面必须含有File类表单，并且表单必须设置enctype="multipart/form- data"。提交表单时通过内置对象request，request.getInputStream();方法获得一个输入流。<br />
&nbsp;&nbsp;&nbsp; 在上传文件时，会有附加信息，如下所示：</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">-----------------------------7d71042a40328<br />
Content-Disposition: form-data; name="fileforload"; filename="C:"Documents and Settings"ZJ"</span><span style="font-family: 宋体; font-size: 10pt">桌面"book.txt"<br />
Content-Type: text/plain<br />
//此处为文件内容<br />
-----------------------------7d71042a40328<br />
Content-Disposition: form-data; name="submit" </span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">commit<br />
-----------------------------7d71042a40328--</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 10pt">附加信息大小为297字节（不确定这个值，测试得到），可通过request.getContentLength()&gt;297来判断是否上传了文件还是提交空字符串。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">2</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．测试</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; fileupload.jsp</span><span style="font-family: 宋体; font-size: 10pt">负责提交文件，accept.jsp负责实现上传功能。<br />
<u>fileupload.jsp</u></span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=GB18030"&gt;<br />
&lt;title&gt;This page for FileUpload&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;Choose the file for uploading:<br />
&lt;form action="accept.jsp" method=post enctype="multipart/form-data"&gt;<br />
&nbsp; &lt;input type=file name=fileforload size=30&gt;<br />
&nbsp; &lt;br&gt;<br />
&nbsp; &lt;input type=submit value=commit name=submit&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><u><span style="font-family: 宋体; font-size: 10pt">accept.jsp</span></u></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=GB18030"&gt;<br />
&lt;title&gt;This page for response&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;%try{<br />
&nbsp;if(request.getContentLength()&gt;297){<br />
&nbsp;&nbsp; InputStream in=request.getInputStream();<br />
&nbsp;&nbsp; File f=new File("d:/temp","test.txt");<br />
&nbsp;&nbsp; FileOutputStream o=new FileOutputStream(f);<br />
&nbsp;&nbsp; byte b[]=new byte[1024];<br />
&nbsp;&nbsp; int n;<br />
&nbsp;&nbsp; while((n=in.read(b))!=-1){<br />
&nbsp;&nbsp;o.write(b,0,n);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; o.close();<br />
&nbsp;&nbsp; in.close();<br />
&nbsp;&nbsp; out.print("File upload success!");<br />
&nbsp;}<br />
&nbsp;else{<br />
&nbsp;&nbsp;out.print("No file!");<br />
&nbsp;}<br />
}<br />
catch(IOException e){<br />
&nbsp;out.print("upload error.");<br />
&nbsp;e.printStackTrace();<br />
}<br />
%&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 10pt">服务器端得到的上传文件I like.txt，取名为<u>test.txt</u></span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">-----------------------------7d75b1540328<br />
Content-Disposition: form-data; name="fileforload"; filename="C:"Documents and Settings"ZJ"</span><span style="font-family: 宋体; font-size: 10pt">桌面"I like.txt"<br />
Content-Type: text/plain </span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">我喜欢驾驭着代码在风驰电掣中创造完美;<br />
我喜欢操纵着代码在随心所欲中体验生活;<br />
我喜欢用心情代码编制我小小的与众不同;<br />
每一段新的代码在我手中延生对我来说就象观看刹那花开的感动;<br />
我不需要焦点.因为我就是焦点!</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">-----------------------------7d75b1540328<br />
Content-Disposition: form-data; name="submit"</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">commit<br />
-----------------------------7d75b1540328--</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">3</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．去除附加信息</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 10pt">按照HTTP协议，文件表单提交的信息中，前4行(不足的自动空行)和后5行是表单本身的信息，中间部分才是上传的文件的内容。下例对上传的文件进行处理，获取文件名，并去除附加信息。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">4</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．测试</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; fileupload.jsp</span><span style="font-family: 宋体; font-size: 10pt">不变，<u>accept.jsp</u>修改如下：</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=GB18030"&gt;<br />
&lt;title&gt;The real file&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;%try{<br />
&nbsp;//use sessionid to create a temp file.<br />
&nbsp;String tempFileName=(String)session.getId();<br />
&nbsp;//create the temp file.<br />
&nbsp;File temp=new File("d:/temp",tempFileName);<br />
&nbsp;FileOutputStream o=new FileOutputStream(temp);<br />
&nbsp;if(request.getContentLength()&gt;297){<br />
&nbsp;&nbsp; //write the upload content to the temp file.<br />
&nbsp;&nbsp; InputStream in=request.getInputStream();<br />
&nbsp;&nbsp; byte b[]=new byte[1024];<br />
&nbsp;&nbsp; int n;<br />
&nbsp;&nbsp; while((n=in.read(b))!=-1){<br />
&nbsp;&nbsp;&nbsp; o.write(b,0,n);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; o.close();<br />
&nbsp;&nbsp; in.close();<br />
&nbsp;&nbsp; //read the temp file.<br />
&nbsp;&nbsp; RandomAccessFile random=new RandomAccessFile(temp,"r");<br />
&nbsp;&nbsp; //read Line2 to find the name of the upload file.<br />
&nbsp;&nbsp; int second=1;<br />
&nbsp;&nbsp; String secondLine=null;<br />
&nbsp;&nbsp; while(second&lt;=2){<br />
&nbsp;&nbsp;&nbsp; secondLine=random.readLine();<br />
&nbsp;&nbsp;&nbsp; second++;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; //get the last location of the dir char.'""'.<br />
&nbsp;&nbsp; int position=secondLine.lastIndexOf('""');<br />
&nbsp;&nbsp; //get the name of the upload file.<br />
&nbsp;&nbsp; String fileName=secondLine.substring(position+1,secondLine.length()-1);<br />
&nbsp;&nbsp; //relocate to the head of file.<br />
&nbsp;&nbsp; random.seek(0);<br />
&nbsp;&nbsp; //get the location of the char.'Enter' in Line4.<br />
&nbsp;&nbsp; long forthEndPosition=0;<br />
&nbsp;&nbsp; int forth=1;<br />
&nbsp;&nbsp; while((n=random.readByte())!=-1&amp;&amp;(forth&lt;=4)){<br />
&nbsp;&nbsp;&nbsp; if(n=='"n'){<br />
&nbsp;&nbsp;&nbsp;&nbsp; forthEndPosition=random.getFilePointer();<br />
&nbsp;&nbsp;&nbsp;&nbsp; forth++;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; File realFile=new File("d:/temp",fileName);<br />
&nbsp;&nbsp; RandomAccessFile random2=new RandomAccessFile(realFile,"rw");<br />
&nbsp;&nbsp; //locate the end position of the content.Count backwards 6 lines.<br />
&nbsp;&nbsp; random.seek(random.length());<br />
&nbsp;&nbsp; long endPosition=random.getFilePointer();<br />
&nbsp;&nbsp; long mark=endPosition;<br />
&nbsp;&nbsp; int j=1;<br />
&nbsp;&nbsp; while((mark&gt;=0)&amp;&amp;(j&lt;=6)){<br />
&nbsp;&nbsp;&nbsp; mark--;<br />
&nbsp;&nbsp;&nbsp; random.seek(mark);<br />
&nbsp;&nbsp;&nbsp; n=random.readByte();<br />
&nbsp;&nbsp;&nbsp; if(n=='"n'){<br />
&nbsp;&nbsp;&nbsp;&nbsp; endPosition=random.getFilePointer();<br />
&nbsp;&nbsp;&nbsp;&nbsp; j++;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; //locate to the begin of content.Count for 4 lines's end position.<br />
&nbsp;&nbsp; random.seek(forthEndPosition);<br />
&nbsp;&nbsp; long startPoint=random.getFilePointer();<br />
&nbsp;&nbsp; //read the real content and write it to the realFile.<br />
&nbsp;&nbsp; while(startPoint&lt;endPosition-1){<br />
&nbsp;&nbsp;&nbsp; n=random.readByte();<br />
&nbsp;&nbsp;&nbsp; random2.write(n);<br />
&nbsp;&nbsp;&nbsp; startPoint=random.getFilePointer();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; random2.close();<br />
&nbsp;&nbsp; random.close();<br />
&nbsp;&nbsp; //delete the temp file.<br />
&nbsp;&nbsp; temp.delete();<br />
&nbsp;&nbsp; out.print("File upload success!");<br />
&nbsp;}<br />
&nbsp;else{<br />
&nbsp;&nbsp;out.print("No file!");<br />
&nbsp;}<br />
}<br />
catch(IOException e){<br />
&nbsp;out.print("upload error.");<br />
&nbsp;e.printStackTrace();<br />
}<br />
%&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 10pt">（注：如果文件名是中文，会出现乱码。）</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">5</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．文件下载</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; Jsp</span><span style="font-family: 宋体; font-size: 10pt">内置对象response调用方法getOutputStream（）可以获取一个指向客户的输出流，服务器将文件写入这个流，然后可下载此文件。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; font-size: 10pt">6</span></strong><strong><span style="font-family: 宋体; font-size: 10pt">．测试</span></strong><span style="font-family: 宋体; font-size: 10pt"><br />
&nbsp;&nbsp;&nbsp; download.jsp</span><span style="font-family: 宋体; font-size: 10pt">显示下载选项，LoadFile.java（Servlet）负责下载文件。<br />
<u>download.jsp</u></span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=GB18030"&gt;<br />
&lt;title&gt;download page&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;a href=loadFile&gt;Download:test.zip&lt;/a&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><u><span style="font-family: 宋体; font-size: 10pt">LoadFile.java</span></u></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">package com.zj.sample; </span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">import java.io.File;<br />
import java.io.FileInputStream;<br />
import java.io.IOException;<br />
import java.io.OutputStream;</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">import javax.servlet.ServletException;<br />
import javax.servlet.http.HttpServlet;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">@SuppressWarnings("serial")<br />
public class LoadFile extends HttpServlet{<br />
&nbsp;public void doGet(HttpServletRequest request,HttpServletResponse response)<br />
&nbsp;&nbsp; throws IOException,ServletException{<br />
&nbsp;&nbsp;&nbsp; OutputStream o=response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp; byte b[]=new byte[1024];<br />
&nbsp;&nbsp;&nbsp; //the file to download.<br />
&nbsp;&nbsp;&nbsp; File fileLoad=new File("d:/temp","test.rar");<br />
&nbsp;&nbsp;&nbsp; //the dialogbox of download file.<br />
&nbsp;&nbsp;&nbsp; response.setHeader("Content-disposition",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "attachment;filename="+"test.rar");<br />
&nbsp;&nbsp;&nbsp; //set the MIME type.<br />
&nbsp;&nbsp;&nbsp; response.setContentType("application/x-tar");<br />
&nbsp;&nbsp;&nbsp; //get the file length.<br />
&nbsp;&nbsp;&nbsp; long fileLength=fileLoad.length();<br />
&nbsp;&nbsp;&nbsp; String length=String.valueOf(fileLength);<br />
&nbsp;&nbsp;&nbsp; response.setHeader("Content_Length",length);<br />
&nbsp;&nbsp;&nbsp; //download the file.<br />
&nbsp;&nbsp;&nbsp; FileInputStream in=new FileInputStream(fileLoad);<br />
&nbsp;&nbsp;&nbsp; int n=0;<br />
&nbsp;&nbsp;&nbsp; while((n=in.read(b))!=-1){<br />
&nbsp;&nbsp;&nbsp;&nbsp; o.write(b,0,n);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;public void doPost(HttpServletRequest request,HttpServletResponse response)<br />
&nbsp;throws IOException,ServletException{<br />
&nbsp;&nbsp;doGet(request,response);<br />
&nbsp;}</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">}</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><u><span style="font-family: 宋体; font-size: 10pt">web.xml</span></u><span style="font-family: 宋体; font-size: 10pt">（注册servlet）</span></p>
<p style="text-align: left; background: lightgrey" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 10pt">&lt;servlet&gt;<br />
&nbsp; &lt;servlet-name&gt;LoadFileServlet&lt;/servlet-name&gt;<br />
&nbsp; &lt;servlet-class&gt;com.zj.sample.LoadFile&lt;/servlet-class&gt;<br />
&lt;/servlet&gt;<br />
&lt;servlet-mapping&gt;<br />
&nbsp; &lt;servlet-name&gt;LoadFileServlet&lt;/servlet-name&gt;<br />
&nbsp; &lt;url-pattern&gt;/loadFile&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</span></p>
<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;&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; 转自－－http://blog.csdn.net/lookthesea/archive/2007/05/20/1617633.aspx
 <img src ="http://www.blogjava.net/algz/aggbug/308091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2010-01-03 16:54 <a href="http://www.blogjava.net/algz/articles/308091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>