﻿<?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+Struts</title><link>http://www.blogjava.net/Crying/category/25483.html</link><description>如 果 敌 人 让 你 生 气 , 那 说 明 你 没 有 胜 他 的 把 握！ 
</description><language>zh-cn</language><lastBuildDate>Thu, 10 Apr 2008 11:34:59 GMT</lastBuildDate><pubDate>Thu, 10 Apr 2008 11:34:59 GMT</pubDate><ttl>60</ttl><item><title>jsp 防盗链（转）http://www.blogjava.net/alex/archive/2007/03/13/103458.html</title><link>http://www.blogjava.net/Crying/articles/191778.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 10 Apr 2008 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/191778.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/191778.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/191778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/191778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/191778.html</trackback:ping><description><![CDATA[<span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Simple&nbsp;jsp&nbsp;page</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Place&nbsp;your&nbsp;content&nbsp;here<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;here&nbsp;is&nbsp;index&nbsp;jsp<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;header&nbsp;info<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">href</span><span style="color: #0000ff">="a.jsp"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">a.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><br />
a.jsp页面<br />
<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"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Simple&nbsp;jsp&nbsp;page</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Place&nbsp;your&nbsp;content&nbsp;here<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;here&nbsp;is&nbsp;a.&nbsp;jsp<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;header&nbsp;info<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">request.getHeader(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Referer</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img id="Codehighlighter1_163_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_163_265_Open_Text.style.display='none'; Codehighlighter1_163_265_Closed_Image.style.display='inline'; Codehighlighter1_163_265_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_163_265_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_163_265_Closed_Text.style.display='none'; Codehighlighter1_163_265_Open_Image.style.display='inline'; Codehighlighter1_163_265_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_163_265_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_163_265_Open_Text"><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">==</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;request.getHeader(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Referer</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)&nbsp;||&nbsp;request.getHeader(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Referer</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).indexOf(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">yourdomain.com</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">){</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;做人要厚道<br />
<img id="Codehighlighter1_283_288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_283_288_Open_Text.style.display='none'; Codehighlighter1_283_288_Closed_Image.style.display='inline'; Codehighlighter1_283_288_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_283_288_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_283_288_Closed_Text.style.display='none'; Codehighlighter1_283_288_Open_Image.style.display='inline'; Codehighlighter1_283_288_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_283_288_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_283_288_Open_Text"><span style="color: #000000; background-color: #f5f5f5">}</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">{</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;合法访问<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">}</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<br />
<img src ="http://www.blogjava.net/Crying/aggbug/191778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-04-10 10:34 <a href="http://www.blogjava.net/Crying/articles/191778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获得IP</title><link>http://www.blogjava.net/Crying/articles/190528.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 03 Apr 2008 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/190528.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/190528.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/190528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/190528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/190528.html</trackback:ping><description><![CDATA[<p>String IP = httpRequest.getHeader("x-forworded-for");<br />
&nbsp;&nbsp;if (IP != null &amp;&amp; IP.length() != 0) {<br />
&nbsp;&nbsp;&nbsp;while ((IP != null) &amp;&amp; (IP.equals("unknow"))) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;IP = httpRequest.getHeader("x-forworded-for");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;if (IP == null || IP.length() == 0) {<br />
&nbsp;&nbsp;&nbsp;IP = httpRequest.getHeader("Proxy-Client-IP");<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;if (IP == null || IP.length() == 0) {<br />
&nbsp;&nbsp;&nbsp;IP = httpRequest.getHeader("WL-Proxy-Client-IP");<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;if (IP == null || IP.length() == 0) {<br />
&nbsp;&nbsp;&nbsp;IP = httpRequest.getRemoteAddr();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;// 得到访问者所在网段<br />
&nbsp;String &nbsp;subIP = IP.substring(0, IP.lastIndexOf("."));<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;System.out.println("真实的IP地址：" + IP+"网段是："+subIP);</p>
<img src ="http://www.blogjava.net/Crying/aggbug/190528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-04-03 09:31 <a href="http://www.blogjava.net/Crying/articles/190528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP操作文件</title><link>http://www.blogjava.net/Crying/articles/185147.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Mon, 10 Mar 2008 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/185147.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/185147.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/185147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/185147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/185147.html</trackback:ping><description><![CDATA[<span style="color: red">读取文件</span><br />
两种方式：一种利用ServletContext 来读取上下文中的资源；另一种使用java.io.FileReader<br />
来读取任何位置上的文件。<br />
ServletContext 读取文件<br />
&lt;%@ page contentType="text/html; charset=gb2312" import="java.io.*"%&gt;<br />
&lt;%<br />
try<br />
{<br />
//使用ServletContext 装入文件资源<br />
//这里的path参数必须在上下文环境中，所以必须以&#8220;/&#8220;开始<br />
//使用InputStream，没有使用缓冲输入流，效率低<br />
InputStream in=getServletContext().getResourceAsStream("/file.txt");<br />
String file="";<br />
int temp=0;<br />
while((temp=in.read())!=-1)<br />
{<br />
file+=(char)temp;<br />
}<br />
//关闭输入流。<br />
in.close();<br />
//使用InputStream对象，在读取文件内容后因该进行重编码，否则会产生乱码<br />
out.println(new String(file.getBytes("iso-8859-1")));<br />
out.flush();<br />
}<br />
catch(Exception e)<br />
{<br />
out.println(e);<br />
e.printStackTrace();<br />
}<br />
%&gt;<br />
改进后：<br />
&lt;%@ page contentType="text/html; charset=gb2312" import="java.io.*" buffer="64kb"%&gt;<br />
&lt;%<br />
try<br />
{<br />
InputStream in=getServletContext().getResourceAsStream("/file.txt");<br />
String file="";<br />
String temp="";<br />
//效率提升，而且不用担心乱码问题<br />
BufferedReader buffer=new BufferedReader(new InputStreamReader(new BufferedInputStream(in)));<br />
while((temp=buffer.readLine())!=null)<br />
{<br />
file+=temp;<br />
}<br />
buffer.close();<br />
in.close();<br />
out.println(file);<br />
out.flush();<br />
}<br />
catch(Exception e)<br />
{<br />
out.println(e);<br />
e.printStackTrace();<br />
}<br />
%&gt;<br />
<span style="color: red">使用FileReader读取文件：</span><br />
&lt;%@ page contentType="text/html; charset=gb2312" import="java.io.*" buffer="64kb"%&gt;<br />
&lt;%<br />
try<br />
{<br />
BufferedReader in=new BufferedReader(new FileReader("c:\\UserSession.java"));<br />
String file="";<br />
String temp="";<br />
while((temp=in.readLine())!=null)<br />
{<br />
file+=temp;<br />
}<br />
in.close();<br />
out.println(file);<br />
out.flush();<br />
}<br />
catch(Exception e)<br />
{<br />
out.println(e);<br />
e.printStackTrace();<br />
}<br />
%&gt;<br />
<br />
<br />
<span style="color: red">写入内容到文件</span><br />
使用FileWriter 对象写入文件<br />
&lt;%@ page contentType="text/html; charset=gb2312" import="java.io.*"%&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;%<br />
request.setCharacterEncoding("gb2312");<br />
String content=request.getParameter("content");<br />
%&gt;<br />
&lt;%<br />
try<br />
{<br />
PrintWriter writer= new PrintWriter(new BufferedWriter(new<br />
FileWriter("c:\\foo.out",true)));<br />
writer.write(content);<br />
writer.close();<br />
out.println("已经把内容写入到c:\\foo.out");<br />
}<br />
catch(Exception e)<br />
{<br />
out.println(e);<br />
e.printStackTrace();<br />
}<br />
%&gt;<br />
&lt;form action="writeFile.jsp" method=post&gt;<br />
&lt;textarea name=content cols=20 rows=5&gt;&lt;/textarea&gt;&lt;br&gt;<br />
&lt;input type=submit value=提交&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;
 <img src ="http://www.blogjava.net/Crying/aggbug/185147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-03-10 17:28 <a href="http://www.blogjava.net/Crying/articles/185147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dispatchAction</title><link>http://www.blogjava.net/Crying/articles/184766.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Sat, 08 Mar 2008 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/184766.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/184766.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/184766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/184766.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/184766.html</trackback:ping><description><![CDATA[dispatchAction 的作用是一个action可以处理不同的请求<br />
<br />
&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;<br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%&gt; <br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%&gt;<br />
&nbsp;<br />
&lt;html&gt; <br />
&nbsp;&lt;head&gt;<br />
&nbsp;&nbsp;&lt;title&gt;JSP for Add_UpdateForm form&lt;/title&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp;&lt;h1&gt;添加页面&lt;/h1&gt;<br />
&nbsp;&nbsp;&lt;html:form action="/add_Update.do?<span style="color: red">methods=add</span>"&gt;<br />
&nbsp;&nbsp;&nbsp;password : &lt;html:password property="password"/&gt;&lt;html:errors property="password"/&gt;&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp;name : &lt;html:text property="name"/&gt;&lt;html:errors property="name"/&gt;&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:submit /&gt;&lt;html:cancel/&gt;<br />
&nbsp;&nbsp;&lt;/html:form&gt;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<br />
<br />
&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;<br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%&gt; <br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%&gt;<br />
&nbsp;<br />
&lt;html&gt; <br />
&nbsp;&lt;head&gt;<br />
&nbsp;&nbsp;&lt;title&gt;JSP for Add_UpdateForm form&lt;/title&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp;&lt;h1&gt;修改页面&lt;/h1&gt;<br />
&nbsp;&nbsp;&lt;html:form action="/add_Update.do?<span style="color: red">methods=update</span>"&gt;<br />
&nbsp;&nbsp;&nbsp;password : &lt;html:password property="password"/&gt;&lt;html:errors property="password"/&gt;&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp;name : &lt;html:text property="name"/&gt;&lt;html:errors property="name"/&gt;&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:submit/&gt;&lt;html:cancel/&gt;<br />
&nbsp;&nbsp;&lt;/html:form&gt;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111<br />
<p>package com.yourcompany.struts.action;</p>
<p>import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
import org.apache.struts.action.ActionForm;<br />
import org.apache.struts.action.ActionForward;<br />
import org.apache.struts.action.ActionMapping;<br />
import org.apache.struts.actions.DispatchAction;</p>
<p><br />
public class Add_UpdateAction extends DispatchAction {<br />
&nbsp;<br />
&nbsp;public ActionForward <span style="color: red">add</span>(ActionMapping mapping, ActionForm form,<br />
&nbsp;&nbsp;&nbsp;HttpServletRequest request, HttpServletResponse response) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return mapping.findForward("addOk");<br />
&nbsp;}<br />
&nbsp;public ActionForward <span style="color: red">update</span>(ActionMapping mapping, ActionForm form,<br />
&nbsp;&nbsp;&nbsp;HttpServletRequest request, HttpServletResponse response) {<br />
&nbsp;&nbsp;return mapping.findForward("updateOk");<br />
}<br />
}<br />
<br />
<br />
</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"&gt;</p>
<p>&lt;struts-config&gt;<br />
&nbsp; &lt;data-sources /&gt;<br />
&nbsp; &lt;form-beans &gt;<br />
&nbsp;&nbsp;&nbsp; &lt;form-bean name="add_UpdateForm" type="com.yourcompany.struts.form.Add_UpdateForm" /&gt;</p>
<p>&nbsp; &lt;/form-beans&gt;</p>
<p>&nbsp; &lt;global-exceptions /&gt;<br />
&nbsp; &lt;global-forwards /&gt;<br />
&nbsp; &lt;action-mappings &gt;<br />
&nbsp;&nbsp;&nbsp; &lt;action<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute="add_UpdateForm"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input="/add.jsp"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="add_UpdateForm"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp; parameter="methods"<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path="/add_Update"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scope="request"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="com.yourcompany.struts.action.Add_UpdateAction"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name="addOk" path="/addOk.jsp" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name="updateOk" path="/updateOk.jsp" /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/action&gt;</p>
<p>&nbsp; &lt;/action-mappings&gt;</p>
<p>&nbsp; &lt;message-resources parameter="com.yourcompany.struts.ApplicationResources" /&gt;<br />
&lt;/struts-config&gt;<br />
</p>
<br />
<br />
<img src ="http://www.blogjava.net/Crying/aggbug/184766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-03-08 23:32 <a href="http://www.blogjava.net/Crying/articles/184766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts的&lt;html:link&gt;标签能够触发struts-config.xml里头的action吗？</title><link>http://www.blogjava.net/Crying/articles/184762.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Sat, 08 Mar 2008 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/184762.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/184762.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/184762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/184762.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/184762.html</trackback:ping><description><![CDATA[<strong style="color: #0000ff">1.&lt;html:link&nbsp;action="/xxx"&gt;连接&lt;/html:link&nbsp;&gt; <br />
2..&lt;html:link&nbsp;page="/xxx.do"&gt;连接&lt;/html:link&nbsp;&gt; <br />
带参数 <br />
1.&lt;html:link&nbsp;action="/xxx？参数名=xxx"&gt;连接&lt;/html:link&nbsp;&gt; <br />
2..&lt;html:link&nbsp;page="/xxx.do?参数名=xxx"&gt;连接&lt;/html:link&nbsp;&gt;</strong> 
<img src ="http://www.blogjava.net/Crying/aggbug/184762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-03-08 23:09 <a href="http://www.blogjava.net/Crying/articles/184762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>验证码  （世界上最差的）</title><link>http://www.blogjava.net/Crying/articles/164025.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 29 Nov 2007 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/164025.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/164025.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/164025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/164025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/164025.html</trackback:ping><description><![CDATA[<p>&lt;%@ page language="java" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" <br />
&nbsp;&nbsp;&nbsp;&nbsp; contentType="image/jpeg" pageEncoding="UTF-8"%&gt;</p>
<p><br />
&lt;%&nbsp; //设置页面不缓存<br />
&nbsp;&nbsp; response.setHeader("Pragma","No-cache");<br />
&nbsp;&nbsp; response.setHeader("Cahce-Control","no-cache");<br />
&nbsp;&nbsp; response.setDateHeader("Expires",0);<br />
&nbsp;&nbsp; //在内存中创建图片<br />
&nbsp;&nbsp; int width=60,height=20;<br />
&nbsp;&nbsp; BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);<br />
&nbsp;&nbsp; //获取图形上下文<br />
&nbsp;&nbsp; Graphics g= image.getGraphics();<br />
&nbsp;&nbsp; //生成随机类<br />
&nbsp;&nbsp; Random random= new Random();<br />
&nbsp;&nbsp; //设置背景颜色<br />
&nbsp;&nbsp; g.setColor(new Color(160,200,100));<br />
&nbsp;&nbsp; g.fillRect(0,0,width,height);<br />
&nbsp;&nbsp; //设置字体<br />
&nbsp;&nbsp; g.setFont(new Font("Times New Roman",Font.PLAIN,18));<br />
&nbsp;&nbsp; //随机产生50条干扰线，使图形中的验证码不易被其他的程序探测到<br />
&nbsp;&nbsp;&nbsp; g.setColor(new Color(160,200,200));<br />
&nbsp;&nbsp; for(int i=0;i&lt;50;i++)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; int x=random.nextInt(width);<br />
&nbsp;&nbsp;&nbsp;&nbsp; int y=random.nextInt(height);<br />
&nbsp;&nbsp;&nbsp;&nbsp; int x1=random.nextInt(width);<br />
&nbsp;&nbsp;&nbsp;&nbsp; int y1=random.nextInt(height);<br />
&nbsp;&nbsp;&nbsp;&nbsp; g.drawLine(x,y,x+x1,y+y1);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; //随机产生验证码（4为数字）<br />
&nbsp;&nbsp; String sRand="";<br />
&nbsp;&nbsp; for(int i=0;i&lt;4;i++)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; String rand=String.valueOf(random.nextInt(10));<br />
&nbsp;&nbsp;&nbsp;&nbsp; sRand+=rand;<br />
&nbsp;&nbsp;&nbsp;&nbsp; //将验证码显示到图象<br />
&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));<br />
&nbsp;&nbsp;&nbsp;&nbsp; g.drawString(rand,13*i+6,16);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; session.setAttribute("rand",sRand);&nbsp; //////将产生的验证码存储到sesson中<br />
&nbsp;&nbsp; g.dispose();<br />
&nbsp;&nbsp; ImageIO.write(image,"JPEG",response.getOutputStream());<br />
&nbsp;&nbsp; out.clear(); //***********<br />
&nbsp;&nbsp; out=pageContext.pushBody();//**********<br />
&nbsp;%&gt;<br />
*********************************************************************<br />
&lt;img src="yanzhengma.jsp" id="CheckCodeimg" title="看不清请点击图片！"/&gt;&lt;html:errors property="yanzhengma"/&gt;&amp;nbsp;<br />
&lt;a href="#" onclick="document.getElementById('CheckCodeimg').src='yanzhengma.jsp';"&gt;看不清？&lt;/a&gt;&lt;br/&gt;</p>
<img src ="http://www.blogjava.net/Crying/aggbug/164025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-11-29 16:31 <a href="http://www.blogjava.net/Crying/articles/164025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>contentType类型</title><link>http://www.blogjava.net/Crying/articles/162786.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Sat, 24 Nov 2007 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/162786.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/162786.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/162786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/162786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/162786.html</trackback:ping><description><![CDATA[<br />
<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;<span style="color: #0000ff"><strong style="font-size: 18pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType<br />
</strong></span><br />
<table style="font-size: 16px; border-collapse: collapse" bordercolor="#000000" align="center" border="1">
    <tbody>
        <tr>
            <td><strong><span style="font-size: 18pt">名称</span></strong></td>
            <td><strong><span style="font-size: 18pt">类型</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ai</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/postscript</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">aif</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-aiff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">aifc</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-aiff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">aiff</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-aiff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">asc</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/plain</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">au</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/basic</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">avi</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/x-msvideo</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">bcpio</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-bcpio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">bin</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">bmp</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/bmp</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">cdf</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-netcdf</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">class</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">cpio</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-cpio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">cpt</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/mac-compactpro</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">csh</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-csh</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">css</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/css</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dcr</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-director</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dir</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-director</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">djv</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/vnd.djvu</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">djvu</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/vnd.djvu</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dll</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dms</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">doc</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/msword</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dvi</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-dvi</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">dxr</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-director</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">eps</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/postscript</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">etx</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/x-setext</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">exe</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ez</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/andrew-inset</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">gif</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/gif</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">gtar</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-gtar</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">hdf</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-hdf</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">hqx</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/mac-binhex40</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">htm</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/html</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">html</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/html</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ice</span></strong></td>
            <td><strong><span style="font-size: 18pt">x-conference/x-cooltalk</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ief</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/ief</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">iges</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/iges</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">igs</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/iges</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">jpe</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/jpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">jpeg</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/jpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">jpg</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/jpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">js</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-javascript</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">kar</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/midi</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">latex</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-latex</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">lha</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">lzh</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">m3u</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-mpegurl</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">man</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff-man</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">me</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff-me</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mesh</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/mesh</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mid</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/midi</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">midi</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/midi</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mif</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.mif</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mov</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/quicktime</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">movie</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/x-sgi-movie</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mp2</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mp3</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mpe</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mpeg</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mpg</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mpga</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/mpeg</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ms</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff-ms</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">msh</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/mesh</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">mxu</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/vnd.mpegurl</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">nc</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-netcdf</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">oda</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/oda</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pbm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-portable-bitmap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pdb</span></strong></td>
            <td><strong><span style="font-size: 18pt">chemical/x-pdb</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pdf</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/pdf</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pgm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-portable-graymap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pgn</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-chess-pgn</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">png</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/png</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">pnm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-portable-anymap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ppm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-portable-pixmap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ppt</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.ms-powerpoint</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ps</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/postscript</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">qt</span></strong></td>
            <td><strong><span style="font-size: 18pt">video/quicktime</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ra</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-realaudio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ram</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-pn-realaudio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ras</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-cmu-raster</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">rgb</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-rgb</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">rm</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-pn-realaudio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">roff</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">rpm</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-pn-realaudio-plugin</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">rtf</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/rtf</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">rtx</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/richtext</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sgm</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/sgml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sgml</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/sgml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sh</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-sh</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">shar</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-shar</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">silo</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/mesh</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sit</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-stuffit</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">skd</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-koan</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">skm</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-koan</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">skp</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-koan</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">skt</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-koan</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">smi</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/smil</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">smil</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/smil</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">snd</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/basic</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">so</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/octet-stream</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">spl</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-futuresplash</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">src</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-wais-source</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sv4cpio</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-sv4cpio</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">sv4crc</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-sv4crc</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">swf</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-shockwave-flash</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">t</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tar</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-tar</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tcl</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-tcl</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tex</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-tex</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">texi</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-texinfo</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">texinfo</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-texinfo</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tif</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/tiff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tiff</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/tiff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tr</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-troff</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">tsv</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/tab-separated-values</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">txt</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/plain</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">ustar</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-ustar</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">vcd</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/x-cdlink</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">vrml</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/vrml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wav</span></strong></td>
            <td><strong><span style="font-size: 18pt">audio/x-wav</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wbmp</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/vnd.wap.wbmp</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wbxml</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.wap.wbxml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wml</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/vnd.wap.wml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wmlc</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.wap.wmlc</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wmls</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/vnd.wap.wmlscript</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wmlsc</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.wap.wmlscript<span style="display: none">c</span></span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">wrl</span></strong></td>
            <td><strong><span style="font-size: 18pt">model/vrml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xbm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-xbitmap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xht</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/xhtml+xml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xhtml</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/xhtml+xml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xls</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/vnd.ms-excel</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xml</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/xml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xpm</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-xpixmap</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xsl</span></strong></td>
            <td><strong><span style="font-size: 18pt">text/xml</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xwd</span></strong></td>
            <td><strong><span style="font-size: 18pt">image/x-xwindowdump</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">xyz</span></strong></td>
            <td><strong><span style="font-size: 18pt">chemical/x-xyz</span></strong></td>
        </tr>
        <tr>
            <td><strong><span style="font-size: 18pt">zip</span></strong></td>
            <td><strong><span style="font-size: 18pt">application/zip</span></strong></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/Crying/aggbug/162786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-11-24 10:00 <a href="http://www.blogjava.net/Crying/articles/162786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打印list,hashmap及删除</title><link>http://www.blogjava.net/Crying/articles/153982.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 18 Oct 2007 11:10:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/153982.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/153982.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/153982.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/153982.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/153982.html</trackback:ping><description><![CDATA[<p>&lt;tr&gt;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&lt;th&gt;&nbsp;ID&nbsp;&nbsp;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;&nbsp;姓名&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;密码&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;&nbsp;&nbsp;删除?&nbsp;&lt;/th&gt;<br />
