首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

构建一个通用的Action 种,请大家谈谈自己的看法和经验

2012-11-07 
构建一个通用的Action 类,请大家谈谈自己的看法和经验如果为第个Form都建一个Action那是相当麻烦的,如果像

构建一个通用的Action 类,请大家谈谈自己的看法和经验

如果为第个Form都建一个Action那是相当麻烦的,

如果像下面这样构建啦一个通用的Action会带来什么好处?

而像平常的做法是几乎是一个Form 和 Action的这种做法又有什么好处?
 
请大家谈谈自己的看法和经验?

下面是源码和相关的解释

请大家先看一下Struts-config.xml 中的一部分内容

            <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.chinacreator.ccimp.common.struts;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.ccimp.common.ErrorReporter;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.ccimp.common.page.PageHelper;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.ccimp.CcimpException;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.commons.beans.NameValuePair;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.commons.utils.StringUtil;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;com.chinacreator.security.AccessControl;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.apache.log4j.Logger;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;org.apache.struts.action.Action;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.apache.struts.action.ActionForm;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;org.apache.struts.action.ActionForward;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.apache.struts.action.ActionMapping;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;org.apache.commons.fileupload.FileItem;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.apache.commons.fileupload.FileItemFactory;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;org.apache.commons.fileupload.FileUploadException;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.apache.commons.fileupload.servlet.ServletFileUpload;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;org.apache.commons.fileupload.disk.DiskFileItemFactory;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletRequest;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletResponse;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;javax.servlet.ServletException;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.util.ArrayList;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;java.util.Enumeration;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.util.List;&nbsp;&nbsp;</span></span></li>
            <li class=""><span><span class="keyword">import</span><span>&nbsp;java.io.IOException;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span><span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;信息平台使用的&nbsp;struts&nbsp;Action&nbsp;类。本类包含大量方法方便处理请求、校验参数、写业务日志等。</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*&nbsp;&lt;p/&gt;</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;使用时只需实现&nbsp;execute&nbsp;方法即可。</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*&nbsp;&lt;p/&gt;</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;本类已经实现对访问权限的控制,不需要再写。</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*&nbsp;如果要获取参数,使用&nbsp;getParam()&nbsp;方法即可。</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;如果要向&nbsp;request&nbsp;存储数据,使用&nbsp;setAttribute()&nbsp;方法即可。</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*&nbsp;如果要校验参数,实现&nbsp;validate()&nbsp;方法即可。validate()&nbsp;方法没有返回值,校验失败时请抛出异常。</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;建议使用&nbsp;assertExists()、assertTrue()&nbsp;等方法校验参数。</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;hyd</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">abstract</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;CcimpAction&nbsp;</span><span class="keyword">extends</span><span>&nbsp;Action&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">static</span><span>&nbsp;Logger&nbsp;log&nbsp;=&nbsp;Logger.getLogger(CcimpAction.</span><span class="keyword">class</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;防止重复提交的标识</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;String&nbsp;REQUEST_TOKEN&nbsp;=&nbsp;</span><span class="string">&quot;duplicate_request_token&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;预定义的&nbsp;forward</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;String&nbsp;SUCCESS&nbsp;=&nbsp;</span><span class="string">&quot;success&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">boolean</span><span>&nbsp;SHOW_PARAMS&nbsp;=&nbsp;</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;ThreadLocal&nbsp;helperContainer&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ThreadLocal();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;ThreadLocal&nbsp;errorsContainer&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ThreadLocal();&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,&nbsp;HttpServletRequest&nbsp;request,&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&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;HttpServletResponse&nbsp;response)&nbsp;<span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(<span class="string">&quot;GBK&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(<span class="string">&quot;text/html;&nbsp;charset=GBK&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(<span class="string">&quot;Pragma&quot;</span><span>,&nbsp;</span><span class="string">&quot;No-cache&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(<span class="string">&quot;Cache-Control&quot;</span><span>,&nbsp;</span><span class="string">&quot;no-cache&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setDateHeader(<span class="string">&quot;Expires&quot;</span><span>,&nbsp;</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;forward&nbsp;=&nbsp;<span class="string">&quot;error&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageHelper&nbsp;helper&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;PageHelper(request,&nbsp;response);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helperContainer.set(helper);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(<span class="string">&quot;当前&nbsp;Action:&quot;</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.getClass().getName());&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;检查用户是否登录</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!helper.checkAccess())&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(<span class="string">&quot;用户未登录,页面访问被阻止。&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(</span><span class="string">&quot;login&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TokenManager&nbsp;tm&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;TokenManager(request);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!tm.isTokenValid())&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(<span class="string">&quot;重复提交被阻止。&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute(<span class="string">&quot;result&quot;</span><span>,&nbsp;</span><span class="string">&quot;不允许重复提交。&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(forward);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.saveToken();&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;在后台输出请求参数</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(SHOW_PARAMS)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(<span class="string">&quot;请求参数:\n&quot;</span><span>&nbsp;+&nbsp;getRequestParamsString());&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;进行参数校验</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validate(form);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;errors&nbsp;=&nbsp;getErrors();&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(errors.size()&nbsp;&gt;&nbsp;</span><span class="number">0</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;buffer&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;StringBuffer();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;i&nbsp;&lt;&nbsp;errors.size();&nbsp;i++)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;msg&nbsp;=&nbsp;(String)&nbsp;errors.get(i);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.append(msg).append(<span class="string">&quot;\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;buffer.toString();&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(<span class="string">&quot;参数验证失败:&quot;</span><span>&nbsp;+&nbsp;result);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute(<span class="string">&quot;result&quot;</span><span>,&nbsp;result);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(forward);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute(<span class="string">&quot;result&quot;</span><span>,&nbsp;e.getMessage());&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(forward);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;执行子类实现的预处理</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preProcess();&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forward&nbsp;=&nbsp;execute(form);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reportError(e);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throw</span><span>&nbsp;e;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(forward);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;reportError(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.warn(<span class="string">&quot;发送错误报告...&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ErrorReporter.report(getRequest().getRequestURI(),&nbsp;e);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String&nbsp;getRequestParamsString()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair[]&nbsp;params&nbsp;=&nbsp;getHelper().getAllParams();&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;buffer&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;StringBuffer();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;i&nbsp;&lt;&nbsp;params.length;&nbsp;i++)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;param&nbsp;=&nbsp;params[i];&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.append(<span class="string">&quot;setRequestParam(\&quot;&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(param.getName())&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(<span class="string">&quot;\&quot;,&nbsp;\&quot;&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(param.getValue())&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(<span class="string">&quot;\&quot;);\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;buffer.toString();&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addError(String&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;errors&nbsp;=&nbsp;getErrors();&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errors.add(message);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查参数是否为空</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;paramName&nbsp;&nbsp;&nbsp;request&nbsp;中的参数名</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;failMessage&nbsp;如果参数为空,则向用户显示的错误讯息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationFailException&nbsp;如果参数为空</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;assertExists(String&nbsp;paramName,&nbsp;String&nbsp;failMessage)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ValidationFailException&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertTrue(paramExists(paramName),&nbsp;failMessage);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查参数是否符合条件</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;expression&nbsp;&nbsp;检查表达式</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;failMessage&nbsp;如果不符合条件,则向用户显示的错误讯息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationFailException&nbsp;如果不符合条件</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;assertTrue(</span><span class="keyword">boolean</span><span>&nbsp;expression,&nbsp;String&nbsp;failMessage)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ValidationFailException&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!expression)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;ValidationFailException(failMessage);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查参数是否符合条件</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;expression&nbsp;&nbsp;检查表达式</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;failMessage&nbsp;如果不符合条件,则向用户显示的错误讯息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationFailException&nbsp;如果不符合条件</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;assertFalse(</span><span class="keyword">boolean</span><span>&nbsp;expression,&nbsp;String&nbsp;failMessage)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ValidationFailException&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertTrue(!expression,&nbsp;failMessage);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查参数是否为空</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参数值</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;failMessage&nbsp;如果参数为空,则向用户显示的错误讯息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationFailException&nbsp;如果参数为空</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;assertNotEmpty(String&nbsp;value,&nbsp;String&nbsp;failMessage)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ValidationFailException&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertTrue(!StringUtil.isEmptyString(value),&nbsp;failMessage);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查数组是否为空</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;values&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数组</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;failMessage&nbsp;如果数组为空,则向用户显示的错误讯息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationFailException&nbsp;如果数组为空</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;assertNotEmpty(String[]&nbsp;values,&nbsp;String&nbsp;failMessage)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ValidationFailException&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertTrue(values&nbsp;!=&nbsp;<span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;values.length&nbsp;&gt;&nbsp;</span><span class="number">0</span><span>,&nbsp;failMessage);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;ArrayList&nbsp;getErrors()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;list&nbsp;=&nbsp;(ArrayList)&nbsp;getRequest().getAttribute(<span class="string">&quot;CCIMP_REQUEST_ERRORS&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(list&nbsp;==&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;ArrayList();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRequest().setAttribute(<span class="string">&quot;CCIMP_REQUEST_ERRORS&quot;</span><span>,&nbsp;list);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;list;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得一个&nbsp;AccessControl&nbsp;实例</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;一个&nbsp;AccessControl&nbsp;实例</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;AccessControl&nbsp;getAccessControl()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getAccessControl();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得请求对象</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;请求对象</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;HttpServletRequest&nbsp;getRequest()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getRequest();&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得回应对象</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;回应对象</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;HttpServletResponse&nbsp;getResponse()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getResponse();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将对象放入&nbsp;request</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;&nbsp;名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;value&nbsp;对象</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setAttribute(String&nbsp;name,&nbsp;Object&nbsp;value)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRequest().setAttribute(name,&nbsp;value);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将数值放入&nbsp;request</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;num&nbsp;&nbsp;数值</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setAttribute(String&nbsp;name,&nbsp;</span><span class="keyword">int</span><span>&nbsp;num)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute(name,&nbsp;<span class="keyword">new</span><span>&nbsp;Integer(num));&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将&nbsp;boolean&nbsp;值放入&nbsp;request</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;值</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setAttribute(String&nbsp;name,&nbsp;</span><span class="keyword">boolean</span><span>&nbsp;b)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute(name,&nbsp;Boolean.valueOf(b));&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得&nbsp;request&nbsp;中的值</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;request&nbsp;中的值</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;Object&nbsp;getAttribute(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getRequest().getAttribute(name);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获得请求参数</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String&nbsp;getParam(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getParam(name);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获得请求参数</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String&nbsp;getParamFromRequestAndSession(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;=&nbsp;getHelper().getParam(name);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(StringUtil.isEmptyString(value))&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;StringUtil.replaceNull(getSessionAttributeOnce(name));&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;value;&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获得请求参数</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String&nbsp;getParam(String&nbsp;name,&nbsp;Object&nbsp;defaultValue)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getParam(name,&nbsp;StringUtil.replaceNull(defaultValue));&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;获得请求参数</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String[]&nbsp;getParamValues(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getParamValues(name);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String&nbsp;getSessionString(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getHelper().getSessionString(name);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;String[]&nbsp;getParamNames()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;nameArr&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;ArrayList();&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;names&nbsp;=&nbsp;getRequest().getParameterNames();&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>&nbsp;(names.hasMoreElements())&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nameArr.add(names.nextElement());&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;(String[])&nbsp;nameArr.toArray(</span><span class="keyword">new</span><span>&nbsp;String[nameArr.size()]);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置处理结果信息</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;message&nbsp;处理结果信息(如&ldquo;记录添加成功!&rdquo;等,用于显示在页面上)</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setActionMessage(String&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSessionAttribute(<span class="string">&quot;ccimp_message&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Message(Message.INFO,&nbsp;message));&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置处理结果信息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;message&nbsp;处理结果信息(如&ldquo;记录添加成功!&rdquo;等,用于显示在页面上)</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setActionMessage(Message&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSessionAttribute(<span class="string">&quot;ccimp_message&quot;</span><span>,&nbsp;message);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置处理结果错误信息</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;message&nbsp;处理结果错误信息(如&ldquo;记录添加失败:ID&nbsp;重复&rdquo;等,用于显示在页面上)</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setActionErrorMessage(String&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSessionAttribute(<span class="string">&quot;ccimp_message&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Message(Message.ERROR,&nbsp;message));&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置是否进行访问权限的检查。单元测试中应将其设置为false。</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;validation&nbsp;是否进行访问权限的检查</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setAccessValidation(</span><span class="keyword">boolean</span><span>&nbsp;validation)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHelper().setAccessValidation(validation);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setHelper(PageHelper&nbsp;h)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;helperContainer.set(h);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;PageHelper&nbsp;getHelper()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;(PageHelper)&nbsp;helperContainer.get();&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;执行请求</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;form&nbsp;表单</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;要跳转的&nbsp;forward&nbsp;名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Exception&nbsp;如果执行失败</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">abstract</span><span>&nbsp;String&nbsp;execute(ActionForm&nbsp;form)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;执行请求之前的预处理</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;preProcess()&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;给子类使用</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;校验参数</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;form&nbsp;表单</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Exception&nbsp;如果执行校验失败</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;validate(ActionForm&nbsp;form)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;给子类使用</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;写业务日志</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;action&nbsp;&nbsp;动作</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;object&nbsp;&nbsp;对象</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;message&nbsp;日志信息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;log(String&nbsp;action,&nbsp;String&nbsp;object,&nbsp;String&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHelper().writeLog(action,&nbsp;object,&nbsp;message);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;写业务日志</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;action&nbsp;&nbsp;动作</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;message&nbsp;日志信息</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;log(String&nbsp;action,&nbsp;String&nbsp;message)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(action,&nbsp;<span class="string">&quot;&quot;</span><span>,&nbsp;message);&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置&nbsp;session&nbsp;属性</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;&nbsp;属性名称</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;value&nbsp;属性值</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setSessionAttribute(String&nbsp;name,&nbsp;Object&nbsp;value)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRequest().getSession().setAttribute(name,&nbsp;value);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得&nbsp;session&nbsp;属性</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;属性名</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;属性值</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;Object&nbsp;getSessionAttribute(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;getRequest().getSession().getAttribute(name);&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得&nbsp;session&nbsp;属性,只取一次</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;name&nbsp;属性名</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;属性值</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span><span>&nbsp;Object&nbsp;getSessionAttributeOnce(String&nbsp;name)&nbsp;{&nbsp;&nbsp;</span></span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;value&nbsp;=&nbsp;getRequest().getSession().getAttribute(name);&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRequest().getSession().removeAttribute(name);&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;value;&nbsp;&nbsp;</span></span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
            <li class="alt"><span>&nbsp;&nbsp;</span></li>
            <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查当前用户是否拥有指定操作的权限</span>&nbsp;</span></li>
            <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span>&nbsp;</span></li>
            <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; 10 楼 xiaoxiaodi5834 2007-08-23   个人认为,你是想用一个通用的Action来替换每个Action,然后再通过这个Action来调用业务类。应该是想再做一层封装。

        刚好有用过一个这种框架的东西,即,将Action用一个EJB来实现,将所有的通用的东西放到这里面,来做事务控制。
        这个东西理论上是不错的,可是实际上却还是要再多一些配置文件来定义真正业务类的位置的东东。

        个人认为,这样子做的效果不是太好。不如直接用Struts2.0 11 楼 leeon 2007-08-24   xiaoxiaodi5834 写道个人认为,你是想用一个通用的Action来替换每个Action,然后再通过这个Action来调用业务类。应该是想再做一层封装。

        刚好有用过一个这种框架的东西,即,将Action用一个EJB来实现,将所有的通用的东西放到这里面,来做事务控制。
        这个东西理论上是不错的,可是实际上却还是要再多一些配置文件来定义真正业务类的位置的东东。

        个人认为,这样子做的效果不是太好。不如直接用Struts2.0


        这种框架我们以前做过,用一个通用的Action类,然后通过很多配置文件来描述
        具体的service类在什么地方,需要传入什么参数到service中,然后把这些参数
        一股脑扔到一个map中在传入service

        后来被用过的人一阵狂骂,现在还是回到写action类来,
        其实用struts2.0已经可以帮我减少很多麻烦事了,大家用下了都觉得效果不错 12 楼 ice123456 2007-09-06   我认为你还不如去看下DispatchAction
        这个类应该可以达到你想的哪种效果 13 楼 ice123456 2007-09-06   用法:struts.config.xml,定义一个parameter="action"
        你可以在你自己写的action里面继承DispatchAction这个类,然后直接写方法,跟继承action是一样的,不同的是方法名可以不一样
        你在前台调用的时候是admin.*?action=test
        这里就相当于调用你在action写的test方法

热点排行