﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-极限编程员-随笔分类-JSP基础类</title><link>http://www.blogjava.net/feng0801/category/54458.html</link><description>学习交流平台</description><language>zh-cn</language><lastBuildDate>Tue, 18 Aug 2015 20:19:58 GMT</lastBuildDate><pubDate>Tue, 18 Aug 2015 20:19:58 GMT</pubDate><ttl>60</ttl><item><title>为什么要两次调用encodeURI来解决乱码问题</title><link>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Tue, 18 Aug 2015 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/426866.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/426866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/426866.html</trackback:ping><description><![CDATA[<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span style="font-family: 'Courier New'; background-color: rgb(245,245,245)">今天遇到调用encodeURL调用二次的疑问，虽然之前知道要调用二次，但是具体不是太清楚里面具体的运行过程，这是转载的这个写的比较详细，把整个运行过程详细解读了一下，非常不错所以转载过了供其他人分享。<br />.encodeURL函数主要是来对URI来做转码，它默认是采用的UTF-8的编码.</span><br /><span style="font-family: 'Courier New'; background-color: rgb(245,245,245)">. UTF-8编码的格式:一个汉字来三个字节构成，每一个字节会转换成16进制的编码，同时添加上%号.</span><br /></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'">假设页面端输入的中文是一个&#8220;中&#8221;，按照下面步骤进行解码</span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(128,0,0)">1</span><span style="font-family: 'Courier New'">.第一次encodeURI，<span style="color: rgb(255,0,255); line-height: 1.5">按照utf</span></span><span style="font-family: 'Courier New'; color: rgb(255,0,255)">-8方式获取字节数组变成[-28,-72-83]，对字节码数组进行遍历，把每个字节转化成对应的16进制数，这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD] &nbsp;此时已经没有了多字节字符，全部是单字节字符。</span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>2、<span style="font-family: 'Courier New'">第二次encodeURI，进行编码，会把%看成一个转义字符，并不编码%以后字符，会把%编码成%25.把数组最后变成</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">然后就把处理后的数据</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">发往服务器端，<br />当应用服务器调用getParameter方法，getParameter方法会去向应用服务器请求参数<br />应用服务器最初获得的就是发送来的</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">，应用服务器会对这个数据进行URLdecode操作，应用服务器进行解码的这一次，不管是按照UTF-8，还是GBK，还是ISO-8859，,都能得到</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%E4,%B8,%AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">，因为都会把%25解析成%.并把这个值返回给getParameter方法</span></strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>3\、再用UTF-8解码一次，就得到"中"了。</strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>想想看，如果不编码两次，当服务器自动解码的时候，假如是按照ISO-8859去解码UTF-8编码的东西，就是会出现乱码。</strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px">JS:</p>
<div class="dp-highlighter bg_sql" style="overflow: hidden; border-top-color: rgb(204,204,204); width: 938px; white-space: normal; word-spacing: 0px; text-transform: none; border-left-color: rgb(204,204,204); color: rgb(85,85,85); border-bottom-color: rgb(204,204,204); text-align: left; padding-top: 1px; font: 12px/35px Consolas, 'Courier New', Courier, mono, serif; margin: 18px 0px; widows: 1; border-right-color: rgb(204,204,204); letter-spacing: normal; background-color: rgb(231,229,220); text-indent: 0px; -webkit-text-stroke-width: 0px">
<div class="bar" style="padding-left: 45px">
<div class="tools" style="color: silver; padding-bottom: 10px; padding-top: 3px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; padding-left: 10px; border-left: rgb(108,226,108) 3px solid; padding-right: 8px; background-color: rgb(248,248,248); font-stretch: normal"><strong>[sql]</strong><span class="Apple-converted-space">&nbsp;</span><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" title="view plain" class="ViewSource" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="copy" class="CopyToClipboard" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">copy</a> 
<div style="height: 18px; width: 18px; position: absolute; left: 417px; z-index: 99; top: 833px"><embed id="ZeroClipboardMovie_1" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" height="18" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=1&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false"></div></div></div>
<ol class="dp-sql" style="list-style-type: decimal; border-top: medium none; border-right: medium none; border-bottom: medium none; color: rgb(92,92,92); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 1px 45px; border-left: medium none; padding-right: 0px; background-color: rgb(255,255,255)"><li class="alt" style="border-top-style: none; list-style-type: decimal-leading-zero; list-style-position: outside; border-bottom-style: none; color: ; padding-bottom: 0px !important; padding-top: 0px !important; border-right-style: none; padding-left: 10px !important; margin: 0px; border-left: rgb(108,226,108) 3px solid; line-height: 18px; padding-right: 3px !important; background-color: rgb(255,255,255)"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">document.authorityForm.</span><span class="keyword" style="border-top: medium none; border-right: medium none; border-bottom: medium none; font-weight: bold; color: rgb(0,102,153); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">action</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">&nbsp;=&nbsp;basePath3+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"User_viewUser.do?id="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+id+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"&amp;roleName="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+encodeURI(encodeURI(roleName))+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"&amp;roleType="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+roleType;&nbsp;&nbsp;</span></span></li></ol></div>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><br />JAVA后台：<br />&nbsp;&nbsp;&nbsp;</p>
<div class="dp-highlighter bg_sql" style="overflow: hidden; border-top-color: rgb(204,204,204); width: 938px; white-space: normal; word-spacing: 0px; text-transform: none; border-left-color: rgb(204,204,204); color: rgb(85,85,85); border-bottom-color: rgb(204,204,204); text-align: left; padding-top: 1px; font: 12px/35px Consolas, 'Courier New', Courier, mono, serif; margin: 18px 0px; widows: 1; border-right-color: rgb(204,204,204); letter-spacing: normal; background-color: rgb(231,229,220); text-indent: 0px; -webkit-text-stroke-width: 0px">
<div class="bar" style="padding-left: 45px">
<div class="tools" style="color: silver; padding-bottom: 10px; padding-top: 3px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; padding-left: 10px; border-left: rgb(108,226,108) 3px solid; padding-right: 8px; background-color: rgb(248,248,248); font-stretch: normal"><strong>[sql]</strong><span class="Apple-converted-space">&nbsp;</span><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" title="view plain" class="ViewSource" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="copy" class="CopyToClipboard" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">copy</a> 
<div style="height: 18px; width: 18px; position: absolute; left: 417px; z-index: 99; top: 1043px"><embed id="ZeroClipboardMovie_2" name="ZeroClipboardMovie_2" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" height="18" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=2&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false"></div></div></div>
<ol class="dp-sql" style="list-style-type: decimal; border-top: medium none; border-right: medium none; border-bottom: medium none; color: rgb(92,92,92); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 1px 45px; border-left: medium none; padding-right: 0px; background-color: rgb(255,255,255)"><li class="alt" style="border-top-style: none; list-style-type: decimal-leading-zero; list-style-position: outside; border-bottom-style: none; color: ; padding-bottom: 0px !important; padding-top: 0px !important; border-right-style: none; padding-left: 10px !important; margin: 0px; border-left: rgb(108,226,108) 3px solid; line-height: 18px; padding-right: 3px !important; background-color: rgb(255,255,255)"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">roleName&nbsp;=&nbsp;java.net.URLDecoder.decode(getRequest().getParameter(</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"roleName"</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">),</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"UTF-8"</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">);&nbsp;&nbsp;</span></span></li></ol></div><img src ="http://www.blogjava.net/feng0801/aggbug/426866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2015-08-18 11:20 <a href="http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件上传主要的部分</title><link>http://www.blogjava.net/feng0801/archive/2010/12/03/339754.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Fri, 03 Dec 2010 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2010/12/03/339754.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/339754.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2010/12/03/339754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/339754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/339754.html</trackback:ping><description><![CDATA[package mypack;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*; <br />
import java.io.*; <br />
public class DownloadServlet extends HttpServlet {&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream out; //输出响应正文的输出流&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream in; //读取本地文件的输入流 //获得filename请求参数&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filename=request.getParameter("filename");&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(filename==null){&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out=response.getOutputStream();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write("Please input filename.".getBytes());&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //创建读取本地文件的输入流&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in= getServletContext().getResourceAsStream("/store/"+filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int length=in.available(); //设置响应正文的MIME类型&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType("application/force-download");&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader("Content-Length",String.valueOf(length));&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader("Content-Disposition", "attachment;filename=\""+filename +"\" ");/** 把本地文件中的数据发送给客户 */&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;out=response.getOutputStream();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;int bytesRead = 0;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;byte[] buffer = new byte[512];&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while ((bytesRead = in.read(buffer)) != -1)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(buffer, 0, bytesRead);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.close();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;} <br />
} 
 <img src ="http://www.blogjava.net/feng0801/aggbug/339754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2010-12-03 22:04 <a href="http://www.blogjava.net/feng0801/archive/2010/12/03/339754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp中读取mysql数据库的Bolb类型</title><link>http://www.blogjava.net/feng0801/archive/2010/11/16/338172.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Tue, 16 Nov 2010 05:49:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2010/11/16/338172.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/338172.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2010/11/16/338172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/338172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/338172.html</trackback:ping><description><![CDATA[如果你在你的数据库中存的Blob类型的图片，你想读取它并显示为图片。你可以先建一个showimage.jsp页面，如果你连接数据库的密码和用户名跟这里不一样，记得要改一下不然就会出错。 