&lt;/tr&gt;<br />
&lt;%<br />
&nbsp;&nbsp;&nbsp; List userList=(List)request.getAttribute("userList");<br />
&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;userList.size();i++)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TUser tUser=(TUser)userList.get(i);<br />
&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp; &lt;td &gt;&lt;%=tUser.getUsername() %&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; &lt;td&gt;&lt;%=tUser.getPassword() %&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp; &lt;html:link action="/deleteUser.do?userId=${User.id}"&gt;&amp;nbsp;&amp;nbsp;删除&lt;/html:link&gt;<br />
&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; %&gt;<br />
/*********************************************************************************/</p>
<p>&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;姓名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&lt;logic:present name="userList" scope="request"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="User" name="userList" indexId="index"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${User.id}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="User" property="username" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="User" property="password" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:link action="/deleteUser.do?userId=${User.id}"&gt;&amp;nbsp;&amp;nbsp;删除&lt;/html:link&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&lt;/logic:present&gt;</p>
<p>///////////////***********************************//////////////////////////<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String,String&gt; mapYear=new HashMap&lt;String,String&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapYear.put("0","1980");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapYear.put("1","1981");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapYear.put("2","1982");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapYear.put("3","1983");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("mapYear",mapYear);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String,String&gt; mapMonth=new HashMap&lt;String,String&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapMonth.put("0","01");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapMonth.put("1","02");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapMonth.put("2","03");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapMonth.put("3","04");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("mapMonth",mapMonth);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String,String&gt; mapDay=new HashMap&lt;String,String&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapDay.put("0","1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapDay.put("1","2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapDay.put("2","3");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapDay.put("3","4");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("mapDay",mapDay);<br />
&nbsp;&nbsp;%&gt;</p>
<p>&nbsp;&nbsp;&lt;html:form action="/addStudent" focus="username"&gt;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; username : &lt;html:text property="username" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:errors property="username" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; password : &lt;html:password property="password" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:errors property="password" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;sex : &lt;html:radio property="sex" value="m" /&gt;男 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html:radio property="sex" value="f" /&gt;女&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;birthday :&lt;html:select property="birthdayYear" size="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="map1" name="mapYear" indexId="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:option value="${map1.value}"&gt;${map1.value}&lt;/html:option&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/html:select&gt;年<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html:select property="birthdayMonth" size="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="map2" name="mapMonth" indexId="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:option value="${map2.value}"&gt;${map2.value}&lt;/html:option&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/html:select&gt;月<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html:select property="birthdayDay" size="1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="map3" name="mapDay" indexId="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;html:option value="${map3.value}"&gt;${map3.value}&lt;/html:option&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/html:select&gt;日&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;grade : &lt;html:text property="grade" /&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:submit /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:cancel /&gt;<br />
&nbsp;&nbsp;&lt;/html:form&gt;<br />
&nbsp;&lt;/body&gt;<br />
/*********************struts中隔行颜色不同的显示*************************************/<br />
<br />
<br />
&lt;logic:iterate id="Produt" name="list" indexId="id"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;bean:define id="result" value="${Produt.id%2}"&gt;&lt;/bean:define&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;logic:equal value="0" name="result"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tr bgcolor="<span style="color: #00ff00">green</span>"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.typeId}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.name}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.price}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.meno}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/logic:equal&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;logic:equal value="1" name="result"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;tr bgcolor="<span style="color: #ffff00">yellow</span>"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.typeId}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.name}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.price}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${Produt.meno}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/logic:equal&gt;<br />
&nbsp;&nbsp;&lt;/logic:iterate&gt;</p>
<img src ="http://www.blogjava.net/Crying/aggbug/153982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-10-18 19:10 <a href="http://www.blogjava.net/Crying/articles/153982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP/Servlet中的重定向技术的综述</title><link>http://www.blogjava.net/Crying/articles/153670.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Wed, 17 Oct 2007 12:05:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/153670.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/153670.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/153670.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/153670.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/153670.html</trackback:ping><description><![CDATA[<span style="color: #ff0000">有段时间没看JSP了，这不就发现了一个好东西我就&#8221;无耻&#8220;的转来了，以便自己学习</span><br />
1.RequestDispatcher.forward() <br />
<br />
是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递. <br />
<br />
但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面. <br />
<br />
重定向后浏览器地址栏URL不变. <br />
<br />
例:在servlet中进行重定向 <br />
<br />
<br />
public void doPost(HttpServletRequest request,HttpServletResponse response)<br />
throws ServletException,IOException<br />
{<br />
<br />
response.setContentType("text/html; charset=gb2312");<br />
<br />
ServletContext sc = getServletContext();<br />
<br />
RequestDispatcher rd = null;<br />
<br />
rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面<br />
<br />
rd.forward(request, response);<br />
<br />
}<br />
<br />
<br />
通常在servlet中使用，不在jsp中使用。 <br />
<br />
2.response.sendRedirect() <br />
<br />
是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件. <br />
<br />
重定向后在浏览器地址栏上会出现重定向页面的URL <br />
<br />
例:在servlet中重定向 <br />
<br />
<br />
public void doPost(HttpServletRequest request,HttpServletResponse response)<br />
<br />
throws ServletException,IOException<br />
<br />
{<br />
<br />
response.setContentType("text/html; charset=gb2312");<br />
<br />
response.sendRedirect("/index.jsp");<br />
<br />
}<br />
<br />
<br />
由于response是jsp页面中的隐含对象，故在jsp页面中可以用response.sendRedirect()直接实现重定位。 <br />
<br />
注意： <br />
<br />
(1).使用response.sendRedirect时，前面不能有HTML输出。 <br />
<br />
这并不是绝对的，不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制，一般在8K（我是说JSP　SERVER），这就意味着，除非你关闭了cache，或者你使用了out.flush()强制刷新，那么在使用sendRedirect之前，有少量的HTML输出也是允许的。 <br />
<br />
(2).response.sendRedirect之后，应该紧跟一句return; <br />
<br />
我们已经知道response.sendRedirect是通过浏览器来做转向的，所以只有在页面处理完成后，才会有实际的动作。既然你已经要做转向了，那么后的输出还有什么意义呢？而且有可能会因为后面的输出导致转向失败。 <br />
<br />
比较： <br />
<br />
(1).RequestDispatcher.forward()是容器中控制权的转向，在客户端浏览器地址栏中不会显示出转向后的地址； <br />
<br />
(2).response.sendRedirect()则是完全的跳转，浏览器将会得到跳转的地址，并重新发送请求链接。这样，从浏览器的地址栏中可以看到跳转后的链接地址。 <br />
<br />
前者更加高效，在前者可以满足需要时，尽量使用RequestDispatcher.forward()方法. <br />
<br />
注：在有些情况下，比如，需要跳转到一个其它服务器上的资源，则必须使用HttpServletResponse.sendRedirect()方法。 <br />
<br />
3. <br />
<br />
<br />
&lt;jsp:forward page="" /&gt;<br />
<br />
<br />
它的底层部分是由RequestDispatcher来实现的，因此它带有RequestDispatcher.forward()方法的印记。 <br />
<br />
如果在 jsp:forward 之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。 <br />
<br />
另外要注意：它不能改变浏览器地址，刷新的话会导致重复提交 <br />
<br />
4.修改HTTP header的Location属性来重定向 <br />
<br />
通过设置直接修改地址栏来实现页面的重定向。 <br />
<br />
jsp文件代码如下： <br />
<br />
<br />
&lt;％<br />
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);<br />
String newLocn = "/newpath/jsa.jsp";<br />
response.setHeader("Location",newLocn);<br />
％&gt;<br />
<br />
<br />
5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面 <br />
<br />
在html文件中，下面的代码： <br />
<br />
<br />
方法1###&lt;meta http-equiv="refresh" content="300; url=target.jsp"&gt;<br />
方法2###（我喜欢的）&lt;%response.setHeader("refresh","300;URL=target.jsp") ; %&gt;<br />
<br />
<br />
它的含义：在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间，以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。 <br />
<br />
由上可知，可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。 <br />
<br />
关键代码： <br />
<br />
String content=stayTime+";URL="+URL; <br />
<br />
response.setHeader("REFRESH",content); <br />
<img src ="http://www.blogjava.net/Crying/aggbug/153670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-10-17 20:05 <a href="http://www.blogjava.net/Crying/articles/153670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp如何连数据库</title><link>http://www.blogjava.net/Crying/articles/153378.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Tue, 16 Oct 2007 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/153378.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/153378.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/153378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/153378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/153378.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>现在有好多初学jsp的网友经常会问数据库怎么连接啊，怎么老出错啊？所以我集中的在这写篇文章供大家参考，其实这种把数据库逻辑全部放在jsp里未必是好的做法，但是有利于初学者学习，所以我就这样做了，当大家学到一定程度的时候，可以考虑用MVC的模式开发。在练习这些代码的时候，你一定将jdbc的驱动程序放到服务器的类路径里，然后要在数据库里建一个表test,有两个字段比如为test1，test2，可以用下面SQL建 <br />
　　create table test(test1 varchar(20),test2 varchar(20) <br />
然后向这个表写入一条测试纪录，那么现在开始我们的jsp和数据库之旅吧。</p>
<p>　　一、jsp连接Oracle8/8i/9i数据库（用thin模式） <br />
　　testoracle.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />
　　String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br />
　　//orcl为你的数据库的SID <br />
　　String user="scott"; <br />
　　String password="tiger"; <br />
　　Connection conn= DriverManager.getConnection(url,user,password); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt; </p>
<p>二、jsp连接Sql Server7.0/2000数据库 <br />
　　testsqlserver.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <br />
　　String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; <br />
　　//pubs为你的数据库的 <br />
　　String user="sa"; <br />
　　String password=""; <br />
　　<br />
　　Connection conn= DriverManager.getConnection(url,user,password); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　<br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt; </p>
<p>三、jsp连接DB2数据库 <br />
　　testdb2.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <br />
　　String url="jdbc:db2://localhost:5000/sample"; <br />
　　//sample为你的数据库名 <br />
　　String user="admin"; <br />
　　String password=""; <br />
　　Connection conn= DriverManager.getConnection(url,user,password); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt; (代码实验室)<br />
四、jsp连接Informix数据库 <br />
　　testinformix.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <br />
　　String url = <br />
　　"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver; <br />
　　user=testuser;password=testpassword"; <br />
　　//testDB为你的数据库名 <br />
　　Connection conn= DriverManager.getConnection(url); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt; </p>
<p>五、jsp连接Sybase数据库 <br />
　　testmysql.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <br />
　　String url =" jdbc:sybase:Tds:localhost:5007/tsdata"; <br />
　　//tsdata为你的数据库名 <br />
　　Properties sysProps = System.getProperties(); <br />
　　SysProps.put("user","userid"); <br />
　　SysProps.put("password","user_password"); <br />
　　Connection conn= DriverManager.getConnection(url, SysProps); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt; </p>
<p>六、jsp连接MySQL数据库 <br />
　　testmysql.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <br />
　　String url ="jdbc:mysql://localhost/softforum?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />
　　//testDB为你的数据库名 <br />
　　Connection conn= DriverManager.getConnection(url); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt;</p>
<p>七、jsp连接PostgreSQL数据库 <br />
　　testmysql.jsp如下： <br />
　　&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
　　&lt;%@ page import="java.sql.*"%&gt; <br />
　　&lt;html&gt; <br />
　　&lt;body&gt; <br />
　　&lt;%Class.forName("org.postgresql.Driver").newInstance(); <br />
　　String url ="jdbc:postgresql://localhost/soft" <br />
　　//soft为你的数据库名 <br />
　　String user="myuser"; <br />
　　String password="mypassword"; <br />
　　Connection conn= DriverManager.getConnection(url,user,password); <br />
　　Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
　　String sql="select * from test"; <br />
　　ResultSet rs=stmt.executeQuery(sql); <br />
　　while(rs.next()) {%&gt; <br />
　　您的第一个字段内容为：&lt;%=rs.getString(1)%&gt; <br />
　　您的第二个字段内容为：&lt;%=rs.getString(2)%&gt; <br />
　　&lt;%}%&gt; <br />
　　&lt;%out.print("数据库操作成功，恭喜你");%&gt; <br />
　　&lt;%rs.close(); <br />
　　stmt.close(); <br />
　　conn.close(); <br />
　　%&gt; <br />
　　&lt;/body&gt; <br />
　　&lt;/html&gt;&nbsp;&nbsp; </p>
<img src ="http://www.blogjava.net/Crying/aggbug/153378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-10-16 21:07 <a href="http://www.blogjava.net/Crying/articles/153378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用servlet监听器实现jsp中在线人数统计的方法 </title><link>http://www.blogjava.net/Crying/articles/151660.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Wed, 10 Oct 2007 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/151660.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/151660.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/151660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/151660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/151660.html</trackback:ping><description><![CDATA[<div style="font-size: 10.5pt">
<p style="margin: 0cm 0cm 0pt; text-indent: 20pt; line-height: 16.5pt"><span style="font-size: 10pt"><font face="宋体">在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能，即当用户输入用户名密码进行登录的时候计数器加</font></span><span style="font-size: 10pt; font-family: Arial">1</span><span style="font-size: 10pt"><font face="宋体">，然后当用户点击退出按钮退出系统的时候计数器减</font></span><span style="font-size: 10pt; font-family: Arial">1</span><span style="font-size: 10pt"><font face="宋体">。这种处理方式存在一些缺点，例如：用户正常登录后，可能会忘记点击退出按钮，而直接关闭浏览器，导致计数器减</font></span><span style="font-size: 10pt; font-family: Arial">1</span><span style="font-size: 10pt"><font face="宋体">的操作没有及时执行；网站上还经常有一些内容是不需要登录就可以访问的，在这种情况下也无法使用上面的方法进行在线人数统计。</font></span><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　我们可以利用</font></span><span style="font-size: 10pt; font-family: Arial">Servlet</span><span style="font-size: 10pt"><font face="宋体">规范中定义的事件监听器（</font></span><span style="font-size: 10pt; font-family: Arial">Listener</span><span style="font-size: 10pt"><font face="宋体">）来解决这个问题，实现更准确的在线人数统计功能。对每一个正在访问的用户，</font></span><span style="font-size: 10pt; font-family: Arial">J2EE</span><span style="font-size: 10pt"><font face="宋体">应用服务器会为其建立一个对应的</font></span><span style="font-size: 10pt; font-family: Arial">HttpSession</span><span style="font-size: 10pt"><font face="宋体">对象。当一个浏览器第一次访问网站的时候，</font></span><span style="font-size: 10pt; font-family: Arial">J2EE</span><span style="font-size: 10pt"><font face="宋体">应用服务器会新建一个</font></span><span style="font-size: 10pt; font-family: Arial">HttpSession</span><span style="font-size: 10pt"><font face="宋体">对象，并触发</font></span><span style="font-size: 10pt; font-family: Arial">HttpSession</span><span style="font-size: 10pt"><font face="宋体">创建事件，如果注册了</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">事件监听器，则会调用</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">事件监听器的</font></span><span style="font-size: 10pt; font-family: Arial">sessionCreated</span><span style="font-size: 10pt"><font face="宋体">方法。相反，当这个浏览器访问结束超时的时候，</font></span><span style="font-size: 10pt; font-family: Arial">J2EE</span><span style="font-size: 10pt"><font face="宋体">应用服务器会销毁相应的</font></span><span style="font-size: 10pt; font-family: Arial">HttpSession</span><span style="font-size: 10pt"><font face="宋体">对象，触发</font></span><span style="font-size: 10pt; font-family: Arial">HttpSession</span><span style="font-size: 10pt"><font face="宋体">销毁事件，同时调用所注册</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">事件监听器的</font></span><span style="font-size: 10pt; font-family: Arial">sessionDestroyed</span><span style="font-size: 10pt"><font face="宋体">方法。</font></span><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　可见，对应于一个用户访问的开始和结束，相应的有</font></span><span style="font-size: 10pt; font-family: Arial">sessionCreated</span><span style="font-size: 10pt"><font face="宋体">方法和</font></span><span style="font-size: 10pt; font-family: Arial">sessionDestroyed</span><span style="font-size: 10pt"><font face="宋体">方法执行。这样，我们只需要在</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">实现类的</font></span><span style="font-size: 10pt; font-family: Arial">sessionCreated</span><span style="font-size: 10pt"><font face="宋体">方法中让计数器加</font></span><span style="font-size: 10pt; font-family: Arial">1</span><span style="font-size: 10pt"><font face="宋体">，在</font></span><span style="font-size: 10pt; font-family: Arial">sessionDestroyed</span><span style="font-size: 10pt"><font face="宋体">方法中让计数器减</font></span><span style="font-size: 10pt; font-family: Arial">1</span><span style="font-size: 10pt"><font face="宋体">，就轻松实现了网站在线人数的统计功能。</font></span><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　下面就是利用</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">实现在线人数统计的一个例子，这个例子已经在中创软件的</font></span><span style="font-size: 10pt; font-family: Arial">J2EE</span><span style="font-size: 10pt"><font face="宋体">应用服务器JBOSS</font></span><span style="font-size: 10pt"><font face="宋体">中测试通过。</font></span><span style="font-size: 10pt; font-family: Arial"><br />
</span><font face="宋体"><span style="font-size: 10pt">　　首先，编写一个简单的计数器，代码如下：</span></font></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">1.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">package</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;accp.onlinecounter; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">2.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">class</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;OnlineCounter&nbsp;{ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">3.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">private</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">static</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">long</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;online&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">4.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">static</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">long</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;getOnline()&nbsp;{ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">5.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">return</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;online; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">6.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">7.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">static</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">void</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;raise(){ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">8.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;online++; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">9.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">10.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">static</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">void</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;reduce(){ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">11.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;online--; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">12.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;} </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">13.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">} </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 16.5pt"><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　然后，编写</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">实现类，在这个实现类的</font></span><span style="font-size: 10pt; font-family: Arial">sessionCreated</span><span style="font-size: 10pt"><font face="宋体">方法中调用</font></span><span style="font-size: 10pt; font-family: Arial">OnlineCounter</span><span style="font-size: 10pt"><font face="宋体">的</font></span><span style="font-size: 10pt; font-family: Arial">raise</span><span style="font-size: 10pt"><font face="宋体">方法，在</font></span><span style="font-size: 10pt; font-family: Arial">sessionDestroyed</span><span style="font-size: 10pt"><font face="宋体">方法中调用</font></span><span style="font-size: 10pt; font-family: Arial">OnlineCounter</span><span style="font-size: 10pt"><font face="宋体">的</font></span><span style="font-size: 10pt; font-family: Arial">reduce</span><font face="宋体"><span style="font-size: 10pt">方法，代码如下：</span></font></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">1.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">package</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;accp.onlinecounter; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">2.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">import</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;javax.servlet.http.<a href="http://www.javaresearch.org:88/source/j2ee1.3.1/javax/servlet/http/HttpSessionEvent.java.html" target="_blank"><u><span style="color: red">HttpSessionEvent</span></u></a>; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">3.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">import</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;javax.servlet.http.<a href="http://www.javaresearch.org:88/source/j2ee1.3.1/javax/servlet/http/HttpSessionListener.java.html" target="_blank"><u><span style="color: red">HttpSessionListener</span></u></a>; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">4.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">class</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;OnlineCounterListener&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">implements</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;<a href="http://www.javaresearch.org:88/source/j2ee1.3.1/javax/servlet/http/HttpSessionListener.java.html" target="_blank"><u><span style="color: red">HttpSessionListener</span></u></a>&nbsp;{ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">5.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">void</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;sessionCreated(<a href="http://www.javaresearch.org:88/source/j2ee1.3.1/javax/servlet/http/HttpSessionEvent.java.html" target="_blank"><u><span style="color: red">HttpSessionEvent</span></u></a>&nbsp;hse)&nbsp;{ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">6.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnlineCounter.raise(); </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">7.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;} </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">8.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">public</span></strong>&nbsp;<strong><span style="font-size: 14pt; color: blue; font-family: Arial">void</span></strong><span style="font-size: 14pt; font-family: Arial">&nbsp;sessionDestroyed(<a href="http://www.javaresearch.org:88/source/j2ee1.3.1/javax/servlet/http/HttpSessionEvent.java.html" target="_blank"><u><span style="color: red">HttpSessionEvent</span></u></a>&nbsp;hse)&nbsp;{ </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">9.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnlineCounter.reduce(); </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">10.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;} </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">11.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">} </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 16.5pt"><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　再然后，把这个</font></span><span style="font-size: 10pt; font-family: Arial">HttpSessionListener</span><span style="font-size: 10pt"><font face="宋体">实现类注册到网站应用中，也就是在网站应用的</font></span><span style="font-size: 10pt; font-family: Arial">web.xml</span><font face="宋体"><span style="font-size: 10pt">中加入如下内容：</span></font></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">1.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;web-app&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">2.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">3.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">4.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener-</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">class</span></strong><span style="font-size: 14pt; font-family: Arial">&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">5.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accp.OnlineCounterListener </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">6.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/listener-</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">class</span></strong><span style="font-size: 14pt; font-family: Arial">&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">7.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/listener&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">8.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">9.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;/web-app&gt; </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 16.5pt"><span style="font-size: 10pt; font-family: Arial"><br />
</span><span style="font-size: 10pt"><font face="宋体">　　</font></span><span style="font-size: 10pt; font-family: Arial">OK</span><span style="font-size: 10pt"><font face="宋体">，在线人数统计功能已经实现，只要在</font></span><span style="font-size: 10pt; font-family: Arial">JSP</span><font face="宋体"><span style="font-size: 10pt">页面中加入下面这样的脚本就能显示但前在线人数了：</span></font></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">1.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;%@&nbsp;page&nbsp;language=</span><span style="font-size: 14pt; color: rgb(255,51,255); font-family: Arial">"java"</span><span style="font-size: 14pt; font-family: Arial">&nbsp;pageEncoding=</span><span style="font-size: 14pt; color: rgb(255,51,255); font-family: Arial">"GB2312"</span><span style="font-size: 14pt; font-family: Arial">&nbsp;%&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">2.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;%@&nbsp;page&nbsp;</span><strong><span style="font-size: 14pt; color: blue; font-family: Arial">import</span></strong><span style="font-size: 14pt; font-family: Arial">=</span><span style="font-size: 14pt; color: rgb(255,51,255); font-family: Arial">"accp.OnlineCounter"</span><span style="font-size: 14pt; font-family: Arial">&nbsp;%&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">3.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;html&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">4.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt;&lt;title&gt;On&nbsp;Line&nbsp;Counert&lt;/title&gt;&lt;/head&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">5.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&nbsp;bgcolor=</span><span style="font-size: 14pt; color: rgb(255,51,255); font-family: Arial">"#FFFFFF"</span><span style="font-size: 14pt; font-family: Arial">&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">6.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;line<span style="color: #ffff00"><span style="color: #00ff00"><span style="font-size: 14pt; font-family: Arial">:&lt;%=OnlineCounter.getOnline()%&gt; <br />
</span></span></span></span><span style="font-size: 14pt; font-family: Arial">7.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt; </span></p>
<p style="background: white 0% 50%; margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; line-height: 16.5pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"><span style="font-size: 14pt; font-family: Arial">8.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: Arial">&lt;/html&gt; </span></p>
</div>
<img src ="http://www.blogjava.net/Crying/aggbug/151660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-10-10 11:10 <a href="http://www.blogjava.net/Crying/articles/151660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用java实现对文件的各种操作</title><link>http://www.blogjava.net/Crying/articles/148971.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Fri, 28 Sep 2007 02:09:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/148971.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/148971.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/148971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/148971.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/148971.html</trackback:ping><description><![CDATA[<div class="postTitle"><a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.blogjava.net/coacoa2008/archive/2007/09/10/144019.html">&nbsp;</a></div>
<p>　文件的建立/检查与删除 </p>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;文件的建立、检查与删除&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath(""); <br />
//out.println(path); <br />
File f=new File(path,"File.txt"); <br />
//out.println(f); <br />
//out.println(f.exists()); <br />
<br />
if(f.exists()){//检查File.txt是否存在 <br />
f.delete();//删除File.txt文件 <br />
out.println(path + "\\File.txt 存在，已删除。"); <br />
}else{ <br />
f.createNewFile();//在当前目录下建立一个名为File.txt的文件 <br />
out.println(path + "\\File.txt 不存在，已建立。");//输出目前所在的目录路径 <br />
} <br />
%&gt; </p>
<h4>　　目录的建立/检查与删除 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;目录的建立/检查与删除&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath(""); <br />
path=path + "\\Sub";//将要建立的目录路径 <br />
File d=new File(path);//建立代表Sub目录的File对象，并得到它的一个引用 <br />
if(d.exists()){//检查Sub目录是否存在 <br />
d.delete(); <br />
out.println("Sub目录存在，已删除"); <br />
}else{ <br />
d.mkdir();//建立Sub目录 <br />
out.println("Sub目录不存在，已建立"); <br />
} <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　如何在JSP中处理虚拟目录 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;JSP中如何处理虚拟目录&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
取得虚拟目录对应的磁盘路径&lt;br&gt; <br />
Web站点主目录的位置为&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("/")%&gt;&lt;/font&gt;&lt;br&gt; <br />
JSP网页所在的目录位置&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("./")%&gt;&lt;/font&gt;&lt;br&gt; <br />
JSP网页所在目录上一层目录的位置&lt;font color=#ff0000&gt;&lt;%=request.getRealPath("../")%&gt;&lt;/font&gt;&lt;br&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
<br />
文件属性的取得 </p>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.util.Date,java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;文件属性的取得&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("/"); <br />
File f=new File(path,"ReadData.txt"); <br />
if(f.exists()){ <br />
%&gt; <br />
&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt; <br />
文件长度为：&lt;%=f.length()%&gt; <br />
&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt; <br />
&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt; <br />
&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt; <br />
&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt; <br />
&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt; <br />
文件的最后修改日期为：&lt;%=new Date(f.lastModified())%&gt;&lt;br&gt; <br />
&lt;% <br />
}else{ <br />
f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文件 <br />
%&gt; <br />
&lt;%=f.getName()%&gt;的属性如下：&lt;br&gt;&lt;br&gt; <br />
文件长度为：&lt;%=f.length()%&gt; <br />
&lt;%=f.isFile()?"是文件":"不是文件"%&gt;&lt;br&gt; <br />
&lt;%=f.isDirectory()?"是目录":"不是目录"%&gt;&lt;br&gt; <br />
&lt;%=f.canRead()?"可读取":"不可读取"%&gt;&lt;br&gt; <br />
&lt;%=f.canWrite()?"可写入":"不可写入"%&gt;&lt;br&gt; <br />
&lt;%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%&gt;&lt;br&gt; <br />
文件的最后修改日期为：&lt;%=new Date(f.lastModified())%&gt;&lt;br&gt; <br />
&lt;% <br />
} <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　取出目录中文件的方法 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;取出目录中文件的方法--列出目录中的文件&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("/"); <br />
File d=new File(path);//建立当前目录中文件的File对象 <br />
File list[]=d.listFiles();//取得代表目录中所有文件的File对象数组 <br />
out.println("&lt;font color=#ff0000&gt;" + path + "目录下的文件：&lt;/font&gt;&lt;br&gt;"); <br />
for(int i=0;i&lt;list.length;i++){ <br />
if(list&lt;I&gt;.isFile()){ <br />
out.println(list&lt;I&gt;.getName() + "&lt;br&gt;"); <br />
} <br />
} <br />
out.println("&lt;br&gt;&lt;font color=#ff0000&gt;" + path + "目录下的目录：&lt;/font&gt;&lt;br&gt;"); <br />
for(int i=0;i&lt;list.length;i++){ <br />
if(list&lt;I&gt;.isDirectory()){ <br />
out.println(list&lt;I&gt;.getName() + "&lt;br&gt;"); <br />
} <br />
} <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
<br />
　判断是否为空白文件 </p>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;判断是否为空白文件&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("/"); <br />
out.println(path); <br />
FileReader fr=new FileReader(path + "\\AtEnd.txt");//建立FileReader对象，并实例化为fr <br />
//对FileReader类生成的对象使用read()方法，可以从字符流中读取下一个字符。 <br />
if(fr.read()==-1)//判断是否已读到文件的结尾 <br />
{ <br />
out.print("AtEnd.txt文件中没有数据&lt;br&gt;"); <br />
}else{ <br />
out.println("AtEnd.txt文件中有数据"); <br />
} <br />
fr.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;B&gt;读取所有的文件数据&lt;/B&gt; <br />
&lt;ccid_nobr&gt; <br />
&lt;table width="400" border="1" cellspacing="0" cellpadding="2" <br />
bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"&gt; <br />
&lt;tr&gt; <br />
&lt;td bgcolor="e6e6e6" class="code" style="font-size:9pt"&gt; <br />
&lt;pre&gt;&lt;ccid_code&gt; &lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*,java.lang.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;读取所有的文件数据&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("."); <br />
FileReader fr=new FileReader(path + "\\ReadData.txt"); <br />
//关键在于读取过程中，要判断所读取的字符是否已经到了文件的末尾， <br />
并且这个字符是不是文件中的断行符，即判断该字符值是否为13。 <br />
int c=fr.read();//从文件中读取一个字符 <br />
//判断是否已读到文件结尾 <br />
while(c!=-1){ <br />
out.print((char)c);//输出读到的数据 <br />
c=fr.read();//从文件中继续读取数据 <br />
if(c==13){//判断是否为断行字符 <br />
out.print("&lt;br&gt;");//输出分行标签 <br />
fr.skip(1);//略过一个字符 <br />
//c=fr.read();//读取一个字符 <br />
} <br />
} <br />
fr.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　一行一行读取数据 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;文件读取&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("");//取得当前目录的路径 <br />
FileReader fr=new FileReader(path + "\\file\\inc\\t.txt");//建立FileReader对象，并实例化为fr <br />
BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br <br />
String Line=br.readLine();//从文件读取一行字符串 <br />
//判断读取到的字符串是否不为空 <br />
while(Line!=null){ <br />
out.println(Line + "&lt;br&gt;");//输出从文件中读取的数据 <br />
Line=br.readLine();//从文件中继续读取一行数据 <br />
} <br />
br.close();//关闭BufferedReader对象 <br />
fr.close();//关闭文件 <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
<br />
<br />
略过文件中的字符不读取 </p>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;略过字节不读取&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("."); <br />
FileReader fr=new FileReader(path + "\\ReadData.txt"); <br />
fr.skip(2);//跳过2个字节 <br />
int c=fr.read();//读取一个字节 <br />
while(c!=-1){ <br />
out.print((char)c); <br />
c=fr.read(); <br />
} <br />
fr.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　将数据写入文件 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;将数据写入文件&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("."); <br />
FileWriter fw=new FileWriter(path + "\\WriteData.txt");//建立FileWriter对象，并实例化fw <br />
//将字符串写入文件 <br />
fw.write("大家好！"); <br />
fw.write("本书是《JSP编程技巧》"); <br />
fw.write("请多多指教！"); <br />
fw.write("email:stride@sina.com"); <br />
fw.close(); <br />
<br />
FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />
BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br <br />
String Line=br.readLine(); <br />
//读取一行数据 <br />
out.println(Line + "&lt;br&gt;"); <br />
br.close();//关闭BufferedReader对象 <br />
fr.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　将写入文件的数据分行 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;将写入文件的数据分行&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("."); <br />
FileWriter fw=new FileWriter(path + "\\WriteData.txt"); <br />
BufferedWriter bw=new BufferedWriter(fw); <br />
bw.write("大家好！"); <br />
bw.write("本书是《JSP编程技巧》。"); <br />
bw.newLine();//断行 <br />
bw.write("请多多指教！"); <br />
bw.newLine();//断行 <br />
bw.write("email: stride@sina.com"); <br />
bw.flush();//将数据更新至文件 <br />
fw.close();//关闭文件流 <br />
out.println("写入文件内容为：&lt;br&gt;"); <br />
FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />
BufferedReader br=new BufferedReader(fr); <br />
String Line=br.readLine();//读取一行数据 <br />
while(Line!=null){ <br />
out.println(Line + "&lt;br&gt;"); <br />
Line=br.readLine(); <br />
} <br />
fr.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; </p>
<h4>　　如何将数据追加写入到文件 </h4>
<p class="code">&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.io.*"%&gt; <br />
&lt;html&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;将写入文件的数据分行&lt;/title&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;% <br />
String path=request.getRealPath("."); <br />
RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw"); <br />
//定义一个类RandomAccessFile的对象，并实例化 <br />
rf.seek(rf.length());//将指针移动到文件末尾 <br />
rf.writeBytes("\nAppend a line to the file!"); <br />
rf.close();//关闭文件流 <br />
out.println("写入文件内容为：&lt;br&gt;"); <br />
FileReader fr=new FileReader(path + "\\WriteData.txt"); <br />
BufferedReader br=new BufferedReader(fr);//读取文件的BufferedRead对象 <br />
String Line=br.readLine(); <br />
while(Line!=null){ <br />
out.println(Line + "&lt;br&gt;"); <br />
Line=br.readLine(); <br />
} <br />
fr.close();//关闭文件 <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;</p>
  <img src ="http://www.blogjava.net/Crying/aggbug/148971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-09-28 10:09 <a href="http://www.blogjava.net/Crying/articles/148971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获得jsp路径</title><link>http://www.blogjava.net/Crying/articles/148956.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Fri, 28 Sep 2007 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/148956.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/148956.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/148956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/148956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/148956.html</trackback:ping><description><![CDATA[<p>如果你请求的URL是&nbsp; <a href="http://localhost:8080/demo/Index.jsp"><strong>http://localhost:8080/demo/Index.jsp</strong></a><br />
<br />
<strong>request.getScheme()&nbsp;&nbsp;&nbsp;&nbsp;~~~~~~&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</strong><a href="http://localhost:8080/demo/Index.jsp"><strong>http</strong></a><br />
<strong>request.getServerName()</strong>&nbsp;&nbsp; ~~~~~~&gt;&nbsp; <span style="color: #0000ff"><strong>localhost<br />
<span style="color: #000000">request.getServerPort() ~~~~~~~~~&gt;&nbsp; </span>8080</strong><br />
</span><strong>request.getContextPath()&nbsp;&nbsp;&nbsp; ~~~~~~&gt;&nbsp;&nbsp; <span style="color: #0000ff">/demo<br />
</span>request.getRequestPath()</strong>&nbsp; ~~~~~~~&gt;<span style="color: #0000ff">&nbsp;<strong> /Index.jsp<br />
</strong></span><strong>request.gerRequestURI()&nbsp; ~~~~~~~&gt;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">/demo/Index.jsp<br />
</span><br />
request.getRequestURL()</strong>&nbsp; ~~~~~~~&gt;&nbsp; <a href="http://localhost:8080/demo/Index.jsp"><strong>http://localhost:8080/demo/Index.jsp</strong></a><br />
<br />
<strong>request.getRealPath("")</strong>&nbsp;~~~~~~~~~&gt; <span style="color: #0000ff"><strong>D:\apache-tomcat-6.0.10\webapps\demo<br />
<br />
<br />
<br />
别人写的http://blog.csdn.net/luobo525/archive/2006/11/21/1401577.aspx<br />
</strong></span><br />
<br />
</p>
<img src ="http://www.blogjava.net/Crying/aggbug/148956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-09-28 09:35 <a href="http://www.blogjava.net/Crying/articles/148956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts中的文件上传和下载</title><link>http://www.blogjava.net/Crying/articles/146747.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 20 Sep 2007 04:06:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/146747.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/146747.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/146747.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/146747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/146747.html</trackback:ping><description><![CDATA[JSP页面<br />
&nbsp;&lt;%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%&gt;<br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%&gt; <br />
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%&gt; <br />
&lt;html&gt; <br />
&nbsp;&lt;head&gt;<br />
&nbsp;&nbsp;&lt;title&gt;JSP for FileForm form&lt;/title&gt;<br />
&nbsp;&lt;/head&gt;<br />
&nbsp;&lt;body&gt;<br />
&nbsp;&nbsp;&lt;html:form action="/file"<span style="color: #0000ff">&nbsp;enctype="multipart/form-data"</span>&gt;<br />
&nbsp;&nbsp;&nbsp;上传 :<span style="color: #0000ff">&nbsp;&lt;html:file property="myFile"/&gt;</span>&lt;html:errors name="fileError"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;html:submit value="上传"/&gt;<br />
&nbsp;&nbsp;&lt;/html:form&gt;<br />
&nbsp;&nbsp;&lt;html:img src="image/dd.jpg"/&gt;<br />
&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
/*******************************************************************************/<br />
对应的ActionForm<br />
package wsq.struts.form;
<p>import javax.servlet.http.HttpServletRequest;<br />
import org.apache.struts.action.ActionErrors;<br />
import org.apache.struts.action.ActionForm;<br />
import org.apache.struts.action.ActionMapping;<br />
import org.apache.struts.upload.FormFile;</p>
<p>/** <br />
&nbsp;* MyEclipse Struts<br />
&nbsp;* Creation date: 09-17-2007<br />
&nbsp;* <br />
&nbsp;*&nbsp;&nbsp; @author 王世清<br />
&nbsp;**/<br />
public class FileForm extends ActionForm {<br />
&nbsp;<br />
&nbsp;private static final long serialVersionUID = 1L;</p>
<p>&nbsp;private FormFile myFile;</p>
<p>&nbsp;public ActionErrors validate(ActionMapping mapping,<br />
&nbsp;&nbsp;&nbsp;HttpServletRequest request) {<br />
&nbsp;&nbsp;return null;<br />
&nbsp;}</p>
<p>&nbsp;public void reset(ActionMapping mapping, HttpServletRequest request) {<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>&nbsp;<br />
&nbsp;public static long getSerialVersionUID() {<br />
&nbsp;&nbsp;return serialVersionUID;<br />
&nbsp;}</p>
<p>&nbsp;public FormFile getMyFile() {<br />
&nbsp;&nbsp;return myFile;<br />
&nbsp;}</p>
<p>&nbsp;public void setMyFile(FormFile myFile) {<br />
&nbsp;&nbsp;this.myFile = myFile;<br />
&nbsp;}</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
}</p>
<br />
&nbsp; <br />
<br />
/**********************************************************/<br />
对应的Action <br />
<br />
<p><br />
package wsq.struts.action;<br />
import java.io.FileOutputStream;<br />
import java.io.IOException;<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
import org.apache.struts.action.Action;<br />
import org.apache.struts.action.ActionForm;<br />
import org.apache.struts.action.ActionForward;<br />
import org.apache.struts.action.ActionMapping;<br />
import org.apache.struts.upload.FormFile;</p>
<p>import wsq.struts.form.FileForm;</p>
<p>public class FileAction extends Action {<br />
&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;public ActionForward execute(ActionMapping mapping, ActionForm form,<br />
&nbsp;&nbsp;&nbsp;HttpServletRequest request, HttpServletResponse response)&nbsp; throws IOException{<br />
&nbsp;&nbsp;FileForm fileForm = (FileForm) form;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;FormFile file = fileForm.getMyFile();<br />
&nbsp;&nbsp;if (file == null)<br />
&nbsp;&nbsp;{&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;return mapping.findForward("error");<br />
&nbsp;&nbsp;}<br />
&nbsp;String dir=servlet.getServletContext().getRealPath("/image");//首先在你的项目下新建个（在&nbsp;webroot下）image文件夹<br />
/***注释的是按孙卫琴书上来的*************/<br />
//&nbsp;&nbsp;InputStream in=file.getInputStream();<br />
//&nbsp;&nbsp;OutputStream out=new FileOutputStream(dir+"/"+file.getFileName());<br />
//&nbsp;&nbsp;int bytesRead=0;<br />
//&nbsp;&nbsp;byte [] buffer=new byte[8000];<br />
//&nbsp;&nbsp;while((bytesRead=in.read(buffer, 0, 8000))!=-1)<br />
//&nbsp;&nbsp;{<br />
//&nbsp;&nbsp;&nbsp;out.write(buffer,0,bytesRead);<br />
//&nbsp;&nbsp;&nbsp;<br />
//&nbsp;&nbsp;}<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;FileOutputStream out = new FileOutputStream(dir+"/" + file.getFileName()); <br />
&nbsp;&nbsp;out.write(file.getFileData()); </p>
<p>&nbsp;&nbsp;out.close(); <br />
&nbsp;&nbsp;//in.close();<br />
&nbsp;&nbsp;file.destroy();<br />
&nbsp;<br />
&nbsp;&nbsp;System.out.println(file.getFileName()+"上传文件的名字");<br />
&nbsp;&nbsp;return null;<br />
&nbsp;}<br />
}<br />
</p>
<br />
<br />
<br />
/*************************************/<br />
大家还要记得传图片是会出现文件名乱码 解决的办法是写个过滤器 <br />
&nbsp; 要是不想写可以在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你 的TOMCATE目录下的\webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java<br />
TOMCAT也为你写好一个现成的&nbsp; 拿来就可以用了<br />
这两天尝试 用AJAX来写一个文件上传的&nbsp; 呵呵。。。<br />
<br />
<br />
<br />
<br />
 <img src ="http://www.blogjava.net/Crying/aggbug/146747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-09-20 12:06 <a href="http://www.blogjava.net/Crying/articles/146747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts 更深的理解</title><link>http://www.blogjava.net/Crying/articles/145872.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Mon, 17 Sep 2007 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/145872.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/145872.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/145872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/145872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/145872.html</trackback:ping><description><![CDATA[<strong>J2EE简介</strong><br />
<br />
　　J2EE是一个开放的、基于标准的平台，可以开发、部署和管理N层结构的、面向Web的、以服务器为中心的企业级应用，它是利用Java 2 平台来简化与多级企业解决方案的开发、部署和管理相关的诸多复杂问题的应用体系结构。<br />
<br />
　　J2EE平台采用一个多层次分布式的应用模式。这意味着应用逻辑根据功能被划分成组件，组成J2EE应用的不同应用组件安装在不同的服务器上，这种划分是根据应用组件属于多层次J2EE环境中的哪一个层次来决定的。如图1所示，J2EE应用可以由三或四个层次组成，J2EE多层次应用一般被认为是三层应用，因为它们是被分布在三个不同的地点：客户端机器、J2EE服务器和数据库或后端的传统系统服务器。三层架构应用是对标准的客户端/服务器应用架构的一种扩展， 即在客户端应用和后台存储之间增加一个多线程应用服务器。 <br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img src="http://java.chinaitlab.com/UploadFiles_8734/200512/20051229095543679.gif" border="0"  alt="" /></div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　J2EE体系包括JSP、Servlet、EJB、WEB SERVICE等多项技术。这些技术的出现给电子商务时代的WEB应用开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来，形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。<br />
<br />
　　一个成功的软件需要有一个成功的架构，但软件架构的建立是一个复杂而又持续改进的过程，软件开发者们不可能对每个不同的项目做不同的架构，而总是尽量重用以前的架构，或开发出尽量通用的架构方案，Struts就是流行的基于J2EE的架构方案之一，其他常用的基于J2EE的架构方案还有Turbine、RealMothods等。本文主要探讨Struts框架技术的应用。<br />
<br />
　　<strong>J2EE应用程序架构的发展</strong><br />
<br />
　　在J2EE应用程序架构的发展路程中，主要经历了两个大的阶段：<br />
<br />
　　1、Model 1<br />
<br />
　　在JSP页面中结合业务逻辑、服务器端处理程序和HTML，在JSP页面中同时实现显示、业务逻辑和流程控制，从而快速的完成Web应用开发。这种模型的不足之处：1）不利于应用扩展和更新。2）业务逻辑和表示逻辑混合在JSP页面中没有进行抽象和分离，不利于应用系统业务的重用和改动。<br />
<br />
　　2、Model 2<br />
<br />
　　表示的是基于MVC模式的框架。根据Model 2，servlet 处理数据存取和导航流， JSP处理表现。Model 2 使Java 工程师和HTML设计者分别工作于它们所擅长和负责的部分。Model 2应用的一部分发生改变并不强求其他部分也跟着发生改变。HTML 开发人员可以改变程序的外观和感觉，并不需要改变后端servlet的工作方式。把应用逻辑、处理过程和显示逻辑分成不同的组件实现。弥补了Model1的不足。<br />
<br />
　　Struts框架技术<br />
<br />
　　Struts 框架就是基于Model 2 的架构，也就是基于MVC模式的框架技术。它是一个免费的开源的WEB层的应用框架,具有很高的可配置性，和有一个不断增长的特性列表。一个前端控制组件，一系列动作类，动作映射，处理XML的实用工具类，服务器端java bean 的自动填充，支持验证的WEB 表单，国际化支持，生成HTML，实现表现逻辑和模板组成了struts的灵魂。图2显示了Struts组件是如何一起工作的。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img src="http://java.chinaitlab.com/UploadFiles_8734/200512/20051229095544510.gif" border="0"  alt="" /></div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　Struts 的ActionServlet 控制导航流。其他Struts 类，比如Action, 用来访问业务逻辑类。当 ActionServlet 从容器接收到一个请求，它使用URI (或者路径&#8220;path&#8221;) 来决定哪个Action 将用来处理请求。一个 Action可以校验输入，并且访问业务层以从数据库或其他数据服务中检索信息。<br />
<br />
　　为校验输入或者使用输入来更新数据库， Action 需要知道什么被提交上来。并不是强制每个Action 从请求中抓取这些值，而是由 ActionServlet 将输入绑定到JavaBean中。输入 bean是Struts ActionForm c类的子类。ActionServlet 通过查找请求的路径可以决定使用哪个ActionForm，Action 也是通过同样的方法选取的。每个Action都必须以HTTP 响应进行应答。 通常, Struts Action 并不自行加工响应信息，而是将请求转发到其他资源，比如JSP 页面。Struts 提供一个ActionForward 类，用来将一个页面的路径存储为逻辑名称。当完成业务逻辑后，Action 选择并向Servlet返回一个ActionForward。Servlet 然后使用存储在ActionForward 对象中的路径来调用页面完成响应。<br />
Struts 将这些细节都绑定在一个ActionMapping 对象中。每个ActionMapping 相对于一个特定的路径。当某个路径被请求时，Servlet 就查询ActionMapping 对象。ActionMapping对象告诉servlet哪个Actions、 ActionForms 和 ActionForwards 将被使用。<br />
<br />
　　所有这些细节，关于Action， ActionForm， ActionForward， ActionMapping，以及其他一些东西，都在struts-config.xml 文件中定义。 ActionServlet 在启动时读取这个配置文件，并创建一个配置对象数据库。在运行时，Struts 应用根据的是文件创建的配置对象，而不是文件本身。<br />
<br />
　　<strong>基于Struts框架的应用设计实例</strong><br />
<br />
　　本文以&#8220;面向铸造行业的网络化制造ASP平台开发&#8221;项目中的软件租用模块为例，来说明如何设计基于Struts框架的Web应用。在该模块中，用户合法登陆网站后，可以根据需要选择所要租用的软件类型及软件中的功能模块，确认信息提交服务器后，用户将收到系统给予的登陆密码，用户即可登陆网站，在线使用租用软件，实行业务托管。<br />
<br />
　　根据项目需求分析,确定该系统必须具备的性能有:1)良好的交互性:工作内容中有相当大的部分是人机交流,这就要求系统的交互性要强。2)较好的可扩展性:工作的内容和形式具有多变性,要求系统具有良好的可扩展性。3)良好的可维护性:系统投入使用后,主要是由管理员承担系统维护的工作,维护人员不定期变动,这就要求系统的可维护性强。4)具有较好的跨平台性:用户可能使用各种不同的操作系统,而且为了适应今后可能的变化,系统应具有较好的跨平台性。基于以上四点,在开发软件租用模块时,采用J2EE编程环境,并相应采用了专为J2EE定制的Struts框架。<br />
<br />
　　做基于Struts框架的项目开发,关键是要有一个好的整体模型,计划好系统中包括哪几个模块,每个模块各需要什么样的FormBean、JavaBean,各种处理结果都通过哪些JSP页面来展现,同时配置好struts-config.xml文件。本系统的设计模型如图3所示。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img src="http://java.chinaitlab.com/UploadFiles_8734/200512/20051229095544817.gif" border="0"  alt="" /></div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　ActionServlet接受所有的HTTP请求,然后根据配置文件的内容,决定将请求映射到哪一个Action对象,本系统中有两个Action对象,分别对应着登陆远程软件(LogonAction)和系统反馈密码(MailAction)。<br />
<br />
　　LogonAction首先会验证用户是否已经登录,如果没有登录则重定向到登录页面(Logon.jsp),验证通过后根据请求参数决定下一步的处理,如果用户还没有选择租用软件，则转到软件介绍租用界面（Query.jsp），选择需要租用的软件或软件的某些模块，提交信息后，MailAction使服务器向用户提交密码，用户接收到密码后，登陆运行软件。<br />
<br />
　　如果用户登陆软件成功，则通过配置文件struts-config.xml中的ActionForward，通过GetInfo对象把该用户租用的软件信息读取道FormBean中，然后调用JSP页面显示Bean里的数据。如果是保存数据信息,则调SaveInfo对象将FormBean里保持的信息存入数据库；如果是修改信息,则调ModifyInfo对象将FormBean里保持的修改后的信息存入数据库；如果是删除数据信息,则调用DeleteInfo对象将FormBean里保持的信息从数据库中删除。<br />
<br />
　　经过这样设计的系统,用户界面和数据处理已经完全分离,再加上在JSP页面中使用了自定义标记,使页面中没有了Java的脚本代码,这样Web界面的设计和后端程序的编写就有了清晰的界线,便于开发团队的分工,并且维护起来也很方便。<br />
<img src ="http://www.blogjava.net/Crying/aggbug/145872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-09-17 15:36 <a href="http://www.blogjava.net/Crying/articles/145872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts简介</title><link>http://www.blogjava.net/Crying/articles/141924.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Sat, 01 Sep 2007 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/141924.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/141924.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/141924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/141924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/141924.html</trackback:ping><description><![CDATA[<div><font size="3"><strong>一、 什么是Struts</strong> </div>
<div>框架（Framework）是可重用的，半完成的应用程序，可以用来产生专门的定制程序。 </div>
<div>您只要细心地研究真实的应用程序，就会发现程序大致上由两类性质不同的组件组成，一类与程序要处理的具体事务密切相关，我们不妨把它们叫做业务组件；另一类是应用服务。比如说：一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异，这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用，而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来，做成一个半成品程序，这样的半成品就是所谓的程序框架，再做一个新的东西时就不必白手起家，而是可以在这个基础上开始搭建。实际上，有些大型软件企业选择自己搭建这样的框架。但大多数中小型软件企业或者其他组织，没有条件自己建立框架。 </div>
<div>Struts作为一个开放原代码的应用框架，在最近几年得到了飞速的发展，在JSP Web应用开发中应用得非常广泛，有的文献上说它已经成为JSP Web应用框架的事实上的标准。那么，究竟什么是Struts呢？ </div>
<div>要回答这个问题还得从JSP Web应用的两种基本的结构模式:Model 1和Model 2说起，为了给读者一些实实在在的帮助，并力图让学习曲线变得平坦一些，我想采用实例驱动的方法来逐步深入地回答有关问题，因为，学一门技术的最好方法莫过于在实践中学习、在实践中体会，逐步加深对其精神实质的理解和把握，而不是一上来就引入一大堆新概念让大家觉得无所适从，或者死记硬背一大堆概念而面对一个真正的实际需求束手无策。正如，一个人即使在书本上学成了游泳博士，只要他不下水，我想他也是不大可能真正会游泳的。 </div>
<div>Model 1结构如图1所示： </div>
<div><img src="http://tech.ccidnet.com/col/attachment/2004/8/320186.jpg" border="0"  alt="" />&nbsp;</div>
<div>图1 </div>
<div>mode1 1是一个以JSP文件为中心的模式，在这种模式中JSP页面不仅负责表现逻辑，也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中，这种处理方式，对一些规模很小的项目如：一个简单的留言簿，也没什么太大的坏处，实际上，人们开始接触一些对自己来说是新的东西的时候，比如，用JSP访问数据库时，往往喜欢别人能提供一个包含这一切的单个JSP页面，因为这样在一个页面上他就可以把握全局，便于理解。但是，用Model 1模式开发大型时，程序流向由一些互相能够感知的页面决定，当页面很多时要清楚地把握其流向将是很复杂的事情，当您修改一页时可能会影响相关的很多页面，大有牵一发而动全身的感觉，使得程序的修改与维护变得异常困难；还有一个问题就是程序逻辑开发与页面设计纠缠在一起，既不便于分工合作也不利于代码的重用，这样的程序其健壮性和可伸缩性都不好。 </div>
<div>Grady Booch等人在UML用户指南一书中，强调建模的重要性时，打了一个制作狗窝、私人住宅、和大厦的形象比喻来说明人们处理不同规模的事物时应该采用的合理方法一样，人们对不同规模的应用程序也应该采用不同的模式。 </div>
<div>为了克服Model 1的缺陷，人们引入了Model 2，如图2所示： </div>
<div><img src="http://tech.ccidnet.com/col/attachment/2004/8/320188.jpg" border="0"  alt="" />&nbsp;</div>
<div>图2 </div>
<div>它引入了"控制器"这个概念，控制器一般由servlet来担任，客户端的请求不再直接送给一个处理业务逻辑的JSP页面，而是送给这个控制器，再由控制器根据具体的请求调用不同的事务逻辑，并将处理结果返回到合适的页面。因此，这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点；另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后，JSP文件蜕变成一个单纯完成显示任务的东西，这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身，就构成了MVC模式。实践证明，MVC模式为大型程序的开发及维护提供了巨大的便利。 </div>
<div>其实，MVC开始并不是为Web应用程序提出的模式，传统的MVC要求M将其状态变化通报给V，但由于Web浏览器工作在典型的拉模式而非推模式，很难做到这一点。因此有些人又将用于Web应用的MVC称之为MVC2。正如上面所提到的MVC是一种模式，当然可以有各种不同的具体实现，包括您自己就可以实现一个体现MVC思想的程序框架，Struts就是一种具体实现MVC2的程序框架。它的大致结构如图三所示： </div>
<div><img src="http://tech.ccidnet.com/col/attachment/2004/8/320190.gif" border="0"  alt="" />&nbsp;</div>
<div>图三 </div>
<div>图三基本勾勒出了一个基于Struts的应用程序的结构，从左到右，分别是其表示层（view）、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收（ActionServlet Struts已经为我们写好了，只要您应用没有什么特别的要求，它基本上都能满足您的要求），根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping，将请求送给合适的Action去处理，解决由谁做的问题，它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件，开发人员一般都要在这里耗费大量的时间，它解决的是做什么的问题，它通过调用需要的业务组件（模型）来完成应用的业务，业务组件解决的是如何做的问题，并将执行的结果返回一个代表所需的描绘响应的JSP（或Action）的ActionForward对象给ActionServlet以将响应呈现给客户。 </div>
<div>过程如图四所示： </div>
<div><img src="http://tech.ccidnet.com/col/attachment/2004/8/320192.jpg" border="0"  alt="" />&nbsp;</div>
<div>图四 </div>
<div>这里要特别说明一下的是：就是Action这个类，上面已经说到了它是Struts中真正干活的地方，也是值得我们高度关注的地方。可是，关于它到底是属于控制层还是属于模型层，存在两种不同的意见，一种认为它属于模型层，如：《JSP Web编程指南》；另一些则认为它属于控制层如：《Programming Jakarta Struts》、《Mastering Jakarta Struts》和《Struts Kick Start》等认为它是控制器的一部分，还有其他一些书如《Struts in Action》也建议要避免将业务逻辑放在Action类中，也就是说，图3中Action后的括号中的内容应该从中移出，但实际中确有一些系统将比较简单的且不打算重用的业务逻辑放在Action中，所以在图中还是这样表示。显然，将业务对象从Action分离出来后有利于它的重用，同时也增强了应用程序的健壮性和设计的灵活性。因此，它实际上可以看作是Controller与Model的适配器，如果硬要把它归于那一部分，笔者更倾向于后一种看法，即它是Controller的一部分，换句话说，它不应该包含过多的业务逻辑，而应该只是简单地收集业务方法所需要的数据并传递给业务对象。实际上，它的主要职责是： </div>
<div></font><font size="3">校验前提条件或者声明 </div>
<div></font><font size="3">调用需要的业务逻辑方法 </div>
<div></font><font size="3">检测或处理其他错误 </div>
<div></font><font size="3">路由控制到相关视图 </div>
<div>上面这样简单的描述，初学者可能会感到有些难以接受，下面举个比较具体的例子来进一步帮助我们理解。如：假设，我们做的是个电子商务程序，现在程序要完成的操作任务是提交定单并返回定单号给客户，这就是关于做什么的问题，应该由Action类完成，但具体怎么获得数据库连接，插入定单数据到数据库表中，又怎么从数据库表中取得这个定单号（一般是自增数据列的数据），这一系列复杂的问题，这都是解决怎么做的问题，则应该由一个（假设名为orderBo）业务对象即Model来完成。orderBo可能用一个返回整型值的名为submitOrder的方法来做这件事，Action则是先校验定单数据是否正确，以免常说的垃圾进垃圾出；如果正确则简单地调用orderBo的submitOrder方法来得到定单号；它还要处理在调用过程中可能出现任何错误；最后根据不同的情况返回不同的结果给客户。 </div>
<div><strong>二、为什么要使用Struts框架</strong> </div>
<div>既然本文的开始就说了，自己可以建这种框架，为什么要使用Struts呢？我想下面列举的这些理由是显而易见的：首先，它是建立在MVC这种公认的好的模式上的，Struts在M、V和C上都有涉及，但它主要是提供一个好的控制器和一套定制的标签库上，也就是说它的着力点在C和V上，因此，它天生就有MVC所带来的一系列优点，如：结构层次分明，高可重用性，增加了程序的健壮性和可伸缩性，便于开发与设计分工，提供集中统一的权限控制、校验、国际化、日志等等；其次，它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护，并且经受了实战的检验，使其功能越来越强大，体系也日臻完善；最后，是它对其他技术和框架显示出很好的融合性。如，现在，它已经与tiles融为一体，可以展望，它很快就会与JSF等融会在一起。当然，和其他任何技术一样，它也不是十全十美的，如：它对类和一些属性、参数的命名显得有些随意，给使用带来一些不便；还有如Action类execute方法的只能接收一个ActionForm参数等。但瑕不掩瑜，这些没有影响它被广泛使用。 </div>
<div><strong>三、Struts的安装与基本配置</strong> </div>
<div>我们主要针对Struts1.1版本进行讲解，这里假定读者已经配置好java运行环境和相应的Web容器，本文例子所使用的是j2sdk和Tomcat4.1.27。下面，将采用类似于step by step的方式介绍其基础部分。 </div>
<div><em>安装Struts</em> </div>
<div>到http://jakarta.apache.org/ 下载Struts的安装文件，本文例子使用的是1.1版。 </div>
<div>&shy;</div>
<div>接下来您要进行如下几个步骤来完成安装： </div>
<div>1、解压下载的安装文件到您的本地硬盘 </div>
<div>2、生成一个新的Web应用，假设我们生成的应用程序的根目录在/Webapps/mystruts目录。在server.xml文件中为该应用新建一个别名如/mystruts </div>
<div>3、从第1步解压的文件中拷贝下列jar文件到/Webapps/mystruts/WEB-INF/lib目录，主要文件有如下一些。 </div>
<div>&shy;</div>
<div></font></div>
<div>&shy;</div>
<div><font size="3">4、创建一个web.xml文件，这是一个基于servlet的Web应用程序都需要的部署描述文件，一个Struts Web应用，在本质上也是一个基于servlet的Web应用，它也不能例外。 </div>
<div>&shy;</div>
<div>Struts有两个组件要在该文件中进行配置，它们是：ActionServlet和标签库。下面是一个配置清单： </div>
<div>&shy;</div>
<div></font></div>
<div>&shy;</div>
<div><font size="3">上面我们在web.xml中完成了对servlet和标签库的基本配置，而更多的框架组件要在struts-config.xml中进行配置： </div>
<div>5、创建一个基本的struts-config.xml文件，并把它放在/Webapps/mystruts/WEB-INF/目录中，该文件是基于Struts应用程序的配置描述文件，它将MVC结构中的各组件结合在一起，开发的过程中会不断对它进行充实和更改。在Struts1.0时，一个应用只能有一个这样的文件，给分工开发带来了一些不便，在Struts1.1时，可以有多个这样的文件，将上述缺点克服了。需在该文件中配置的组件有：data-sources</font></div>
<div><font size="3">配置清单如下： </font></div>
<div><font size="3">到此为止，我们已经具备了完成一个最简单Struts应用的所需的各种组件。前面已经提到，在开发过程中我们会不断充实和修改上面两个配置描述文件。下面我们将实际做一个非常简单的应用程序来体验一下Struts应用开发的真实过程，以期对其有一个真实的认识。在完成基础部分的介绍后，笔者会给出一些在实际开发中经常用到而又让初学者感到有些难度的实例。最后，会介绍Struts与其他框架的关系及结合它们生成应用程序的例子。 </font></div>
<img src ="http://www.blogjava.net/Crying/aggbug/141924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2007-09-01 14:37 <a href="http://www.blogjava.net/Crying/articles/141924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>