﻿<?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>IT博客-无业бю游民-随笔分类-J2 EE</title><link>http://www.cnitblog.com/weiweibbs/category/8379.html</link><description>hobo</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 02:06:16 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 02:06:16 GMT</pubDate><ttl>60</ttl><item><title>Struts2中Session的使用</title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60039.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 12 Jul 2009 11:59:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60039.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/60039.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60039.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/60039.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/60039.html</trackback:ping><description><![CDATA[<div id=art style="MARGIN: 15px">
<p><br>在Struts2里，如果需要在Action中使用session，可以通过下面两种方式得到<br>1.通过ActionContext class中的方法getSession得到<br>2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作<br>&nbsp;<br>下面先看一个采用第一种方式，在action中得到session的例子 <br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;s2.ex.action;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.Map;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;com.opensymphony.xwork2.ActionContext;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;com.opensymphony.xwork2.ActionSupport;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_194_423_Open_Image onclick="this.style.display='none'; Codehighlighter1_194_423_Open_Text.style.display='none'; Codehighlighter1_194_423_Closed_Image.style.display='inline'; Codehighlighter1_194_423_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_194_423_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_194_423_Closed_Text.style.display='none'; Codehighlighter1_194_423_Open_Image.style.display='inline'; Codehighlighter1_194_423_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SessionTestAction&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;ActionSupport&nbsp;</span><span id=Codehighlighter1_194_423_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_194_423_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img id=Codehighlighter1_225_420_Open_Image onclick="this.style.display='none'; Codehighlighter1_225_420_Open_Text.style.display='none'; Codehighlighter1_225_420_Closed_Image.style.display='inline'; Codehighlighter1_225_420_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_225_420_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_225_420_Closed_Text.style.display='none'; Codehighlighter1_225_420_Open_Image.style.display='inline'; Codehighlighter1_225_420_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;execute()&nbsp;</span><span id=Codehighlighter1_225_420_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_225_420_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionContext&nbsp;actionContext&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ActionContext.getContext();&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;session&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;actionContext.getSession();&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.put(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">USER_NAME</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Test&nbsp;User</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;SUCCESS;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>在这个例子中，通过ActionContext得到session，并往session里放置一个key为USER_NAME，值为Test User的内容。&nbsp;<br>下面是一个实现org.apache.struts2.interceptor.SessionAware接口来对session操作的例子 </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;s2.ex.action;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.Map;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.apache.struts2.interceptor.SessionAware;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;com.opensymphony.xwork2.ActionSupport;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_232_462_Open_Image onclick="this.style.display='none'; Codehighlighter1_232_462_Open_Text.style.display='none'; Codehighlighter1_232_462_Closed_Image.style.display='inline'; Codehighlighter1_232_462_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_232_462_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_232_462_Closed_Text.style.display='none'; Codehighlighter1_232_462_Open_Image.style.display='inline'; Codehighlighter1_232_462_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SessionTest1Action&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;ActionSupport&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;SessionAware&nbsp;</span><span id=Codehighlighter1_232_462_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_232_462_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Map&nbsp;session;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_303_342_Open_Image onclick="this.style.display='none'; Codehighlighter1_303_342_Open_Text.style.display='none'; Codehighlighter1_303_342_Closed_Image.style.display='inline'; Codehighlighter1_303_342_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_303_342_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_303_342_Closed_Text.style.display='none'; Codehighlighter1_303_342_Open_Image.style.display='inline'; Codehighlighter1_303_342_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setSession(Map&nbsp;session)&nbsp;</span><span id=Codehighlighter1_303_342_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_303_342_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.session&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;session;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_374_459_Open_Image onclick="this.style.display='none'; Codehighlighter1_374_459_Open_Text.style.display='none'; Codehighlighter1_374_459_Closed_Image.style.display='inline'; Codehighlighter1_374_459_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_374_459_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_374_459_Closed_Text.style.display='none'; Codehighlighter1_374_459_Open_Image.style.display='inline'; Codehighlighter1_374_459_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;execute()&nbsp;</span><span id=Codehighlighter1_374_459_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_374_459_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.session.put(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">USER_NAME</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Test&nbsp;User&nbsp;1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;SUCCESS;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>在这个例子中实现了接口SessionAware中的setSession方法。<br>&nbsp;<br>上面两种方式都可以得到session，能实现的功能都是一样的。<br>这里推荐通过第二种方式来使用session，原因是便于做单体测试，用第二种方式，只需要构造一个Map就可以对action class进行单体测试了。<br>在一个项目中可能会有很多action都需要用到session，如果每个action都来实现org.apache.struts2.interceptor.SessionAware这个接口，可能会显得比较麻烦，所以建议作一个抽象的BaseAction类来实现org.apache.struts2.interceptor.SessionAware接口，以后所有的action只要继承这个BaseAction就可以了。<br>&nbsp;<br>下面是一个如何在JSP中使用session的例子。 <br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_2_47_Open_Image onclick="this.style.display='none'; Codehighlighter1_2_47_Open_Text.style.display='none'; Codehighlighter1_2_47_Closed_Image.style.display='inline'; Codehighlighter1_2_47_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_2_47_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_47_Closed_Text.style.display='none'; Codehighlighter1_2_47_Open_Image.style.display='inline'; Codehighlighter1_2_47_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_2_47_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2_47_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@&nbsp;page&nbsp;contentType</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text/html;&nbsp;charset=UTF-8</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_54_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_80_Open_Text.style.display='none'; Codehighlighter1_54_80_Closed_Image.style.display='inline'; Codehighlighter1_54_80_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_54_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_80_Closed_Text.style.display='none'; Codehighlighter1_54_80_Open_Image.style.display='inline'; Codehighlighter1_54_80_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_54_80_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_54_80_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@page&nbsp;pageEncoding</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">utf-8</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_87_124_Open_Image onclick="this.style.display='none'; Codehighlighter1_87_124_Open_Text.style.display='none'; Codehighlighter1_87_124_Closed_Image.style.display='inline'; Codehighlighter1_87_124_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_87_124_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_87_124_Closed_Text.style.display='none'; Codehighlighter1_87_124_Open_Image.style.display='inline'; Codehighlighter1_87_124_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_87_124_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_87_124_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@taglib&nbsp;prefix</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">s</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;uri</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/struts-tags</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Session&nbsp;Test</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">s:property&nbsp;</span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="#session.USER_NAME"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">${session.USER_NAME}</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>&nbsp;</p>
<p>一般在项目中往往会往session里放置一个Object，必如说user，user里有个boolean admin和String userName，如果user里存在isAdmin的方法，在jsp中可以通过&lt;s:if test="#session.user.admin"&gt;来判断用户有没有管理权限，通过&lt;s:property value="#session.user.userName"&gt;或者${session.user.userName}来取得用户名。<br></p>
</div>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/60039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-12 19:59 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>@SuppressWarnings</title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60030.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 12 Jul 2009 11:13:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60030.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/60030.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60030.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/60030.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/60030.html</trackback:ping><description><![CDATA[@SuppressWarnings <br>J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令，告诉它对被批注的代码元素内部的某些警告保持静默。 <br>一点背景：J2SE 5.0 为 Java 语言增加了几个新的特性，并且和它们一起增加了许多新的警告并承诺在将来增加更多的警告。您可以为 "javac" 增加 -Xlint 参数来控制是否报告这些警告（如上面的 @Deprecated 部分所示）。 <br>默认情况下，Sun 编译器以简单的两行的形式输出警告。通过添加 -Xlint:keyword 标记（例如 -Xlint:finally），您可以获得关键字类型错误的完整说明。通过在关键字前面添加一个破折号，写为 -Xlint:-keyword，您可以取消警告。（-Xlint 支持的关键字的完整列表可以在 <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javac.html" target=_blank><span style="FONT-FAMILY: Arial">javac 文档页面</span></a><span style="FONT-FAMILY: Arial">上找到。）下面是一个清单： <br>关键字 用途deprecation使用了不赞成使用的类或方法时的警告unchecked执行了未检查的转换时的警告，例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。fallthrough当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。path在类路径、源文件路径等中有不存在的路径时的警告。 serial当在可序列化的类上缺少 serialVersionUID 定义时的警告。 finally任何 finally 子句不能正常完成时的警告。all关于以上所有情况的警告。 <br><br>@SuppressWarnings 批注允许您选择性地取消特定代码段（即，类或方法）中的警告。其中的想法是当您看到警告时，您将调查它，如果您确定它不是问题，您就可以添加一个 @SuppressWarnings 批注，以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误，但实际上它将提高代码安全性，因为它将防止您对警告无动于衷 — 您看到的每一个警告都将值得注意。 <br>下面是使用 @SuppressWarnings 来取消 deprecation 警告的一个例子： <br><br>public class DeprecatedExample2 { @Deprecated public static void foo() { }}public class DeprecatedUser2 { @SuppressWarnings(value={"deprecation"})public static void main(String[] args) { DeprecatedExample2.foo(); }} <br><br>@SuppressWarnings 批注接收一个 "value" 变量，该变量是一个字符串数组，它指示将取消的警告。合法字符串的集合随编译器而变化，但在 JDK 上，可以传递给 -Xlint 的是相同的关键字集合（非常方便）。并且要求编译器忽略任何它们不能识别的关键字，这在您使用一些不同的编译器时非常方便。 <br>因为 @SuppressWarnings 批注仅接收一个参数，并为该参数使用了特殊的名称 "value"，所以您可以选择省略 value=，作为一种方便的缩写： <br><br><br>public class DeprecatedUser2 { @SuppressWarnings({"deprecation"})public static void main(String[] args) { DeprecatedExample2.foo(); }} <br><br>您可以将单个数组参数中的任意数量的字符串值传递给批注，并在任何级别上放置批注。例如，以下示例代码指示将取消整个类的 deprecation 警告，而仅在 main() 方法代码内取消 unchecked 和 fallthrough 警告： <br><br>import java.util.*;@SuppressWarnings({"deprecation"})public class NonGenerics { @SuppressWarnings({"unchecked","fallthrough"})public static void main(String[] args) { Runtime.runFinalizersOnExit(); List list = new ArrayList(); list.add("foo"); } public static void foo() { List list = new ArrayList(); list.add("foo"); }} <br><br>@SuppressWarnings 是否比前两个批注更有用？绝对是这样。不过，在 JDK 1.5.0 版本中还没有完全支持该批注，如果您用 1.5.0 来尝试它，那么它将类似无操作指令。调用 -Xlint:-deprecation 也没有任何效果。Sun 没有声明什么时候将增加支持，但它暗示这将在即将推出的一个 dot 版本中实现。 <br>更进一步 <br>如果您试图在 Javadocs 页面中查看这些属性，那么您可能很难找到它们。它们位于核心的 java.lang 包中，但有点隐蔽，它们出现在 Javadoc 类的最底端，列在 Exceptions 和 Errors 后面。 <br></span><a href="http://www.oracle.com/technology/pub/images/hunter_meta1_f1.gif" target=_blank><img src="http://www.oracle.com/technology/pub/images/hunter_meta1_f1.gif"></a> <br><br>注意到了附加在 SuppressWarnings 批注后面的陌生的批注 @Target 和 @Retention 了吗？这些称为元数据批注，它们描述了该批注在哪里适用。我将在本系列的第二篇文章中介绍它们，以及介绍如何将元数据批注应用到您自己的批注中。 
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/60030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-12 19:13 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/12/60030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2标签集</title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60008.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sat, 11 Jul 2009 01:10:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60008.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/60008.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60008.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/60008.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/60008.html</trackback:ping><description><![CDATA[A： <br>&lt;s:a xhref=""&gt;&lt;/s:a&gt;-----超链接，类似于html里的&lt;a&gt;&lt;/a&gt; <br>&lt;s:action name=""&gt;&lt;/s:action&gt;-----执行一个view里面的一个action <br>&lt;s:actionerror/&gt;-----如果action的errors有值那么显示出来 <br>&lt;s:actionmessage/&gt;-----如果action的message有值那么显示出来 <br>&lt;s:append&gt;&lt;/s:append&gt;-----添加一个值到list，类似于list.add(); <br>&lt;s:autocompleter&gt;&lt;/s:autocompleter&gt;-----自动完成&lt;s:combobox&gt;标签的内容，这个是ajax <br><br>B： <br>&lt;s:bean name=""&gt;&lt;/s:bean&gt;-----类似于struts1.x中的，JavaBean的值 <br><br>C： <br>&lt;s:checkbox&gt;&lt;/s:checkbox&gt;-----复选框 <br>&lt;s:checkboxlist list=""&gt;&lt;/s:checkboxlist&gt;-----多选框 <br>&lt;s:combobox list=""&gt;&lt;/s:combobox&gt;-----下拉框 <br>&lt;s:component&gt;&lt;/s:component&gt;-----图像符号 <br><br>D： <br>&lt;s:date/&gt;-----获取日期格式 <br>&lt;s:datetimepicker&gt;&lt;/s:datetimepicker&gt;-----日期输入框 <br>&lt;s:debug&gt;&lt;/s:debug&gt;-----显示错误信息 <br>&lt;s:div&gt;&lt;/s:div&gt;-----表示一个块，类似于html的&lt;div&gt;&lt;/div&gt; <br>&lt;s:doubleselect list="" doubleName="" doubleList=""&gt;&lt;/s:doubleselect&gt;-----双下拉框 <br><br>E： <br>&lt;s:if test=""&gt;&lt;/s:if&gt; <br>&lt;s:elseif test=""&gt;&lt;/s:elseif&gt; <br>&lt;s:else&gt;&lt;/s:else&gt;-----这3个标签一起使用，表示条件判断 <br><br>F： <br>&lt;s:fielderror&gt;&lt;/s:fielderror&gt;-----显示文件错误信息 <br>&lt;s:file&gt;&lt;/s:file&gt;-----文件上传 <br>&lt;s:form action=""&gt;&lt;/s:form&gt;-----获取相应form的值 <br><br>G： <br>&lt;s:generator separator="" val=""&gt;&lt;/s:generator&gt;----和&lt;s:iterator&gt;标签一起使用 <br><br>H： <br>&lt;s:head/&gt;-----在&lt;head&gt;&lt;/head&gt;里使用，表示头文件结束 <br>&lt;s:hidden&gt;&lt;/s:hidden&gt;-----隐藏值 <br><br>I： <br>&lt;s:i18n name=""&gt;&lt;/s:i18n&gt;-----加载资源包到值堆栈 <br>&lt;s:include value=""&gt;&lt;/s:include&gt;-----包含一个输出，servlet或jsp页面 <br>&lt;s:inputtransferselect list=""&gt;&lt;/s:inputtransferselect&gt;-----获取form的一个输入 <br>&lt;s:iterator&gt;&lt;/s:iterator&gt;-----用于遍历集合 <br><br>L： <br>&lt;s:label&gt;&lt;/s:label&gt;-----只读的标签 <br><br>M： <br>&lt;s:merge&gt;&lt;/s:merge&gt;-----合并遍历集合出来的值 <br><br>O： <br>&lt;s:optgroup&gt;&lt;/s:optgroup&gt;-----获取标签组 <br>&lt;s:optiontransferselect doubleList="" list="" doubleName=""&gt;&lt;/s:optiontransferselect&gt;-----左右选择框 <br><br>P： <br>&lt;s:param&gt;&lt;/s:param&gt;-----为其他标签提供参数 <br>&lt;s:password&gt;&lt;/s:password&gt;-----密码输入框 <br>&lt;s:property/&gt;-----得到'value'的属性 <br>&lt;s:push value=""&gt;&lt;/s:push&gt;-----value的值push到栈中,从而使property标签的能够获取value的属性 <br><br>R： <br>&lt;s:radio list=""&gt;&lt;/s:radio&gt;-----单选按钮 <br>&lt;s:reset&gt;&lt;/s:reset&gt;-----重置按钮 <br><br>S： <br>&lt;s:select list=""&gt;&lt;/s:select&gt;-----单选框 <br>&lt;s:set name=""&gt;&lt;/s:set&gt;-----赋予变量一个特定范围内的值 <br>&lt;s:sort comparator=""&gt;&lt;/s:sort&gt;-----通过属性给list分类 <br>&lt;s:submit&gt;&lt;/s:submit&gt;-----提交按钮 <br>&lt;s:subset&gt;&lt;/s:subset&gt;-----为遍历集合输出子集 <br><br>T： <br>&lt;s:tabbedPanel id=""&gt;&lt;/s:tabbedPanel&gt;-----表格框 <br>&lt;s:table&gt;&lt;/s:table&gt;-----表格 <br>&lt;s:text name=""&gt;&lt;/s:text&gt;-----I18n文本信息 <br>&lt;s:textarea&gt;&lt;/s:textarea&gt;-----文本域输入框 <br>&lt;s:textfield&gt;&lt;/s:textfield&gt;-----文本输入框 <br>&lt;s:token&gt;&lt;/s:token&gt;-----拦截器 <br>&lt;s:tree&gt;&lt;/s:tree&gt;-----树 <br>&lt;s:treenode label=""&gt;&lt;/s:treenode&gt;-----树的结构 <br><br>U： <br>&lt;s:updownselect list=""&gt;&lt;/s:updownselect&gt;-----多选择框 <br>&lt;s:url&gt;&lt;/s:url&gt;-----创建url<br>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/60008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-11 09:10 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2的struts.properties配置文件详解</title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60007.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sat, 11 Jul 2009 01:04:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60007.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/60007.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60007.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/60007.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/60007.html</trackback:ping><description><![CDATA[<strong>struts.action.extension<br></strong>The URL extension to use to determine if the request is meant for a Struts action <br>用URL扩展名来确定是否这个请求是被用作Struts action，其实也就是设置 action的后缀，例如login.do的'do'字。<br><strong>struts.configuration</strong><br>The org.apache.struts2.config.Configuration implementation class<br>org.apache.struts2.config.Configuration接口名<br><strong>struts.configuration.files</strong><br>A list of configuration files automatically loaded by Struts <br>struts自动加载的一个配置文件列表<br><strong>struts.configuration.xml.reload</strong><br>Whether to reload the XML configuration or not<br>是否加载xml配置(true,false)<br><strong>struts.continuations.package</strong><br>The package containing actions that use Rife continuations<br>含有actions的完整连续的package名称<br><strong>struts.custom.i18n.resources</strong><br>Location of additional localization properties files to load <br>加载附加的国际化属性文件（不包含.properties后缀）<br><strong>struts.custom.properties</strong><br>Location of additional configuration properties files to load<br>加载附加的配置文件的位置<br><br><strong>struts.devMode</strong><br>Whether Struts is in development mode or not<br>是否为struts开发模式<br><strong>struts.dispatcher.parametersWorkaround<br></strong>Whether to use a Servlet request parameter workaround necessary for some versions of WebLogic<br>（某些版本的weblogic专用）是否使用一个servlet请求参数工作区（PARAMETERSWORKAROUND）<br><strong>struts.enable.DynamicMethodInvocation</strong><br>Allows one to disable dynamic method invocation from the URL<br>允许动态方法调用<br><strong>struts.freemarker.manager.classname</strong><br>The org.apache.struts2.views.freemarker.FreemarkerManager implementation class <br>org.apache.struts2.views.freemarker.FreemarkerManager接口名<br><strong>struts.i18n.encoding</strong><br>The encoding to use for localization messages<br>国际化信息内码<br><strong>struts.i18n.reload</strong><br>Whether the localization messages should automatically be reloaded<br>是否国际化信息自动加载<br><strong>struts.locale</strong><br>The default locale for the Struts application<br>默认的国际化地区信息<br><strong>struts.mapper.class</strong><br>The org.apache.struts2.dispatcher.mapper.ActionMapper implementation class<br>org.apache.struts2.dispatcher.mapper.ActionMapper接口<br><strong>struts.multipart.maxSize</strong><br>The maximize size of a multipart request (file upload)<br>multipart请求信息的最大尺寸（文件上传用）<br><strong>struts.multipart.parser</strong><br>The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation for a multipart request (file upload) <br>专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口（文件上传用）<br><br><strong>struts.multipart.saveDir</strong><br>The directory to use for storing uploaded files <br>设置存储上传文件的目录夹<br><strong>struts.objectFactory</strong><br>The com.opensymphony.xwork2.ObjectFactory implementation class<br>com.opensymphony.xwork2.ObjectFactory接口（spring）<br><strong>struts.objectFactory.spring.autoWire</strong><br>Whether Spring should autoWire or not<br>是否自动绑定Spring<br><strong>struts.objectFactory.spring.useClassCache</strong><br>Whether Spring should use its class cache or not<br>是否spring应该使用自身的cache<br><strong>struts.objectTypeDeterminer</strong><br>The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation class<br>com.opensymphony.xwork2.util.ObjectTypeDeterminer接口<br><strong>struts.serve.static.browserCache</strong><br>If static content served by the Struts filter should set browser caching header properties or not <br>是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中<br><strong>struts.serve.static</strong><br>Whether the Struts filter should serve static content or not <br>是否struts过滤器应该提供静态内容<br><strong>struts.tag.altSyntax</strong><br>Whether to use the alterative syntax for the tags or not <br>是否可以用替代的语法替代tags<br><strong>struts.ui.templateDir</strong><br>The directory containing UI templates<br>UI templates的目录夹<br><strong>struts.ui.theme</strong><br>The default UI template theme<br>默认的UI template主题<br><strong>struts.url.http.port<br></strong>The HTTP port used by Struts URLs<br>设置http端口<br><strong>struts.url.https.port</strong><br>The HTTPS port used by Struts URLs <br>设置https端口<br><strong>struts.url.includeParams</strong><br>The default includeParams method to generate Struts URLs <br>在url中产生 默认的includeParams<br><br><strong>struts.velocity.configfile</strong><br>The Velocity configuration file path<br>velocity配置文件路径<br><strong>struts.velocity.contexts</strong><br>List of Velocity context names<br>velocity的context列表<br><br><strong>struts.velocity.manager.classname</strong><br>org.apache.struts2.views.velocity.VelocityManager implementation class<br>org.apache.struts2.views.velocity.VelocityManager接口名<br><strong>struts.velocity.toolboxlocation</strong><br>The location of the Velocity toolbox<br>velocity工具盒的位置 <br><strong>struts.xslt.nocache</strong><br>Whether or not XSLT templates should not be cached<br>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/60007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-11 09:04 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/11/60007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]【Java EE】ANT+Xdoclet自动生成Hibernate配置文件</title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Fri, 10 Jul 2009 00:53:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/59982.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/59982.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/59982.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、下载Xdoclet，网址：http://xdoclet.sourceforge.net/，解压2、新建包com.test.model，存放实体类Group，UserGroup.java&nbsp;1package&nbsp;com.test.model;&nbsp;2&nbsp;3import&nbsp;java.util.Set;&nbsp;4&nbsp;5/**&nbsp;*//**&...&nbsp;&nbsp;<a href='http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html'>阅读全文</a><img src ="http://www.cnitblog.com/weiweibbs/aggbug/59982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-10 08:53 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发 </title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59930.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Fri, 10 Jul 2009 00:49:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59930.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/59930.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/59930.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/59930.html</trackback:ping><description><![CDATA[本人采用的开发环境为MyEclipse6.6，数据库为MySQL，Web服务为Tomcat。<br>这三个框架的整合其实就是Struts2.1.6+Spring2.5.6的整合、Spring2.5.6+Hibernate3.3.1的整合。<br>（一）Struts2.1.6+Spring2.5.6的整合<br>&nbsp;&nbsp;&nbsp;详见之前发表的文章<font color=#0000ff><a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html"><font color=#0000ff>【J2EE】Struts2.1.6与Spring2.5.6框架整合</font><br></a></font>（二）Spring2.5.6+Hibernate3.3.1的整合<br>1、引入Hibernate必需的jar包<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">hibernate3.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>antlr-2.7.6.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>commons-collections-3.1.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>dom4j-1.6.1.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>javassist-3.4.GA.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>jta-1.1.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>slf4j-api-1.5.2.jar</span></div>
因为slf4j-api-1.5.2.jar只有接口，还需要其实现类，而Hibernate带有的jar包中并没有包含，所以还需自己到apache网站下载<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">slf4j-log4j12-1.5.2.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>log4j-1.2.14.jar</span></div>
两个jar包，一个是其实现，log4j-1.2.14.jar是slf4j-log4j12-1.5.2.jar所需要用到的jar包<br>2、在web.xml中配置过滤器，让Spring为我们自动管理session，无需我们手动开、关Hibernate中的session<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">hibernateFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">hibernateFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span></div>
3、在web.xml中配置过滤器，处理字符集编码<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">encodingFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.web.filter.CharacterEncodingFilter<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">encoding</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">GBK</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">encodingFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span></div>
4、在applicationContext-common.xml中配置一些公共的配置<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;配置sessionFactory&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="configLocation"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">classpath:hibernate.cfg.xml</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;配置事务管理器&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="transactionManager"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ref&nbsp;</span><span style="COLOR: #ff0000">bean</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;配置事务的传播特性&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:advice&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="txAdvice"</span><span style="COLOR: #ff0000">&nbsp;transaction-manager</span><span style="COLOR: #0000ff">="transactionManager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:attributes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:method&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="add*"</span><span style="COLOR: #ff0000">&nbsp;propagation</span><span style="COLOR: #0000ff">="REQUIRED"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:method&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="delete*"</span><span style="COLOR: #ff0000">&nbsp;propagation</span><span style="COLOR: #0000ff">="REQUIRED"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:method&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="modify*"</span><span style="COLOR: #ff0000">&nbsp;propagation</span><span style="COLOR: #0000ff">="REQUIRED"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tx:method&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="*"</span><span style="COLOR: #ff0000">&nbsp;read-only</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tx:attributes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tx:advice</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;那些类的哪些方法参与事务&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:config</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">aop:advisor&nbsp;</span><span style="COLOR: #ff0000">pointcut</span><span style="COLOR: #0000ff">="execution(*&nbsp;com.test.manager.*.*(..))"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;advice-ref</span><span style="COLOR: #0000ff">="txAdvice"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">aop:config</span><span style="COLOR: #0000ff">&gt;</span></div>
5、在上一步中我们用到了aop，Spring本身并没有对其实现，而是使用了现成别人已经做好了的。需要引入两个jar包，在Spring中的 lib\aspectj 目录下<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">aspectjrt.jar<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>aspectjweaver.jar</span></div>
<p>6、 利用ANT+Xdoclet自动生成Hibernate配置文件，详见之前发表的文章<a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59982.html"><font color=#0000ff>【J2EE】ANT+Xdoclet自动生成Hibernate配置文件</font></a><br>7、在MySQL中建立数据库test<br>8、部署项目，启动Tomcat服务器便可在数据库中见到Hibernate为我们自动生成了两张表t_group、t_user<br><img height=131 alt="" src="http://www.cnitblog.com/images/cnitblog_com/intrl/2009-04-13_184201.jpg" width=198 border=0></p>
9、由以上步骤可知，Spring与Hibernate整合成功。<br>（三）验证三个框架是否成功整合<br>1、对之前发表的文章<font color=#0000ff><font color=#0000ff><u><a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html"><font color=#0000ff><font color=#0000ff><u>【J2EE】Struts2.1.6与Spring2.5.6框架整合</u></font></font></a></u></font></font>中的com.test.manager.impl中的类LoginManagerImpl作如下修改：<br>继承HibernateDaoSupport<br>修改isLogin方法的实现<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;com.test.manager.impl;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.List;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.springframework.orm.hibernate3.support.HibernateDaoSupport;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;com.test.manager.LoginManager;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;com.test.model.User;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;LoginManagerImpl&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;HibernateDaoSupport&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id=Codehighlighter1_279_779_Open_Image onclick="this.style.display='none'; Codehighlighter1_279_779_Open_Text.style.display='none'; Codehighlighter1_279_779_Closed_Image.style.display='inline'; Codehighlighter1_279_779_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_279_779_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_279_779_Closed_Text.style.display='none'; Codehighlighter1_279_779_Open_Image.style.display='inline'; Codehighlighter1_279_779_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoginManager&nbsp;</span><span id=Codehighlighter1_279_779_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_279_779_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unchecked</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img id=Codehighlighter1_371_777_Open_Image onclick="this.style.display='none'; Codehighlighter1_371_777_Open_Text.style.display='none'; Codehighlighter1_371_777_Closed_Image.style.display='inline'; Codehighlighter1_371_777_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_371_777_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_371_777_Closed_Text.style.display='none'; Codehighlighter1_371_777_Open_Image.style.display='inline'; Codehighlighter1_371_777_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">&nbsp;isLogin(String&nbsp;username,&nbsp;String&nbsp;password)&nbsp;</span><span id=Codehighlighter1_371_777_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_371_777_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_375_524_Open_Image onclick="this.style.display='none'; Codehighlighter1_375_524_Open_Text.style.display='none'; Codehighlighter1_375_524_Closed_Image.style.display='inline'; Codehighlighter1_375_524_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_375_524_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_375_524_Closed_Text.style.display='none'; Codehighlighter1_375_524_Open_Image.style.display='inline'; Codehighlighter1_375_524_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_375_524_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_375_524_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;if(null!=username&amp;&amp;null!=password&amp;&amp;"intrl".equals(username.trim())&amp;&amp;"intrl".equals(password.trim()))&nbsp;{<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;return&nbsp;true;&nbsp;}&nbsp;return&nbsp;false;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;s&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Object[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;username;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;password;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">User</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;users&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getHibernateTemplate().find(<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">from&nbsp;User&nbsp;user&nbsp;where&nbsp;user.username=?&nbsp;and&nbsp;password=?</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;s);<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img id=Codehighlighter1_738_759_Open_Image onclick="this.style.display='none'; Codehighlighter1_738_759_Open_Text.style.display='none'; Codehighlighter1_738_759_Closed_Image.style.display='inline'; Codehighlighter1_738_759_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_738_759_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_738_759_Closed_Text.style.display='none'; Codehighlighter1_738_759_Open_Image.style.display='inline'; Codehighlighter1_738_759_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(users.size()&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_738_759_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_738_759_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
2、因为我们所继承的类HibernateDaoSupport需要显示地注入sessionFactory，所以必须在applicationContext-beans.xml中修改loginManager的配置，增加一个所需注入参数<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="loginManager"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="com.test.manager.impl.LoginManagerImpl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
3、在MySQL中存入数据，用户名和密码均为intrl，以便测试时使用。<br>4、重新启动Tomcat服务，访问登录页，进行测试，可以成功读取数据库中的User信息进行验证。三个框架整合成功！！！ 
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/59930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-10 08:49 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合 </title><link>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Fri, 10 Jul 2009 00:44:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/59931.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/59931.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/59931.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、在MyEclipse中新建项目（test）2、Struts包导入&nbsp;&nbsp;&nbsp;暂时导入所必需的包，其他包将在用到时导入：&nbsp;&nbsp;&nbsp;commons-fileupload-1.2.1.jar&nbsp;&nbsp;&nbsp;commons-logging-1.0.4.jar&nbsp;&nbsp;&nbsp;freemarker-2.3.13.ja...&nbsp;&nbsp;<a href='http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html'>阅读全文</a><img src ="http://www.cnitblog.com/weiweibbs/aggbug/59931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2009-07-10 08:44 <a href="http://www.cnitblog.com/weiweibbs/archive/2009/07/10/59931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>