﻿<?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-hyljava-随笔分类-Jsp</title><link>http://www.blogjava.net/hyljava/category/51617.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Mar 2017 20:58:05 GMT</lastBuildDate><pubDate>Thu, 23 Mar 2017 20:58:05 GMT</pubDate><ttl>60</ttl><item><title>解决SoapUI的Request URL不支持大写</title><link>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Thu, 23 Mar 2017 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/432397.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/432397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/432397.html</trackback:ping><description><![CDATA[<span style="widows: 1; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; display: inline !important; font: 14px/20px 'Open Sans', 'Helvetica Neue', 'Hiragino Sans GB', sans-serif, Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-stroke-width: 0px">在SoapUI的Request URL中，每次输入的URL中含有的大写字母会自动转换为小写字母，导致请求不了</span>，<br /><span style="widows: 1; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; display: inline !important; font: 14px/20px 'open sans', 'helvetica neue', 'hiragino sans gb', sans-serif, arial, verdana, 'bitstream vera sans', tahoma, helvetica, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-stroke-width: 0px">这个问题在SoapUI&nbsp;5.1.2和5.2.1版本中都存在，具体的解决办法是在HTTP TestRequest Properties的属性中，在Endpoint中输入对应的含有大写字母的URL即可。<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/hyljava/soapui.png" /><br /><br /><br /><br /></span><img src ="http://www.blogjava.net/hyljava/aggbug/432397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2017-03-23 10:27 <a href="http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打 war包命令</title><link>http://www.blogjava.net/hyljava/archive/2015/08/19/426883.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Wed, 19 Aug 2015 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2015/08/19/426883.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/426883.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2015/08/19/426883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/426883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/426883.html</trackback:ping><description><![CDATA[<!--StartFragment -->