<blockquote style="margin-right: 0px" dir="ltr">
<div>&lt;%@ page contentType="text/html;charset=bg2312"%&gt;<br _extended="true" />&lt;%@ page import="java.sql.*" %&gt;<br _extended="true" />&lt;html&gt;<br _extended="true" />&lt;head&gt;<br _extended="true" />&lt;title&gt;显示数据库图片测试页&lt;/title&gt;<br _extended="true" />&lt;/head&gt;<br _extended="true" />&lt;body&gt;<br _extended="true" />&lt;%<br _extended="true" />Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br _extended="true" />Connection con=DriverManager.getConnection("jdbc:odbc:denglu","root","root");<br _extended="true" />Statement stmt=con.createStatement();<br _extended="true" />String sql=new String();<br _extended="true" />sql = "select id from picturenews";<br _extended="true" />ResultSet rs=stmt.executeQuery(sql);<br _extended="true" />//显示最后一条记录的图片<br _extended="true" />rs.last();<br _extended="true" />%&gt;<br _extended="true" />&lt;table&gt;<br _extended="true" />&lt;tr&gt;&lt;td&gt;&lt;img src='testimageout.jsp?id=&lt;%=rs.getInt("id")%&gt;'&gt;&lt;/td&gt;&lt;/tr&gt;<br _extended="true" />&lt;/table&gt;<br _extended="true" />&lt;/body&gt;<br _extended="true" />&lt;/html&gt;&nbsp;</div></blockquote>
<div>在建另一页面读取数据库中图片testimageout.jsp<br /></div>
<blockquote style="margin-right: 0px" dir="ltr">
<div>&lt;%@ page contentType="text/html; charset=gbk" %&gt; </div>
<div>&lt;%@ page import="java.io.*"%&gt;</div>
<div>&lt;%@ page import="java.sql.*, javax.sql.*" %&gt;</div>
<div>&lt;%@ page import="java.util.*"%&gt;</div>
<div>&lt;%@ page import="java.math.*"%&gt;</div>
<div><br /></div>
<div>&lt;%</div>
<div>String photo_no = request.getParameter("photo_no");</div>
<div><br /></div>
<div>//mysql连接&nbsp;</div>
<div>Class.forName("com.mysql.jdbc.Driver").newInstance();</div>
<div>String URL="jdbc:mysql://localhost:3306/todream";</div>
<div>Connection con = DriverManager.getConnection(URL,"root","root");</div>
<div><br /></div>
<div><br /></div>
<div>try{</div>
<div>// 准备语句执行对象</div>
<blockquote style="margin-right: 0px" dir="ltr">
<div>Statement stmt = con.createStatement();</div>
<div><br /></div>
<div>String sql = " SELECT * FROM todream_exhibition WHERE id = "+ photo_no;</div>
<div>ResultSet rs = stmt.executeQuery(sql);</div>
<div>if (rs.next()) {</div>
<blockquote style="margin-right: 0px" dir="ltr">
<div>Blob b = rs.getBlob("workimg");</div>
<div>long size = b.length();</div>
<div>//out.print(size);</div>
<div>byte[] bs = b.getBytes(1, (int)size);</div>
<div>response.setContentType("image/jpeg");&nbsp;</div>
<div>OutputStream outs = response.getOutputStream();&nbsp;</div>
<div>outs.write(bs);</div>
<div>outs.flush();</div>
<div>rs.close();&nbsp;</div></blockquote>
<div>}</div>
<div>else {</div>
<blockquote style="margin-right: 0px" dir="ltr">
<div>rs.close();</div>
<div>response.sendRedirect("./images/error.gif");</div></blockquote>
<div>}</div></blockquote>
<div>}</div>
<div>finally{</div>
<blockquote style="margin-right: 0px" dir="ltr">
<div>con.close();</div></blockquote>
<div>}</div></blockquote>
<div>%&gt;</div>
<div>转载http://wenwen.soso.com/z/q114766705.htm &nbsp;如果你想尝试你必须要将数据库建好，并与这一样或将jsp页面改了跟你的一样。</div> <img src ="http://www.blogjava.net/feng0801/aggbug/338172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2010-11-16 13:49 <a href="http://www.blogjava.net/feng0801/archive/2010/11/16/338172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>