﻿<?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-§封Ja葬va§</title><link>http://www.blogjava.net/zhutianxiang/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 22:59:35 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 22:59:35 GMT</pubDate><ttl>60</ttl><item><title>Junit4测试时出的问题，大家帮我看看</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/30/268309.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Thu, 30 Apr 2009 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/30/268309.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/268309.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/30/268309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/268309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/268309.html</trackback:ping><description><![CDATA[<div class="content">public class DrawDao extends HibernateDaoSupport { <br />
<br />
/** <br />
* 添加领用申请 <br />
* <br />
* @param draw <br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 领用申请信息(不可为null) <br />
* @return <br />
*/ <br />
@SuppressWarnings("unchecked") <br />
public boolean insertDraw(Carddrawapply draw, List&lt;Carddrawapplydetail&gt; drawdetailList) { <br />
boolean flag = false; <br />
Session session = null; <br />
Transaction tx = null; <br />
try { <br />
session = this.getSession(); <br />
tx = session.beginTransaction(); <br />
<br />
long shopid = MyConstant.HTDZ_DEFAULT_SHOPID;//商家ID <br />
String billtype = CardConstant.CARD_LY_ID;//业务编号 <br />
String engshort = MyConstant.HTDZ_STR;//商家英文简称 <br />
String busishort = CardConstant.CARD_LY_CODE;//业务英文简称 <br />
<br />
String formcode = CardCode.getFormCode(session,shopid,billtype,engshort,busishort); <br />
if(!"".equals(formcode)){ <br />
draw.setCarddrawapplycode(formcode); <br />
draw.setSourcetype("0"); <br />
draw.setApplydate(MyFormat.getToday()); <br />
draw.setStatus(StatusUtil.CARDDRAWAPPLY_STATUS01); <br />
session.save(draw); <br />
long carddrawapplyid = draw.getCarddrawapplyid(); <br />
session.flush(); <br />
if(drawdetailList.size()==0){ <br />
tx.rollback(); <br />
}else{ <br />
for(Carddrawapplydetail drawdetail : drawdetailList){ <br />
if(drawdetail!=null){ <br />
drawdetail.setCarddrawapplyid(carddrawapplyid); <br />
session.save(drawdetail); <br />
} <br />
} <br />
tx.commit(); <br />
flag = true; <br />
} <br />
} <br />
<br />
} catch (Exception e) { <br />
e.printStackTrace(); <br />
tx.rollback(); <br />
flag = false; <br />
} finally { <br />
session.close(); <br />
} <br />
return flag; <br />
} <br />
} <br />
<br />
以上Dao的方法已经正常。 <br />
对此方法的测试，我是在后期补上的。但是居然报错。帮我看看： <br />
<br />
Junit4:(不用继承TestCase) <br />
<br />
public class TestDrawDao{ <br />
<br />
private DrawDao drawDao; <br />
<br />
@Before <br />
public void setUp(){ <br />
drawDao = new DrawDao(); <br />
} <br />
<br />
<br />
/** <br />
* 测试'卡领用申请信息的添加' <br />
*/ <br />
@Test <br />
public void testInsertDraw(){ <br />
Carddrawapply draw = new Carddrawapply(); <br />
draw.setApplyoperid(1); <br />
draw.setApplydesc("申请说明"); <br />
<br />
List&lt;Carddrawapplydetail&gt; drawdetailList = new ArrayList&lt;Carddrawapplydetail&gt;(); <br />
<br />
//IC卡，100元面值的100张 <br />
Carddrawapplydetail drawdetail1 = new Carddrawapplydetail(); <br />
drawdetail1.setCardtype("1"); <br />
drawdetail1.setParvalue(100); <br />
drawdetail1.setAmount(100); <br />
//充值卡，50元面值的50张 <br />
Carddrawapplydetail drawdetail2 = new Carddrawapplydetail(); <br />
drawdetail2.setCardtype("2"); <br />
drawdetail2.setParvalue(50); <br />
drawdetail2.setAmount(50); <br />
<br />
drawdetailList.add(drawdetail1); <br />
drawdetailList.add(drawdetail2); <br />
<br />
boolean flag = drawDao.insertDraw(draw, drawdetailList); <br />
//断言 <br />
Assert.assertEquals(true,flag); <br />
} <br />
} <br />
<br />
异常如下: <br />
java.lang.NullPointerException <br />
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:142) <br />
at com.htdz.card.admin.dao.DrawDao.insertDraw(DrawDao.java:35) <br />
<br />
也就是调用到DrawDao里insertDraw()的这句时报错：session = this.getSession(); <br />
<br />
业务类里调用这个Dao都能正常使用，为什么从测试类里调用就报这个错误？ <br />
DrawDao继承了HibernateDaoSupport了啊。 </div>
<img src ="http://www.blogjava.net/zhutianxiang/aggbug/268309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-30 10:40 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/30/268309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2文件上传</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/05/261648.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Sun, 05 Apr 2009 05:04:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/05/261648.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/261648.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/05/261648.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/261648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/261648.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以一个图片上传为例子，演示了文件上传的各个方面。包括客户端控制，服务端控制，图片预览，图片压缩等。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/04/05/261648.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/261648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-05 13:04 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/05/261648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax[省市区]3级联动</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263852.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 17:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263852.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263852.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263852.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263852.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 运用了Ajax的服务端框架Dwr实现3级联动.系统处于SSH架构上 &nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263852.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/263852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 01:42 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MD5加密</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 17:28:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263851.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263851.html</trackback:ping><description><![CDATA[<p><font color="#800000">/**<br />
* MD5加密<br />
* <br />
* @param s<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要加密的字符串(不可为null)<br />
* <br />
* @return 返回加密后的密文<br />
*/<br />
public final static String MD5(String pwd) {<br />
&nbsp;&nbsp; String Digest = "";<br />
&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp; MessageDigest currentAlgorithm = MessageDigest.getInstance("md5");<br />
&nbsp;&nbsp;&nbsp;&nbsp; currentAlgorithm.reset();<br />
&nbsp;&nbsp;&nbsp;&nbsp; byte[] mess = pwd.getBytes();// 获取要加密的byte数组<br />
&nbsp;&nbsp;&nbsp;&nbsp; byte[] hash = currentAlgorithm.digest(mess);// 获取加密以后的byte数组<br />
&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; hash.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int v = hash[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (v &lt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = 256 + v; // 如果 v &lt; 0 &gt; 0 的数，否则不好转换成字符，哪有ASC代码&lt;0的呀<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if (v &lt; 16) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Digest += "0"; // 如果该v&lt;1616进制数就是只有个位，例如15转换就成长度就相等了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Digest += Integer.toString(v, 16).toUpperCase();<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; mess = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp; hash = null;<br />
&nbsp;&nbsp; } catch (NoSuchAlgorithmException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; return Digest;<br />
}</font></p>
<img src ="http://www.blogjava.net/zhutianxiang/aggbug/263851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 01:28 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义图形验证码标签</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 16:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263848.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263848.html</trackback:ping><description><![CDATA[JSP页面上引入：<br />
&lt;%@ taglib uri="/htdz-tag" prefix="htdz-tag"%&gt;<br />
使用自定义图形验证码标签自动生成验证码:<br />
&lt;htdz-tag:CheckCodeTag /&gt;<br />
<br />
以下为详细定义过程：<br />
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br />
&lt;taglib xmlns="http://java.sun.com/xml/ns/j2ee"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"<br />
&nbsp;version="2.0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;htdz tag&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;display-name&gt;htdz tag&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;short-name&gt;htdz-tag&lt;/short-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;uri&gt;/htdz-tag&lt;/uri&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;tag&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;!--&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 验证码控件<br />
&nbsp;&nbsp;&nbsp; 使用说明：<br />
&nbsp;&nbsp;&nbsp; jsp中使用范例：<br />
&nbsp;&nbsp;&nbsp; 1.无参数：&lt;htdz-tag:CheckCodeTag/&gt;<br />
&nbsp;&nbsp;&nbsp; 2.全部参数：&lt;htdz-tag:CheckCodeTag id="checkCodeImg" height="18" width="58"/&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 如果用户未设置参数，则默认值分别为：height="18" width="58"<br />
&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;验证码控件&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;name&gt;CheckCodeTag&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tag-class&gt;com.htdz.util.tag.CheckCodeTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;body-content&gt;JSP&lt;/body-content&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;id&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;id&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;高&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;height&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;宽&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;width&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/tag&gt;<br />
&lt;taglib/&gt;<br />
<br />
CheckCodeTag.java:<br />
<p>public class CheckCodeTag extends TagSupport {<br />
&nbsp;&nbsp;&nbsp; private String id;<br />
&nbsp;&nbsp;&nbsp; private String height;<br />
&nbsp;&nbsp;&nbsp; private String width;</p>
<p>&nbsp;&nbsp;&nbsp; public CheckCodeTag() {<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; @SuppressWarnings( { "unchecked", "static-access" })<br />
&nbsp;&nbsp;&nbsp; public int doStartTag() throws JspException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer html = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (height == null || height.length() == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height = "18";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (width == null || width.length() == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width = "60";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("&lt;img alt=\"重新获取验证码\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (id != null &amp;&amp; id.length() &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(" id=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(" height=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(height);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\" width=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(width);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\" src=\"/checkCodeImg\" onclick=\"this.src='/checkCodeImg?now='+new Date();\" style=\"cursor: pointer\" /&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageContext.getOut().println(html.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new JspException(e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.SKIP_BODY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; public void setId(String id) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.id = id;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setHeight(String height) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.height = height;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setWidth(String width) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;this.width = width;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</p>
<br />
<br />
web.xml:<br />
&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;img&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.htdz.util.CheckCodeImg&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;img&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/checkCodeImg&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br />
<br />
<br />
CheckCodeImg.java:<br />
<br />
<p>public class CheckCodeImg extends HttpServlet {<br />
&nbsp;&nbsp;&nbsp; private Font mFont = new Font("Arial black", Font.PLAIN, 16);</p>
<p>&nbsp;&nbsp;&nbsp; public void init() throws ServletException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; Color getRandColor(int fc, int bc) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fc &gt; 255)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fc = 255;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (bc &gt; 255)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc = 255;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int r = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int g = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int b = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Color(r, g, b);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; public void service(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Pragma", "No-cache");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Cache-Control", "no-cache");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setDateHeader("Expires", 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("image/png");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int width = 60, height = 18;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage image = new BufferedImage(width, height,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage.TYPE_INT_RGB);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphics g = image.getGraphics();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(getRandColor(200, 250));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.fillRect(1, 1, width - 1, height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(new Color(102, 102, 102));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.drawRect(0, 0, width - 1, height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setFont(mFont);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(getRandColor(160, 200));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for (int i = 0; i &lt; 155; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = random.nextInt(width - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = random.nextInt(height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xl = random.nextInt(6) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; int yl = random.nextInt(12) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;g.drawLine(x, y, x + xl, y + yl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 70; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = random.nextInt(width - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = random.nextInt(height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xl = random.nextInt(12) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int yl = random.nextInt(6) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;g.drawLine(x, y, x - xl, y - yl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] codes = { // 'a','b','c','d','e','f','h','k','m','n','r','s','t','x','y',//15个<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 'A','B','C','D','E','F','G','H','K','N','S','T','X','Y'//14<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sRand = "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 4; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = random.nextInt(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String tmp = String.valueOf(codes[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sRand += tmp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(new Color(20 + random.nextInt(110), 20 + random<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .nextInt(110), 20 + random.nextInt(110)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.drawString(tmp, 15 * i + 2, 15);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session = request.getSession(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(MyConstant.SESSION_CHECKCODE, sRand);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIO.write(image, "PNG", response.getOutputStream());<br />
&nbsp;&nbsp; }<br />
}<br />
</p>
<img src ="http://www.blogjava.net/zhutianxiang/aggbug/263848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 00:52 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义分页标签</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 16:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263837.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263837.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近期在做的S2SH项目，因为多处用到分页，BOSS要求小弟将其抽象出来。小弟不才，实际参与开发的经验也就1年。<br>于是花了点时间将其做成自定义标签供所有需要分页的业务调用。小结一下，供新手参考。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/263837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 00:23 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dwr使用引导</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/03/08/258423.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Sat, 07 Mar 2009 16:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/03/08/258423.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/258423.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/03/08/258423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/258423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/258423.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DWR（Direct Web Remoting）是Ajax的服务端框架，它是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/03/08/258423.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/258423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-03-08 00:38 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/03/08/258423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dom高级样式编程</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258109.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 06 Mar 2009 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258109.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/258109.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/258109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/258109.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.内联样式:(直接通过HTML的style特性来分配的样式)<br>Dom采用style对象来管理元素的CSS样式。<br>2.访问样式表<br>使用style对象可以方便地获取某个有style特性的元素的CSS样式。但它无法表示由CSS<br>规则或在style特性外部定义类所定义的元素CSS样式。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258109.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/258109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-03-06 09:13 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dom技术基础</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258108.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 06 Mar 2009 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258108.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/258108.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/258108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/258108.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DOM Level1:对文档节点进行访问以及增，删，改<br>Node接口定义了一些所有节点类型都包含的特性和方法<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258108.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/258108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-03-06 09:11 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/03/06/258108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dwr过滤器与异常处理</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/03/05/258092.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Thu, 05 Mar 2009 15:06:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/03/05/258092.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/258092.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/03/05/258092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/258092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/258092.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <!--调用UserService中的方法时将被DWRFilter拦截--><br>      <filter class="com.test.filter.DWRFilter"></filter><br>      <convert match="com.test.bean.User" converter="bean"></convert><br><br>      <!-调用UserService中的方法返回空对象时，让Dwr报错--><br>      <convert match="java.lang.NullPointerException" converter="exception"></convert><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/03/05/258092.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/258092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-03-05 23:06 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/03/05/258092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>