<div>jar&nbsp;-cvf&nbsp;safety.war&nbsp;*<br />打 war包命令</div><img src ="http://www.blogjava.net/hyljava/aggbug/426883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2015-08-19 10:18 <a href="http://www.blogjava.net/hyljava/archive/2015/08/19/426883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jquery校验输入框内容</title><link>http://www.blogjava.net/hyljava/archive/2015/05/08/jquery.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 08 May 2015 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2015/05/08/jquery.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/424940.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2015/05/08/jquery.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/424940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/424940.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;引用地址http://www.cnblogs.com/xdp-gacl/p/3467245.html用Jquery控制文本框只能输入数字和字母　　在公司开发WinForm项目时，发现公司自主研发的textbox控件非常强大，可以实现"只能输入数字"、"只能输入字母"和"只能输入数字和字母"的三种输入限制，这样就可以精确控制用户输入的内容范围，让"用户永远没有办法输入...&nbsp;&nbsp;<a href='http://www.blogjava.net/hyljava/archive/2015/05/08/jquery.html'>阅读全文</a><img src ="http://www.blogjava.net/hyljava/aggbug/424940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2015-05-08 11:22 <a href="http://www.blogjava.net/hyljava/archive/2015/05/08/jquery.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件下载到本地</title><link>http://www.blogjava.net/hyljava/archive/2013/11/23/406727.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Sat, 23 Nov 2013 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/11/23/406727.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/406727.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/11/23/406727.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/406727.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/406727.html</trackback:ping><description><![CDATA[<p>package com.shxt.controller;</p>
<p>import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.IOException;<br />import java.io.OutputStream;<br />import java.io.PrintWriter;<br />import java.net.URLEncoder;</p>
<p>import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</p>
<p>public class DownLoadServlet extends HttpServlet {</p>
<p>&nbsp;public void doGet(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;throws ServletException, IOException {</p>
<p>&nbsp;&nbsp;this.doPost(request, response);<br />&nbsp;}</p>
<p>&nbsp;public void doPost(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;throws ServletException, IOException {</p>
<p>&nbsp;&nbsp;response.setContentType("application/x-msdownload");<br />&nbsp;&nbsp;PrintWriter out = response.getWriter();<br />&nbsp;&nbsp;response.reset();// 可以加也可以不加<br />&nbsp;&nbsp;response.setContentType("application/x-download");<br />&nbsp;&nbsp;String filedownload = request.getRealPath("/images")<br />&nbsp;&nbsp;&nbsp;&nbsp;+ "<a href="file://\\02">\\02</a>_开发第一个无状态会话bean.avi";// "想办法找到要提供下载的文件的物理路径＋文件名";<br />&nbsp;&nbsp;System.out.print(filedownload);<br />&nbsp;&nbsp;String filedisplay = "okokok.avi";// "给用户提供的下载文件名";<br />&nbsp;&nbsp;filedisplay = URLEncoder.encode(filedisplay, "UTF-8");<br />&nbsp;&nbsp;response.addHeader("Content-Disposition", "attachment;filename="<br />&nbsp;&nbsp;&nbsp;&nbsp;+ filedisplay);<br />&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;OutputStream outp = null;<br />&nbsp;&nbsp;FileInputStream in = null;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;outp = response.getOutputStream();<br />&nbsp;&nbsp;&nbsp;// 你可以指定你的ftp输入流<br />&nbsp;&nbsp;&nbsp;in = new FileInputStream(new File(filedownload));</p>
<p>&nbsp;&nbsp;&nbsp;byte[] b = new byte[1024];<br />&nbsp;&nbsp;&nbsp;int i = 0;</p>
<p>&nbsp;&nbsp;&nbsp;while ((i = in.read(b)) &gt; 0) {<br />&nbsp;&nbsp;&nbsp;&nbsp;outp.write(b, 0, i);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;outp.flush();<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;System.out.println("Error!");<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;} finally {<br />&nbsp;&nbsp;&nbsp;if (in != null) {<br />&nbsp;&nbsp;&nbsp;&nbsp;in.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;in = null;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;if (outp != null) {<br />&nbsp;&nbsp;&nbsp;&nbsp;outp.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;outp = null;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;//out.clear();<br />&nbsp;&nbsp;&nbsp;//out = pageContext.pushBody();<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>}<br /></p><img src ="http://www.blogjava.net/hyljava/aggbug/406727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-11-23 20:51 <a href="http://www.blogjava.net/hyljava/archive/2013/11/23/406727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提示输入内容</title><link>http://www.blogjava.net/hyljava/archive/2013/04/12/397749.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 12 Apr 2013 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/12/397749.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397749.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/12/397749.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397749.html</trackback:ping><description><![CDATA[<div>&lt;input name="keyword" &nbsp;type="text" &nbsp;value="请输入关键字" onFocus="this.value=''" onBlur="if(!value){value=defaultValue;}"/&gt;</div><img src ="http://www.blogjava.net/hyljava/aggbug/397749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-12 15:37 <a href="http://www.blogjava.net/hyljava/archive/2013/04/12/397749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>阻止超级连接的跳转</title><link>http://www.blogjava.net/hyljava/archive/2013/04/12/397748.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 12 Apr 2013 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/12/397748.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397748.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/12/397748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397748.html</trackback:ping><description><![CDATA[<div>&lt;a href="javascript:void(0)" onclick="changeMa()"&gt;看不清&lt;/a&gt;<br />onclick事件会被引发，但是不会发生任何跳转，相当于一个死链接</div><img src ="http://www.blogjava.net/hyljava/aggbug/397748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-12 15:34 <a href="http://www.blogjava.net/hyljava/archive/2013/04/12/397748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC做二级联动</title><link>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 12 Apr 2013 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397747.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397747.html</trackback:ping><description><![CDATA[<div>&lt;select id="myCol" onchange="getChange()"&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="1"&gt;</div><div><span style="white-space:pre">					</span>大连交大</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="2"&gt;</div><div><span style="white-space:pre">					</span>东北财经</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="3"&gt;</div><div><span style="white-space:pre">					</span>大连海事</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div>&lt;/select&gt;</div><div></div><div>&lt;select id="myGet"&gt;</div><div></div><div>&lt;/select&gt;<br /><br /><br /><div>&lt;script type="text/javascript" &nbsp;&gt;</div><div>function getChange() {</div><div><span style="white-space:pre">	</span>//获取到第一个select表单value值</div><div><span style="white-space:pre">	</span>var myCol = document.getElementById("myCol").value;</div><div>&nbsp;<span style="white-space:pre">	</span>//拼接成要获取值的url<span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>var url = "getCateGory?myCol=" + myCol; //url &nbsp;</div><div><span style="white-space:pre">	</span> //利用jquery的ajax方法，使用此方法要引jquery包</div><div><span style="white-space:pre">	</span>htmlobj = $.ajax( {</div><div><span style="white-space:pre">		</span>url : url,</div><div><span style="white-space:pre">		</span>async : false</div><div><span style="white-space:pre">	</span>});</div><div><span style="white-space:pre">	</span>//此处利用json处理值，还需要引json包，在服务器端可以使用GSON转化数据，响应当前页面</div><div><span style="white-space:pre">	</span>/*服务器端：</div><div><span style="white-space:pre">		</span>//需要引GSON包</div><div><span style="white-space:pre">	</span> &nbsp; //创建一个Gson对象</div><div><span style="white-space:pre">		</span>Gson gson = new Gson();</div><div><span style="white-space:pre">		</span>//返回一个json格式的字符串&nbsp;</div><div><span style="white-space:pre">	</span> <span style="white-space:pre">	</span>String pStr = gson.toJson(user);</div><div>&nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span>System.out.println(pStr);</div><div><span style="white-space:pre">		</span> out.print(pStr);</div><div><span style="white-space:pre">	</span>*/</div><div><span style="white-space:pre">	</span>//接取响应值，并且转化成JSON对象</div><div><span style="white-space:pre">	</span>var obj = JSON.parse(htmlobj.responseText);</div><div><span style="white-space:pre">	</span> //此变量是为拼接而做</div><div><span style="white-space:pre">	</span>var options = "";</div><div><span style="white-space:pre">	</span>var myGet = document.getElementById("myGet");</div><div></div><div><span style="white-space:pre">	</span>//myGet.removeChild("option");</div><div><span style="white-space:pre">	</span>//删除现有option节点</div><div><span style="white-space:pre">	</span>for ( var i = 1; i &lt;= myGet.length; i++) {</div><div><span style="white-space:pre">		</span>myGet.remove(i);</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>myGet.remove(myGet.selectedIndex);</div><div>&nbsp; &nbsp;//利用循环，在此将新的option添加上</div><div>&nbsp; &nbsp;for(var i=0;i&lt;obj.length;i++){</div><div>&nbsp;<span style="white-space:pre">	</span> alert(obj[i].uUserName);</div><div>&nbsp; &nbsp; &nbsp;var myOption=document.createElement("option");</div><div>&nbsp;<span style="white-space:pre">	</span>myOption.setAttribute("value",obj[i].uId);</div><div>&nbsp;<span style="white-space:pre">	</span>var testN=document.createTextNode(obj[i].uUserName);</div><div><span style="white-space:pre">	</span> myOption.appendChild(testN);</div><div>&nbsp;<span style="white-space:pre">	</span> myGet.appendChild(myOption);</div><div>&nbsp;&nbsp;</div><div>&nbsp;//此种方法最简单，但是没有技术含量</div><div>&nbsp;//options+="&lt;option value='"+obj[i].uId+"'&gt;"+obj[i].uUserName+"&lt;/option&gt;";</div><div></div><div>&nbsp;}</div><div>// myGet.innerHTML=options;</div><div>&nbsp;&nbsp;</div><div>}</div><div></div><div></div><div>&lt;/script&gt;</div></div><img src ="http://www.blogjava.net/hyljava/aggbug/397747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-12 15:30 <a href="http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP编程的过程中会遇到各种各样的问题</title><link>http://www.blogjava.net/hyljava/archive/2013/03/25/396975.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Mon, 25 Mar 2013 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/03/25/396975.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/396975.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/03/25/396975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/396975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/396975.html</trackback:ping><description><![CDATA[<p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">&nbsp;</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">在JSP编程的过程中会遇到各种各样的问题</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题1:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">表单request汉字处理：</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">request.setCharacterEncoding("GB2312")&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题2:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">在JSP网页中获取页面的名称：</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">request.getRequestURI()&nbsp;;//文件名 &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">request.getRequestURL()&nbsp;;//全部url&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题3:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">页面不保留缓存：</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">response.setHeader("Pragma","No-cache"); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">response.setHeader("Cache-Control","no-cache"); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">response.setDateHeader("Expires",&nbsp;0); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题4:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">日期时间（服务器端）</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">String&nbsp;datestr&nbsp;; &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">java.text.DateFormat&nbsp;df&nbsp;=&nbsp;new&nbsp;java.text.SimpleDateFormat("MM月dd日&nbsp;HH:mm&nbsp;E");&nbsp;//这里格式化 &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">datestr&nbsp;=&nbsp;df.format(new&nbsp;java.util.Date())&nbsp;; &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">out.println(datestr); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">或者</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">%&nbsp;java.util.Date&nbsp;shijian=&nbsp;new&nbsp;java.util.Date();%＞ &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">%=shijian.getYear()+1900%＞%=shijian.getMonth()+1%＞%=shijian.getDate()%＞ &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">%=shijian.getHour()%＞%=shijian.getMinute()%＞ &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题5:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">java中运用正则。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">jdk需是1.4以上 import="java.util.regex.*</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题6:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">点后退显示网页过期</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">在里面加以下代码</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">META&nbsp;http-equiv=Pragma&nbsp;content=no-cache &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">META&nbsp;http-equiv=Cache-Control&nbsp;content=no-cache &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">META&nbsp;http-equiv=Expires&nbsp;content=0 &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">和 3 原理一样。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问7:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">swtich不能作用在long上和String上：</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">switch（expr1）中，expr1是一个整数表达式。传递给 switch 和 case 语句的参数应该是<br />int、 short、 char 或者 byte。long,string 都不能作用于swtich。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题8:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">计算执行所花费的时间</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">代码开始取时间，结束后取时间，相减</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">long&nbsp;t1&nbsp;=&nbsp;System.currentTimeMillis(); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">....&nbsp;......&nbsp;....&nbsp;&nbsp;...your&nbsp;code &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">long&nbsp;t2&nbsp;=&nbsp;System.currentTimeMillis()&nbsp;; &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">long&nbsp;time&nbsp;=&nbsp;t2-t1; &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题9</strong>:</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">四舍五入，保留小数点后两位小数？</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">import&nbsp;java.text.*; &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">NumberFormat&nbsp;nf=NumberFormat.getNumberInstance(); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">nf.setMaximumFractionDigits(2); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">nf.setMinimumFractionDigits(2); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">nf.format(numb); &nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">或者(+0.005 - 0.01)再取.后两位</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题10:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">form的默认方法是get.</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">post方式是向服务器传送大容量数据时使用的方法。（再打开一个socket.?）</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题11:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">防止用户直接输入url进去页面：</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">&#9670;是在要访问的页面中加入控制.这个一般用session。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">&#9670;是从web服务器控制,对某一目录的所有访问要通过验证.（有人说把jsp放到web-inf下）</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题12:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">数据库是datetime 型 ，插入当前时间到数据库：</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">java.sql.Date&nbsp;sqlDate&nbsp;=&nbsp;new&nbsp;java.sql.Date(); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">PreparedStatement&nbsp;pstmt&nbsp;=&nbsp;conn.prepareStatement("insert&nbsp;into&nbsp;foo(time)&nbsp;values(?)"); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">pstmt.setDate(1,sqlDate); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">pstmt.executeUpdate(); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">其实一般数据库都有自己的系统时间函数。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">insert into foo(time) values(sysdate)</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题13:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">session存取int类型的变量：</p><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; word-wrap: break-word; white-space: pre-wrap; font-family: 'courier new', courier, monospace; color: #444444;"><ol style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;"><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">session.setAttribute("int",&nbsp;i+"");&nbsp;//注意这里i+"" &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">int&nbsp;i&nbsp;=&nbsp;Integer.parseInt(session.getAttribute("int")); &nbsp;</li><li style="margin: 0px; padding: 0px; word-wrap: break-word; list-style: none;">&nbsp;</li></ol></pre><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">session的一些概念。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">用户在浏览网页时，由于Http 协议是一种无状态的协议，往往在不同的页面之间存在数据交换的问题，这就需要在这些不同的页面之间共享数据。常见的实现方法是把要共享的数据保存到 Session 中。比如在用户登录的页面中把一些用户的信息保存到Session 之中，然后在其他的页面中读取用户的信息。这些共享的数据可以是字符串或者与Java 的原始数据类型相关的对象，也可以是一个Java 对象。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">Session 只能保存对象，不能保存原始的数据类型，比如：</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">session.setAttribute(&#8220;count&#8221;,10)</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">是非法的语句，如果要把值为10 的整数保存到Session 中，需要使用以下的方法：</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">session.setAttribute(&#8220;count&#8221;,new Integer(10));</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">然后在另一个页面中使用：</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">(Integer)session.getAttribute(&#8220;count&#8221;)</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">来把这个整数读取出来。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">was中设置可以把session放在系统的数据库中，但这样影响效率。session大小最好不要太大</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题14:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">把字符转化成ASCII码</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">int a='A'; out.println(a);</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题15:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">String s = new String("xyz");创建了两个String Object对象，一个是&#8220;xyx&#8221;,一个是指向&#8220;xyx&#8221;的引用对象s。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">还有典型的equals() 与 == 这个参考在堆栈原理。</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;"><strong>JSP常见问题16:</strong></p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">Hashtable和HashMap　</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">Hashtable继承自Dictionary类，而HashMap是Java1.2引进的Map interface的一个实现HashMap允许将null作为一个entry的key或者value，而Hashtable不允许</p><p style="margin: 0px; padding: 8px 0px; word-wrap: break-word; line-height: 23px; text-align: justify; text-indent: 2em; color: #444444; font-family: tahoma, arial, 宋体, sans-serif;">Hashtable的方法是Synchronize的，而HashMap不是，在多个线程访问Hashtable时，不需要自己为它的方法实现同步，而HashMap就必须为之提供外同步。</p><img src ="http://www.blogjava.net/hyljava/aggbug/396975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-03-25 17:17 <a href="http://www.blogjava.net/hyljava/archive/2013/03/25/396975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转载）Session</title><link>http://www.blogjava.net/hyljava/archive/2013/03/23/396892.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Sat, 23 Mar 2013 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/03/23/396892.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/396892.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/03/23/396892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/396892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/396892.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：虽然session机制在web应用程序中被采用已经很长时间了，但是仍然有很多人不清楚session机制的本质，以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java&nbsp;web&nbsp;application中应用session机制时常见的问题作出解答。目录：一、术语session二、HTTP协议与状态保持三、理解cookie机制四、理解session机制...&nbsp;&nbsp;<a href='http://www.blogjava.net/hyljava/archive/2013/03/23/396892.html'>阅读全文</a><img src ="http://www.blogjava.net/hyljava/aggbug/396892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-03-23 09:53 <a href="http://www.blogjava.net/hyljava/archive/2013/03/23/396892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>客户端跳转与服务器端跳转的区别</title><link>http://www.blogjava.net/hyljava/archive/2013/03/18/396576.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Mon, 18 Mar 2013 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/03/18/396576.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/396576.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/03/18/396576.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/396576.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/396576.html</trackback:ping><description><![CDATA[<h2><a id="cb_post_title_url" href="http://www.cnblogs.com/memewry/archive/2012/08/21/2649988.html" style="color: #0066ff; text-decoration: none;">客户端跳转与服务器端跳转的区别</a></h2><div style="font-size: 13px; padding-left: 5px; line-height: 1.5; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; background-color: #d6d3d6;"><div id="cnblogs_post_body" style="line-height: 1.8; word-break: normal !important;"><p style="margin-top: 10px; margin-bottom: 10px;"><div><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">客户端跳转与服务器端跳转的区别</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">客户端跳转时用HttPservletResopse对象的sendRedirect函数实现，服务器端跳转是使用RequestDispather对象的forward方法实现的。这两者之间的区别主要体现在三个方面：</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1.&nbsp;使用服务器端跳转时，客户浏览器的地址栏并不会显示目标地址的URL，而是用客户端跳转时，地址栏当中会显示目标资源的URL；</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2.&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">服务器端跳转是由客户端发送一个请求，请求一个服务器资源&#8212;&#8212;如JSP和Servlet&#8212;&#8212;，这个资源又将请求转到另一个服务器资源，然后再给客户端发送一个响应，也就是说服务器端跳转是客户端发送一次请求，服务器端给出一次响应；</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源，这个服务器资源会首先给客户端一个响应，客户端再根据这个响应当中所包含的地址，再次向服务器端发送一个请求，也就是说客户端跳转是两次请求，两次响应；</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">3.&nbsp;在进行客户端跳转和服务器端跳转时，都需要指定目标资源的URL，如果这个路径以&#8220;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">/</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8221;开始。在客户端跳转当中&#8220;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">/</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8221;代表的是应用服务器根目录，而在服务器端跳转当中代表的是应用程序根目录。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">page&nbsp;=&nbsp;页面级别</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">request&nbsp;=&nbsp;请求级别（与服务器端跳转配合使用）</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">session&nbsp;=&nbsp;会话级别（客户端跳转（服务器端跳转也可，但是客户端跳转更加突出了session的作用范围））</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">application&nbsp;=&nbsp;应用级别</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">客户端跳转：服务器端将请求结果返回给客户端，客户端向服务器发出另一次请求。在客户端跳转过程中是两次不同的请求。在地址栏中显示的是最后一次请求地址。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">客户端跳转可以进行站外跳转。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、链接跳转：&lt;a&nbsp;href=&#8221;&#8221;&gt;&lt;/a&gt;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2、表单提交</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">3、Response.sendRedirect(&#8220;3.jsp&#8221;);</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">4、&lt;mata&nbsp;http-equiv=&#8221;refresh&#8221;,&nbsp;content=&#8221;3;2.jsp&#8221;/&gt;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">5、response.setHeader(&#8220;refresh&#8221;,&#8221;&nbsp;3;2.jsp&#8221;);</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">6、客户端跳转&#8220;/&#8221;代表服务器跟路径</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">（</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">localhost:8080</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">7、客户端跳转&#8220;.&#8221;代表当前工程项目根路径（</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">http://localhost:8080/addressbook</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">）</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">服务器端跳转（容器内跳转）：能够自动的在服务器内部进行跳转，这种跳转对用户来说是透明的。两次跳转时同一个request，在地址栏中显示的事第一次页面地址。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">只能进行站点内跳转。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-numeric; text-autospace:ideograph-other; text-align:justify; line-height:25.0000pt; vertical-align:; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、&lt;jsp:forward&nbsp;page=&#8221;&#8221;/&gt;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;--写在jsp页面内的跳转</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-numeric; text-autospace:ideograph-other; text-align:justify; line-height:25.0000pt; vertical-align:; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2、pageContext.forward();</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--写在jsp页面内的跳转</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-numeric; text-autospace:ideograph-other; text-align:justify; line-height:25.0000pt; vertical-align:; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">3、&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">request.getRequestDispatcher("1.jsp").forward(request,response);</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-numeric; text-autospace:ideograph-other; text-align:justify; line-height:25.0000pt; vertical-align:; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">4、&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">服务器端跳转&#8220;/&#8221;代表</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">当前请求根路径（</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">http://localhost:8080/addressbooktest/GoServlet</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">）</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-numeric; text-autospace:ideograph-other; text-align:justify; line-height:25.0000pt; vertical-align:; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">5、&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">服务器端跳转&#8220;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">.</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8221;代表</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">当前请求根路径（</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">http://localhost:8080/addressbooktest/GoServlet</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">）</span></p></div></p></div></div><img src ="http://www.blogjava.net/hyljava/aggbug/396576.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-03-18 10:05 <a href="http://www.blogjava.net/hyljava/archive/2013/03/18/396576.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>升级版JDBC工具类</title><link>http://www.blogjava.net/hyljava/archive/2012/05/31/379691.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Thu, 31 May 2012 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2012/05/31/379691.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/379691.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2012/05/31/379691.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/379691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/379691.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.ParameterMetaData;<br />import java.sql.PreparedStatement;<br />import java.sql.ResultSet;<br />import java.sql.ResultSetMetaData;<br />import java.sql.SQLException;<br />import java.sql.Statement;<br />import java.util.HashMap;<br />import java.util.LinkedList;<br />import java.util.List;<br />import java.util.Map;</p>
<p><br />/**<br />&nbsp;* 用户数据库访问的类<br />&nbsp;*@作者Administrator<br />&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#99;&#114;&#101;&#97;&#116;&#101;&#84;&#105;&#109;&#101;">*@createTime</a> 2011-12-5 上午11:55:18<br />&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#118;&#101;&#114;&#115;&#105;&#111;&#110;">*@version</a> 1.0<br />&nbsp;*/<br />public class DButil1 {</p>
<p>&nbsp;private Connection conn;<br />&nbsp;private Statement st;<br />&nbsp;private PreparedStatement pps;<br />&nbsp;private ResultSet rs;<br />&nbsp;public&nbsp; String url="jdbc:oracle:thin:@localhost:1521:orcl";<br />&nbsp;private String user="hyl";<br />&nbsp;private String password="hyl";<br />&nbsp;<br />&nbsp;//加载驱动、放在静态代码块中，保证驱动在整个项目中只加载一次，提高效率<br />&nbsp;static{<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;Class.forName("oracle.jdbc.driver.OracleDriver");<br />&nbsp;&nbsp;} catch (ClassNotFoundException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;/**<br />&nbsp; * 获取连接的方法<br />&nbsp; * @return Connection 一个有效的数据库连接<br />&nbsp; */<br />&nbsp;public Connection getConnection()<br />&nbsp;{<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;//注意链接时，要换成自己的数据库名，数据库用户名及密码<br />&nbsp;&nbsp;&nbsp;Connection con=DriverManager.getConnection(url,user,password);<br />&nbsp;&nbsp;&nbsp;return con;<br />&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return null;<br />&nbsp;}</p>
<p>&nbsp;/**<br />&nbsp; * 用于执行更新的方法,包括（insert delete update）操作<br />&nbsp; * @param sql String 类型的SQL语句<br />&nbsp; * @return Integer 表示受影响的行数<br />&nbsp; */<br />&nbsp;public int update(String sql)<br />&nbsp;{<br />&nbsp;&nbsp;//定义变量用来判断更新操作是否成功，如果返回-1说明没有影响到更新操作的数据库记录条数，即更新操作失败<br />&nbsp;&nbsp;int row=-1;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;//如果数据库链接被关闭了，就要既得一个新的链接<br />&nbsp;&nbsp;&nbsp;if(conn==null||conn.isClosed()){<br />&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;//使用Connection对象conn的createStatement()创建Statement（数据库语句对象）st<br />&nbsp;&nbsp;&nbsp;st=conn.createStatement();<br />&nbsp;&nbsp;&nbsp;//执行更新操作，返回影响的记录条数row<br />&nbsp;&nbsp;&nbsp;row=st.executeUpdate(sql);<br />&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;finally{<br />&nbsp;&nbsp;&nbsp;close();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return row;<br />&nbsp;}<br />&nbsp;<br />&nbsp;/**<br />&nbsp; * 基于PreparedStatement的修改方法 PreparedStatement:表示预编译的 SQL 语句的对象<br />&nbsp; * @param sql&nbsp; String 类型的SQL语句（insert delete update）<br />&nbsp; * @param obj 存放动态参数的数组<br />&nbsp; * @return Integer 表示受影响的行数<br />&nbsp; */<br />&nbsp;public int update(String sql,Object ...obj)<br />&nbsp;{<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;//获取链接<br />&nbsp;&nbsp;&nbsp;if(conn==null||conn.isClosed()){<br />&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;//创建预编译的 SQL 语句对象<br />&nbsp;&nbsp;&nbsp;pps=conn.prepareStatement(sql);<br />&nbsp;&nbsp;&nbsp;//定义变量length代表数组长度，也就是预处理的sql语句中的参数个数 <br />&nbsp;&nbsp;&nbsp;int length=0;<br />&nbsp;&nbsp;&nbsp;//ParameterMetaData：用于获取关于 PreparedStatement 对象中每个参数的类型和属性信息的对象<br />&nbsp;&nbsp;&nbsp;ParameterMetaData pmd=pps.getParameterMetaData();<br />&nbsp;&nbsp;&nbsp;length=pmd.getParameterCount();<br />&nbsp;&nbsp;&nbsp;//循环将sql语句中的?设置为obj数组中对应的值，注意从1开始，所以i要加1<br />&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;length;i++)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;pps.setObject(i+1, obj[i]);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;//执行更新操作<br />&nbsp;&nbsp;&nbsp;return pps.executeUpdate();<br />&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}finally{<br />&nbsp;&nbsp;&nbsp;close();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;return -1;<br />&nbsp;}<br />&nbsp;/**<br />&nbsp; * 获取一条记录的方法，要依赖于下面的queryToList方法，注意泛型的使用<br />&nbsp; * @param sql<br />&nbsp; * @return　Map&lt;String,Object&gt;<br />&nbsp; */<br />&nbsp;public Map&lt;String,Object&gt; getOneRow(String sql)<br />&nbsp;{<br />&nbsp;&nbsp;//执行下面的queryToList方法<br />&nbsp;&nbsp;List&lt;Map&lt;String,Object&gt;&gt; list=queryToList(sql);<br />&nbsp;&nbsp;//三目运算，查询结果list不为空返回list中第一个对象,否则返回null<br />&nbsp;&nbsp;return list.size()&gt;0?list.get(0):null;<br />&nbsp;}<br />&nbsp;<br />&nbsp;/**<br />&nbsp; * 返回查询结果列表，形如：[{TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}, {TEST_NAME=bbb, TEST_NO=3, TEST_PWD=bbb}...]<br />&nbsp; * @param sql<br />&nbsp; * @return List&lt;Map&lt;String,Object&gt;&gt;<br />&nbsp; */<br />&nbsp;public List&lt;Map&lt;String,Object&gt;&gt; queryToList(String sql)<br />&nbsp;{<br />&nbsp;&nbsp;//创建集合列表用以保存所有查询到的记录<br />&nbsp;&nbsp;List&lt;Map&lt;String, Object&gt;&gt; list=new LinkedList&lt;Map&lt;String, Object&gt;&gt;();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;if(conn==null||conn.isClosed()){<br />&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;st=conn.createStatement();<br />&nbsp;&nbsp;&nbsp;rs=st.executeQuery(sql);<br />&nbsp;&nbsp;&nbsp;//ResultSetMetaData 是结果集元数据，可获取关于 ResultSet 对象中列的类型和属性信息的对象 例如：结果集中共包括多少列，每列的名称和类型等信息<br />&nbsp;&nbsp;&nbsp;ResultSetMetaData rsmd=rs.getMetaData();<br />&nbsp;&nbsp;&nbsp;//获取结果集中的列数<br />&nbsp;&nbsp;&nbsp;int columncount=rsmd.getColumnCount();<br />&nbsp;&nbsp;&nbsp;//while条件成立表明结果集中存在数据<br />&nbsp;&nbsp;&nbsp;while(rs.next())<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//创建一个HashMap用于存储一条数据<br />&nbsp;&nbsp;&nbsp;&nbsp;HashMap&lt;String, Object&gt; onerow=new HashMap&lt;String, Object&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;//循环获取结果集中的列名及列名所对应的值，每次循环都得到一个对象，形如：{TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;columncount;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取指定列的名称，注意orcle中列名的大小写<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String columnName=rsmd.getColumnName(i+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onerow.put(columnName, rs.getObject(i+1));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;//将获取到的对象onewrow={TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}放到集合列表中<br />&nbsp;&nbsp;&nbsp;&nbsp;list.add(onerow);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;finally{<br />&nbsp;&nbsp;&nbsp;close();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return list;<br />&nbsp;}<br />&nbsp;/**<br />&nbsp; * 返回查询结果列表,使用的是预编绎SQL 语句对象PreparedStatement<br />&nbsp; * 形如：[{TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}, {TEST_NAME=bbb, TEST_NO=3, TEST_PWD=bbb}]<br />&nbsp; * @param sql<br />&nbsp; * @param paramValues<br />&nbsp; * @return List&lt;Map&lt;String,Object&gt;&gt;<br />&nbsp; */<br />&nbsp;public List&lt;Map&lt;String,Object&gt;&gt; queryWithParam(String sql,Object ...paramValues){<br />&nbsp;&nbsp;//创建集合列表用以保存所有查询到的记录<br />&nbsp;&nbsp;List&lt;Map&lt;String, Object&gt;&gt; list=new LinkedList&lt;Map&lt;String, Object&gt;&gt;();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;if(conn==null||conn.isClosed()){<br />&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;pps = conn.prepareStatement(sql);<br />&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; paramValues.length; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;pps.setObject(i + 1, paramValues[i]);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;rs = pps.executeQuery();<br />&nbsp;&nbsp;&nbsp;//ResultSetMetaData 是结果集元数据，可获取关于 ResultSet 对象中列的类型和属性信息的对象 例如：结果集中共包括多少列，每列的名称和类型等信息<br />&nbsp;&nbsp;&nbsp;ResultSetMetaData rsmd=rs.getMetaData();<br />&nbsp;&nbsp;&nbsp;//获取结果集中的列数<br />&nbsp;&nbsp;&nbsp;int columncount=rsmd.getColumnCount();<br />&nbsp;&nbsp;&nbsp;//while条件成立表明结果集中存在数据<br />&nbsp;&nbsp;&nbsp;while (rs.next()) {<br />&nbsp;&nbsp;&nbsp;&nbsp;//创建一个HashMap用于存储一条数据<br />&nbsp;&nbsp;&nbsp;&nbsp;HashMap&lt;String, Object&gt; onerow=new HashMap&lt;String, Object&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;//循环获取结果集中的列名及列名所对应的值，每次循环都得到一个对象，形如：{TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;columncount;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取指定列的名称，注意orcle中列名的大小写<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String columnName=rsmd.getColumnName(i+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onerow.put(columnName, rs.getObject(i+1));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;//将获取到的对象onewrow={TEST_NAME=aaa, TEST_NO=2, TEST_PWD=aaa}放到集合列表中<br />&nbsp;&nbsp;&nbsp;&nbsp;list.add(onerow);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;finally{<br />&nbsp;&nbsp;&nbsp;close();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return list;<br />&nbsp;}<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;/**<br />&nbsp; * 实现oracle分页功能<br />&nbsp; * @param sql<br />&nbsp; * @param pagesize<br />&nbsp; * @param pagenow<br />&nbsp; * @return PageBean<br />&nbsp; */<br />&nbsp;public PageBean getPage(String sql,int pagesize,int pagenow)<br />&nbsp;{<br />&nbsp;&nbsp;PageBean pb=new PageBean();<br />&nbsp;&nbsp;int end=pagenow*pagesize;<br />&nbsp;&nbsp;int start=end-pagesize+1;<br />&nbsp;&nbsp;String exesql="select a.* from (select t.*,rownum as rowindex from ("+sql+") t where rownum&lt;="+end+" ) a where a.rowindex&gt;="+start;<br />&nbsp;&nbsp;String countsql="select count(*) as rowcount from ("+sql+")";<br />&nbsp;&nbsp;pb.setResult(queryToList(exesql));<br />&nbsp;&nbsp;pb.setPagenow(pagenow);<br />&nbsp;&nbsp;pb.setPagesize(pagesize);<br />&nbsp;&nbsp;Map&lt;String,Object&gt; map=this.getOneRow(countsql);<br />&nbsp;&nbsp;int rows=Integer.parseInt(map.get("ROWCOUNT").toString());<br />&nbsp;&nbsp;pb.setRows(rows);<br />&nbsp;&nbsp;int pages=rows%pagesize==0?rows/pagesize:rows/pagesize+1;<br />&nbsp;&nbsp;pb.setPages(pages);<br />&nbsp;&nbsp;pb.setSql(sql);<br />&nbsp;&nbsp;return pb;<br />&nbsp;}<br />&nbsp;/**<br />&nbsp; * 关闭数据库各种资源Connection Statement PreparedStatement ResultSet的方法<br />&nbsp; */<br />&nbsp;private void close()<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp; if(rs!=null)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; if(st!=null)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;st.close();<br />&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; if(pps!=null){<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;pps.close();<br />&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;if(conn!=null&amp;&amp;!conn.isClosed())<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />}</p><img src ="http://www.blogjava.net/hyljava/aggbug/379691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2012-05-31 22:07 <a href="http://www.blogjava.net/hyljava/archive/2012/05/31/379691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>监听器实现获取网络在线人数</title><link>http://www.blogjava.net/hyljava/archive/2012/05/28/379381.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Mon, 28 May 2012 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2012/05/28/379381.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/379381.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2012/05/28/379381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/379381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/379381.html</trackback:ping><description><![CDATA[<p>首先写一个计数的类OnlineCounter <br /><br />package accp.onlinecounter;</p>
<p>public class OnlineCounter {<br />&nbsp;private static long online = 0;</p>
<p>&nbsp;public static long getOnline() {</p>
<p>&nbsp;&nbsp;return online;</p>
<p>&nbsp;}</p>
<p>&nbsp;public static void raise() {</p>
<p>&nbsp;&nbsp;online++;</p>
<p>&nbsp;}</p>
<p>&nbsp;public static void reduce() {<br />&nbsp;&nbsp;online--;</p>
<p>&nbsp;}<br />}<br /><br /><br />之后写一个实现HttpSessionEvent的类OnlineCounterListener <br /></p>
<p>package&nbsp; accp.onlinecounter;</p>
<p>import javax.servlet.http.HttpSessionEvent;&nbsp; </p>
<p>&nbsp; import javax.servlet.http.HttpSessionListener; <br />&nbsp; public class OnlineCounterListener implements HttpSessionListener { <br />&nbsp; public void sessionCreated(HttpSessionEvent hse) { <br />&nbsp;&nbsp; OnlineCounter.raise(); <br />&nbsp;} </p>
<p>&nbsp; public void sessionDestroyed(HttpSessionEvent hse) { </p>
<p>&nbsp; OnlineCounter.reduce(); <br />&nbsp; }<br />&nbsp; } <br /></p>
<p>在web.xml中写listener的注册信息<br />&nbsp;&nbsp; &lt;listener&gt; <br />&nbsp;&nbsp;&lt;listener-class&gt;<br />&nbsp; accp.onlinecounter.OnlineCounterListener<br />&nbsp; &lt;/listener-class&gt; <br />&nbsp;&nbsp;&nbsp; &lt;/listener&gt; <br />前台界面写上<br /><br />&nbsp; &lt;body&gt;<br />&nbsp;在线人数： <span style="color: red">&lt;</span><span style="color: red">%=OnlineCounter.getOnline() %&gt;</span>&lt;br/&gt;<br />&nbsp;&nbsp; &lt;a href="adcourse.jsp"&gt;添加课程add course&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp; &lt;a href="adds.jsp"&gt;添加学生add stu&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp; &lt;a href="findallcourse.jsp"&gt;查询课程信息 select course&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;a href="findallstudent.jsp"&gt;查询学生信息 select student&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;a href="addstudentcourse.jsp"&gt;添加选课信息add student course&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="querystucourse.jsp"&gt;查询选课信息query student course&lt;/a&gt;&lt;br/&gt;<br />&nbsp;&nbsp; <br />&nbsp; &lt;/body&gt;<br />注意引入包即可<br /></p><img src ="http://www.blogjava.net/hyljava/aggbug/379381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2012-05-28 19:12 <a href="http://www.blogjava.net/hyljava/archive/2012/05/28/379381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用js获得并且检验验证码</title><link>http://www.blogjava.net/hyljava/archive/2012/05/22/378758.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Tue, 22 May 2012 00:12:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2012/05/22/378758.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/378758.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2012/05/22/378758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/378758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/378758.html</trackback:ping><description><![CDATA[<p><font face="Verdana">&lt;html&gt;<br />&lt;head&gt;<br />&lt;style type="text/css"&gt;<br />.code{<br />background-image:url(111.jpg);<br />font-family:Arial;<br />font-style:italic;<br />color:green;<br />border:0;<br />padding:2px 3px;<br />letter-spacing:3px;<br />font-weight:bolder;<br />}<br />.unchanged {<br />border:0;<br />}<br />&lt;/style&gt;<br />&lt;script language="javascript" type="text/javascript"&gt;<br />var code ; //在全局 定义验证码<br />function createCode(){ <br />code = "";<br />var codeLength = 4;//验证码的长度<br />var checkCode = document.getElementById("checkCode");<br />checkCode.value = "";</font></p>
<p><font face="Verdana">var selectChar = new Array(2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z');</font></p>
<p><font face="Verdana">for(var i=0;i&lt;codeLength;i++) {<br />&nbsp;&nbsp; var charIndex = Math.floor(Math.random()*32);<br />&nbsp;&nbsp; code +=selectChar[charIndex];<br />}<br />if(code.length != codeLength){<br />&nbsp;&nbsp; createCode();<br />}<br />checkCode.value = code;<br />}</font></p>
<p><font face="Verdana">function validate () {<br />var inputCode = document.getElementById("input1").value.toUpperCase();</font></p>
<p><font face="Verdana">if(inputCode.length &lt;=0) {<br />&nbsp;&nbsp; alert("请输入验证码！");<br />&nbsp;&nbsp; return false;<br />}<br />else if(inputCode != code ){<br />&nbsp;&nbsp; alert("验证码输入错误！");<br />&nbsp;&nbsp; createCode();<br />&nbsp;&nbsp; return false;<br />}<br />else {<br />&nbsp;&nbsp; alert("OK");<br />&nbsp;&nbsp; return true;<br />}</font></p>
<p><font face="Verdana">}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body onload="createCode();"&gt;<br />&lt;input type="text" id="input1" /&gt;<br />&lt;input type="text" id="checkCode" class="code" style="width: 55px" /&gt; &lt;a href="#" onclick="createCode()"&gt;看不清楚&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;<br />&lt;center&gt;&lt;input id="Button1" onclick="validate();" type="button" value="确定" /&gt;&lt;/center&gt;<br />&lt;script&gt;&lt;/script&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</font></p>
<p><font face="Verdana"></font>&nbsp;</p><img src ="http://www.blogjava.net/hyljava/aggbug/378758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2012-05-22 08:12 <a href="http://www.blogjava.net/hyljava/archive/2012/05/22/378758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>