﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-jfy3d(剑事)BLOG-随笔分类-webwork</title><link>http://www.blogjava.net/jfy3d/category/1267.html</link><description>&lt;!--&lt;a href=http://www.myjavaserver.com/~jfy3d/  target=_blank&gt;&lt;img src='http://www.blogjava.net/images/blogjava_net/jfy3d/1610/t_myphoto.jpg' border='0' width='55' height='68'&gt;&lt;/a&gt;--&gt;
&lt;!-- Start FastOnlineUsers.com --&gt;
&lt;a href="http://www.fastonlineusers.com"&gt;&lt;script type="text/javascript" src="http://fastonlineusers.com/on2.php?d=jfy3d.blogjava.net"&gt;&lt;/script&gt; online&lt;/a&gt;
&lt;!-- End FastOnlineUsers.com --&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:10:24 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:10:24 GMT</pubDate><ttl>60</ttl><item><title>WebWork中自定义result视图使用POI生成Excel</title><link>http://www.blogjava.net/jfy3d/archive/2006/04/11/40430.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Tue, 11 Apr 2006 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2006/04/11/40430.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/40430.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2006/04/11/40430.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/40430.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/40430.html</trackback:ping><description><![CDATA[
		<p>WebWork中除了默认支持的几中视图外还可以自己来定义需要的视图，如JFreeChart,Excel等<br /><br />这里生成Excel用的是POI的API<br />WebWork中定义ResultType视图类型只需要继承Result接口<br />代码如下<br /><br />package com.customer.resulttype;</p>
		<p>import com.opensymphony.xwork.Result;<br />import com.opensymphony.xwork.ActionInvocation;<br />import com.opensymphony.webwork.ServletActionContext;<br />import org.apache.poi.hssf.usermodel.HSSFWorkbook;</p>
		<p>import javax.servlet.http.HttpServletResponse;<br />import java.io.OutputStream;</p>
		<p>public class ExcelResult implements Result{<br />    private HSSFWorkbook workbook;<br />    private String filename;<br />    private String contenttype;<br />    public void execute(ActionInvocation invocation) throws Exception {<br />        if(contenttype==null)<br />            contenttype = "application/ms-excel";<br />        if (workbook==null)<br />            workbook = (HSSFWorkbook) invocation.getStack().findValue("workbook");<br />       </p>
		<p>        HttpServletResponse response = ServletActionContext.getResponse();<br />        response.setContentType(contenttype);<br />        response.setHeader("Content-Disposition","attachment;Filename="+filename+".xls");<br />        OutputStream os = response.getOutputStream();<br />        workbook.write(os);<br />        os.flush();<br />        os.close();<br />    }</p>
		<p>    public void setWorkbook(HSSFWorkbook workbook) {<br />        this.workbook = workbook;<br />    }</p>
		<p>    public void setFilename(String filename) {<br />        this.filename = filename;<br />    }</p>
		<p>    public void setContenttype(String contenttype) {<br />        this.contenttype = contenttype;<br />    }<br />}<br /><br />视图做完之后做如下配置运行测试<br /><br />package com.customer.action;</p>
		<p>import com.opensymphony.xwork.ActionContext;<br />import com.opensymphony.xwork.ActionSupport;<br />import com.opensymphony.webwork.ServletActionContext;<br />import com.dboperate.ResultGather;<br />import org.apache.poi.hssf.usermodel.*;<br />import org.apache.poi.hssf.util.HSSFColor;</p>
		<p>import java.io.FileOutputStream;<br />import java.io.InputStream;<br />import java.io.InputStreamReader;<br />import java.io.ByteArrayInputStream;<br />import java.util.List;<br />import java.util.Map;</p>
		<p>public class ExportExcelAction extends ActionSupport {<br />    private HSSFWorkbook workbook;</p>
		<p>    public String execute() throws Exception {<br />        return SUCCESS;<br />    }</p>
		<p>    public String product() throws Exception {<br />        try {<br />            workbook = new HSSFWorkbook();<br />            HSSFSheet sheet = workbook.createSheet();</p>
		<p>            workbook.setSheetName(0, "厂商产品", (short) 1);<br />            HSSFRow row = sheet.createRow((short) 0);</p>
		<p>            HSSFCell cell0 = row.createCell((short) 0);<br />            HSSFCell cell1 = row.createCell((short) 1);<br />            HSSFCell cell2 = row.createCell((short) 2);<br />            HSSFCell cell3 = row.createCell((short) 3);<br />            HSSFCell cell4 = row.createCell((short) 4);<br />            HSSFCell cell5 = row.createCell((short) 5);<br />            HSSFCell cell6 = row.createCell((short) 6);<br />            HSSFCell cell7 = row.createCell((short) 7);<br />            HSSFCell cell8 = row.createCell((short) 8);<br />            HSSFCell cell9 = row.createCell((short) 9);</p>
		<p>            cell0.setEncoding(HSSFCell.ENCODING_UTF_16);//这里是设置编码保证中文正常显示<br />            cell1.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell2.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell3.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell4.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell5.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell6.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell7.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell8.setEncoding(HSSFCell.ENCODING_UTF_16);<br />            cell9.setEncoding(HSSFCell.ENCODING_UTF_16);</p>
		<p>            cell0.setCellValue("厂商名");<br />            cell1.setCellValue("产品名");<br />            cell2.setCellValue("重量");<br />            cell3.setCellValue("星级");<br />            cell4.setCellValue("parama");<br />            cell5.setCellValue("paramb");<br />            cell6.setCellValue("paramc");<br />            cell7.setCellValue("paramd");<br />            cell8.setCellValue("状态");<br />            cell9.setCellValue("备注");<br /><br />        } catch (Exception e) {<br />        }<br />        return SUCCESS;<br />    }</p>
		<p>    public HSSFWorkbook getWorkbook() {<br />        return workbook;<br />    }</p>
		<p>
				<br />}<br /><br />Xwork.xml中配置加入<br /><br />        &lt;result-type default="true" name="freemarker"<br />            &lt;result-type name="excel" class="com.customer.resulttype.ExcelResult"/&gt;<br />        &lt;/result-types&gt;<br /><br /> &lt;action name="exportExcel" class="com.customer.action.ExportExcelAction"&gt;</p>
		<p>            &lt;result name="success" type="excel"&gt;<br />                &lt;param name="filename"&gt;productparam&gt;<br />                <br />            &lt;/result&gt;</p>
		<p>        &lt;/action&gt;</p>
<img src ="http://www.blogjava.net/jfy3d/aggbug/40430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2006-04-11 12:16 <a href="http://www.blogjava.net/jfy3d/archive/2006/04/11/40430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork+Freemarker较完整的GRUD数据库操作例子（简单方便使用同一个页面INSERT，UPDATE。并带分页功能）</title><link>http://www.blogjava.net/jfy3d/archive/2006/03/14/35191.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Tue, 14 Mar 2006 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2006/03/14/35191.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/35191.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2006/03/14/35191.html#Feedback</comments><slash:comments>132</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/35191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/35191.html</trackback:ping><description><![CDATA[
		<p>这个例子也是一直以来用webwork的足见形成的方式<br />虽然是简单例子，一些细节部分也做上去了<br /><br />以下是简单说明，详细可以参看源码<br /><br /><strong>VIEW<br /></strong>通常一个insert,update操作都可以通过一个页面来完成，<br />这里我设置form 的 action=""  这样他默认提交到的是当前URL。<br /><br /><strong>ACTION<br /></strong>在中定义几个方法,以user!insert.ww的方式访问，<br />这样grud操作就可以在一个ACTION中完成。<br />    public String insert() throws Exception {<br />        ....<br />    }</p>
		<p>    public String update() throws Exception {<br />        ....<br />    }</p>
		<p>    public String delete() throws Exception {<br />        ....<br />    }</p>
		<p>    public String list() throws Exception {<br />        ....<br />    }<br /><br /><strong>DAO</strong><br />下面是DAO接口<br />public interface BaseDao {<br />    public int insert(Object form);<br />    public int update(Object form);<br />    public int delete(Object form);<br />    public int delete(int[] id);//这里是为了支持批量删除<br />    public Map getInfo(Object form);<br />    public List getList();<br />    public void getList(Pagination page);//<font color="#0000ff">这里没有返回值，内详。。。。<br /></font>}</p>
		<p>
				<strong>EXTENDS<br /></strong>扩展部分<br />1 BaseAction<br />这里增加了一些公用方便的功能，便于其他ACTION继承，共用<br />2 DaoSupport<br />这里也是一些公用的功能，Dao中用的大部分SQL都是配置在外部配置文件中<br /><br /><br />3DaoFactory <br />public class DaoFactory {<br />    public static BaseDao getDao(String daoKey){<br />        if("user".equals(daoKey)) //这样的方式可以通过在XWORK.XML中配置ACTION使用哪个DAO（静态注入）<br />            return new UserDao();<br />        else<br />            return null;</p>
		<p>    }<br />}<br /><br /><br />数据库是MYSQL5<br /><br /><font color="#9acd32">CREATE TABLE `usertbl` (                                                                                                                                                                                                                                                                                                                 <br />           `User_ID` int(11) NOT NULL auto_increment,                                                                                                                                                                                                                                                                                             <br />           `username` varchar(50) default NULL,                                                                                                                                                                                                                                                                                                   <br />           `password` varchar(50) default NULL,                                                                                                                                                                                                                                                                                                   <br />           `truename` varchar(50) default NULL,                                                                                                                                                                                                                                                                                                   <br />           `usersex` tinyint(4) default NULL,                                                                                                                                                                                                                                                                                                     <br />           `useremail` varchar(50) default NULL,                                                                                                                                                                                                                                                                                                  <br />           PRIMARY KEY  (`User_ID`)                                                                                                                                                                                                                                                                                                               <br />         )</font><br /><br />源码下载地址<br /><font color="#800080"><a href="http://www.migti.com/download.ww">http://www.migti.com/download.ww</a></font></p>
<img src ="http://www.blogjava.net/jfy3d/aggbug/35191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2006-03-14 10:52 <a href="http://www.blogjava.net/jfy3d/archive/2006/03/14/35191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决WEBWORK2.17中空文件上传时action报异常错误的问题</title><link>http://www.blogjava.net/jfy3d/archive/2006/02/20/31595.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Mon, 20 Feb 2006 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2006/02/20/31595.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/31595.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2006/02/20/31595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/31595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/31595.html</trackback:ping><description><![CDATA[<P>webwork里上传文件比较方便，几行代码就可以完成。<BR>只是有个小问题，就是当form里的file控件没有选文件的时提交action <BR>就会出现异常,通常很多应用中不一定非要带文件上传的，这个应该<BR>算webwork一个bug吧。<BR><BR>从报错的地方可以查出是在fileupload拦截器中<BR>String[] fileName = multiWrapper.getFileNames(inputName);<BR>这一行开始中断掉的<BR>就是multiWrapper.getFileNames(inputName);中出现空指针错误<BR><BR>如果webwork.properties中配置的是pell上传包<BR>需要找到PellMultiPartRequest这个类的以下方法<BR>//--------------------------------------------------------------------------------------<BR>public String[] getFileNames(String fieldName) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO - not sure about this - is this the filename of the actual file or<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO - the uploaded filename as provided by the browser?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO - Not sure what version of Pell this class uses as it doesn't seem to be the latest&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里倒是说明了条件，就是不知道为什么还这么做<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new String[]{multi.getFile(fieldName).getName()};<BR>}<BR>---------------------------------------------------------------------------------------//<BR><BR><BR><BR>可以看到<BR>multi.getFile(fieldName).getName()如果文件为空肯定会报错的 <BR>可以先修改成以下方式<BR>//---------------------------------------------------------------------------------------<BR>public String[] getFileNames(String fieldName) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(multi.getFile(fieldName)!=null)&nbsp;&nbsp; //多加一个判断<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new String[]{multi.getFile(fieldName).getName()};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new String[]{};<BR>&nbsp;&nbsp;&nbsp; }<BR>----------------------------------------------------------------------------------------//<BR>这样form里file不选文件就不在出异常了<BR>用cos上传处理方法一样<BR><BR><BR><BR>除上面方法<BR>还修改fileupload拦截器也可以解决<BR>String[] fileName = multiWrapper.getFileNames(inputName);<BR>找到这行<BR>然后修改成下面样子<BR>//-----------------------------------------------------------------------------------<BR>String[] fileName =null;<BR><BR>try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName = multiWrapper.getFileNames(inputName);<BR>}catch(Exception ex){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//file is null<BR>}<BR>-----------------------------------------------------------------------------------//</P><img src ="http://www.blogjava.net/jfy3d/aggbug/31595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2006-02-20 10:15 <a href="http://www.blogjava.net/jfy3d/archive/2006/02/20/31595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring + hibernate + webwork + freemarker 整合配置</title><link>http://www.blogjava.net/jfy3d/archive/2005/11/06/18507.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Sun, 06 Nov 2005 15:48:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/11/06/18507.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/18507.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/11/06/18507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/18507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/18507.html</trackback:ping><description><![CDATA[<DIV class=postText>
<P>学习的时候看了网上的一些配置教程，没有达到想要的结果<BR>查了好多资料才弄出来，随后后自己整理出一个配置方法<BR><BR>web.xml&nbsp; <BR>// 这里不需要配置字符过滤，网上有的例子加了，实际上<BR>webwork.properties里设置如下就可以了页面也是GBK<BR>webwork.locale=zh_CN<BR>webwork.i18n.encoding=GBK<BR>－－－－－－－－－－－－－－－－－－－－－－－－－－－<BR>&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<A href="http://java.sun.com/dtd/web-app_2_3.dtd"><FONT color=#000080>http://java.sun.com/dtd/web-app_2_3.dtd</FONT></A>"&gt;<BR>&lt;web-app&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;context-param&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;/WEB-INF/classes/applicationContext.xml&lt;/param-value&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/context-param&gt;<BR><BR>&nbsp;&lt;listener&gt;<BR>&nbsp;&nbsp;&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<BR>&nbsp;&lt;/listener&gt;</P>
<P>&nbsp;&lt;listener&gt;<BR>&nbsp;&nbsp;&lt;listener-class&gt;com.atlassian.xwork.ext.ResolverSetupServletContextListener&lt;/listener-class&gt;<BR>&nbsp;&lt;/listener&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!--<BR>&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;context&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.opensymphony.webwork.dispatcher.ServletDispatcher&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;</P>
<P>&nbsp;&lt;servlet&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;freemarker&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;servlet-class&gt;com.opensymphony.webwork.views.freemarker.FreemarkerServlet&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&lt;load-on-startup&gt;10&lt;/load-on-startup&gt;<BR>&nbsp;&lt;/servlet&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;</P>
<P>&nbsp;&lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;freemarker&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;url-pattern&gt;*.ftl&lt;/url-pattern&gt;<BR>&nbsp;&lt;/servlet-mapping&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;welcome-file-list&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/welcome-file-list&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;taglib&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;taglib-location&gt;/WEB-INF/webwork.tld&lt;/taglib-location&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/taglib&gt;</P>
<P>&lt;/web-app&gt;<BR><BR>－－－－－－－－－－－－－－－－－－－－－－－－－－－<BR><BR>xwork.xml<BR><BR>==================---------------------------------------------<BR>&lt;?xml version="1.0"?&gt;<BR>&lt;!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "<A href="http://www.opensymphony.com/xwork/xwork-1.0.dtd"><FONT color=#000080>http://www.opensymphony.com/xwork/xwork-1.0.dtd</FONT></A>"&gt;</P>
<P>&lt;xwork&gt;</P>
<P>&nbsp;&nbsp;&lt;include file="webwork-default.xml"/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;package name="users" extends="webwork-default"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver"&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptors&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor-stack name="myDefaultWebStack"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="defaultStack"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="reference-resolver"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="model-driven"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="params"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/interceptor-stack&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/interceptors&gt;<BR><BR>&lt;default-interceptor-ref name="myDefaultWebStack"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action name="blogUser" class="com.jsblog.action.BlogUserAction"&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;external-ref name="baseDao"&gt;baseDaoTarget&lt;/external-ref&gt;&nbsp;&nbsp;&nbsp;&nbsp; //这里是把applicationContext里配置的DAO 注入action里 action里要有baseDao属性<BR>&nbsp;&nbsp;&nbsp;&lt;result name="success"&gt;/add.htm&lt;/result&gt;<BR>&nbsp;&nbsp;&lt;/action&gt;<BR>-------------------------------------------------------------------------<BR><BR>applicationContext.xml<BR><BR>---------------------------------------------------------------------------<BR>&lt;?xml version="1.0"?&gt;<BR>&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<A href="http://www.springframework.org/dtd/spring-beans.dtd"><FONT color=#000080>http://www.springframework.org/dtd/spring-beans.dtd</FONT></A>"&gt;<BR>&lt;beans default-autowire="no" default-dependency-check="none" default-lazy-init="false"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="driverClassName"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="url"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsblog;SelectMethod=cursor&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="username"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;sa&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jfy&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;bean id="sessionFactory"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.orm.hibernate.LocalSessionFactoryBean"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dataSource"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="dataSource"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="mappingResources"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;com/jsblog/BlogUserForm.hbm.xml&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/list&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernateProperties"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;props&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.dialect"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.sf.hibernate.dialect.SQLServerDialect<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/prop&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/props&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;bean id="transactionManager"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.orm.hibernate.HibernateTransactionManager"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="sessionFactory"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="sessionFactory"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</P>
<P><BR>&nbsp;&nbsp;&nbsp; &lt;bean id="baseDaoTarget" class="com.jsblog.dao.BlogUserDao"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="sessionFactory"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="sessionFactory"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</P>
<P><BR>&lt;/beans&gt;<BR>---------------------------------------------------------------------------<BR><BR>BlogUserDao.java<BR>---------------------------------------------------------------------------<BR>package com.jsblog.dao;</P>
<P>import org.springframework.orm.hibernate.support.HibernateDaoSupport;<BR>import org.springframework.orm.hibernate.HibernateCallback;<BR>import org.springframework.orm.hibernate.SessionFactoryUtils;<BR>import com.jsblog.BlogUserForm;</P>
<P>import java.io.Serializable;<BR>import java.util.List;</P>
<P>import net.sf.hibernate.HibernateException;<BR>import net.sf.hibernate.Session;</P>
<P>public class BlogUserDao extends HibernateDaoSupport implements BaseDao {</P>
<P>&nbsp;&nbsp;&nbsp; public void insert(BlogUserForm bloguser) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getHibernateTemplate().save(bloguser);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>}</P></DIV><img src ="http://www.blogjava.net/jfy3d/aggbug/18507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-11-06 23:48 <a href="http://www.blogjava.net/jfy3d/archive/2005/11/06/18507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>个人觉得一个不错的架构组合FreeMarker+webwork+hibernate+Spring</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/18/4464.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 18 May 2005 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/18/4464.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4464.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/18/4464.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4464.html</trackback:ping><description><![CDATA[<P>FreeMarker代替jsp作为view使用<BR>原因是FreeMarker，java 的模板引擎，比jsp好的地方简单的说速度快，语法简单（因为view里不需要有什么复杂操作），当然的模板引擎还有别的如Velocity，只是比FreeMarker功能逊色点<BR>FreeMarker中文资料不大多，不过网上已经有人写了一些教程<BR><BR>为什么使用webwork呢<BR>----<BR><SPAN class=style7><FONT face=宋体 size=2>WebWork是由OpenSymphony组织开发的，致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1，现在的WebWork2.x前身是Rickard Oberg开发的WebWork，但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大，它是一个标准的Command模式实现，并且完全从web层脱离出来。 Xwork提供了很多核心功能：前端拦截机（interceptor），运行时表单属性验证，类型转换，强大的表达式语言（OGNL – the Object Graph Notation Language），IoC（Inversion of Control倒置控制）容器等。 WebWork2建立在Xwork之上，处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session（会话）application（应用程序）范围的映射，request请求参数映射。WebWork2支持多视图表示，视图部分可以使用JSP, Velocity, FreeMarker, JasperReports，XML等。<BR></FONT></SPAN>------<BR>webwork在设计上优于目前常用的struts,jsf。<BR>个人经验用过struts,webwork作东西候觉得webwork又明显的优势<BR>Tapestry框架很不错不过资料少，学习难度高<BR><A href="http://www.zahui.com/html/6/36141.htm">http://www.zahui.com/html/6/36141.htm</A>这个是网上的相关比较仅供参考<BR>关于框架比较网上文章也比较多<BR><BR>至于使用hibernate，Spring优点多多，大家都在学，评价都不错自然是好东西</P><img src ="http://www.blogjava.net/jfy3d/aggbug/4464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-18 11:08 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/18/4464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork2在weblogic下和tomcat下的中文问题解决</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/18/4176.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 18 May 2005 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/18/4176.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4176.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/18/4176.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4176.html</trackback:ping><description><![CDATA[研究了几天webwork2我的习惯首先关注中文问题解决<BR><BR>中文这方面webwork2比struts更容易解决&nbsp; 不用设置fitler过滤了不错<BR>当然webwork比strust的优势不只是这些<BR><BR>&nbsp;jsp里都设置gb2312就可以第一<BR><BR>&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Untitled Document&lt;/title&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR><BR>有人说不能加，加了反而乱码，我就没问题第二<BR><BR>在webwork.properties里加上webwork.locale=zh_CNwebwork.i18n.encoding = GB2312<BR><BR>上面做完之后就OK了 页面传值，数据库插入读出都OK了<BR><BR>不过还有需要解决的地方 用过struts的都知道&lt;bean:message&gt;是乱码的webwork也一样，当然这是java程序读文本文件里的中文就是乱码的 解决方法我以前知道的是用native2ascii来转换资源文件，不过转后在编辑就不认识了，修改依次转依次麻烦啊所以我还是选择修改webwork textTag的源码 ，很简单的<BR><BR>找到TextTag.java 然后找到下面这段<BR><BR>if(msg != null)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = new String(msg.getBytes("iso-8859-1"));//加入这行就OK了，这样会影响到国际化，（可以判断如果不是zh_CN就不执行转码，我还没试过）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(getId() == null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageContext.getOut().write(msg);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack.getContext().put(getId(), msg);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch(IOException e)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new JspException(e);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>}<BR><BR>struts里也可以这么做的<BR><BR>这样就不用在对资源文件进行native2ascii了<BR><BR>第三<BR><BR>还有会乱码的地方就是fileupload&nbsp; 上传中文名的文件会遇到文件名乱码问题<BR><BR>解决方法试在webwork.properties设置一下<BR><BR>webwork.multipart.parser=pell&nbsp;&nbsp;&nbsp; //不要用cos<BR><BR>tomcat下中文解决方式和上面相同，不过还需要多加一个URIEncoding="GBK"<BR>位置在server.xml里解决url里有中文出现的乱码<BR>&nbsp;&nbsp;&nbsp; &lt;Connector className="org.apache.coyote.tomcat4.CoyoteConnector"<BR>port="80"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minProcessors="5" maxProcessors="75"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="true" redirectPort="8443"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acceptCount="100" debug="0" connectionTimeout="20000"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useURIValidationHack="false" disableUploadTimeout="true" URIEncoding="GBK"/&gt;<BR><BR>OK 目前我遇到的就这些了<BR><img src ="http://www.blogjava.net/jfy3d/aggbug/4176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-18 09:24 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/18/4176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在webwork2的action里取request.getParameter参数</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/12/4183.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 11 May 2005 16:12:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/12/4183.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4183.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/12/4183.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4183.html</trackback:ping><description><![CDATA[<P>webwork的action已经脱离的request，是用getXxx()来取提交过来的参数<BR>如果在写程序的时候特定需要自己来取Parameter可以通过以下两种方法实现</P>
<P>第一种用ActionContext类，所有的参数都从这里ActionContext.getContext().getParameters()取<BR>他返回的是一个Map类型<BR>Map param= ActionContext.getContext().getParameters();<BR>如果有一个提交过来的username<BR>那就可以这样写<BR>param.get("username");不过这里要注意一下param.get("username")是一个String数组(为什么要返回数据我也不知道，我从weblogic窗口看到param.get("username")被out出来Ljava.lang.String，忙活了半天)</P>
<P>&nbsp; String value[] = (String[])param.get("username");<BR>&nbsp; String username = "";<BR>&nbsp; for(int i=0;i&lt;value.length;i++)<BR>&nbsp; {<BR>&nbsp; &nbsp;username +=value[i];<BR>&nbsp; }<BR>这样就可以得到正确的username了</P>
<P>第二种方法是直接把request引用进来</P>
<P>ServletActionContext.getRequest().getParameter("username")<BR>ServletActionContext.getRequest()就是httpservletrequest<BR>这个类再import com.opensymphony.webwork.ServletActionContext<BR>用起来方便些</P><img src ="http://www.blogjava.net/jfy3d/aggbug/4183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-12 00:12 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/12/4183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork2+FreeMarker 制作数据列表显示简单实例</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/11/4174.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 11 May 2005 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/11/4174.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4174.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/11/4174.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4174.html</trackback:ping><description><![CDATA[<DIV class=postText>
<P>刚刚接触了FreeMarker觉得不错</P>
<P>做了个小例子<BR>刚刚接触了FreeMarker觉得不错做了个小例子,没有用到jsp和jsptag </P>
<P>首先建立个数据表里面有username,password两个字段自己随便加几条数据<BR>建立一个webwork&nbsp; action&nbsp;&nbsp;&nbsp; TestAction.java<BR>在xwork.xml里加入如下内容<BR>----------------------------------------<BR>&nbsp;&nbsp; &nbsp;&nbsp;<ACTION class=com.action.TestAction name="test"><BR>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<RESULT name="success" type="freemarker">/test.flt</RESULT><BR>&nbsp; &nbsp;&nbsp;</ACTION> <BR>----------------------------------------<BR>TestAction.java代码如下<BR>--------------------------------------------------<BR>package com.action;</P>
<P>import com.opensymphony.xwork.ActionSupport;<BR>import java.util.*;<BR>import com.ResultGather;</P>
<P>public class TestAction extends ActionSupport <BR>{<BR>&nbsp;private List lis;<BR>&nbsp;private ResultGather rs;<BR>&nbsp;public List getLis()<BR>&nbsp;{<BR>&nbsp;&nbsp;return this.lis;<BR>&nbsp;}<BR>&nbsp;public String execute() throws Exception <BR>&nbsp;{<BR>&nbsp;&nbsp;rs = new ResultGather();<BR>&nbsp;&nbsp;lis = rs.selectRS("select * from userbasedatum");//数据结果我是用List,HashMap封装的,HashMap存的是单条记录<BR>&nbsp;&nbsp;return SUCCESS;<BR>&nbsp;}<BR>}</P>
<P>-------------------------------------------------------------------------------------------------------------------<BR>ResultGather.java代码如下<BR>----------------------------------------------------------<BR>package com;</P>
<P>import conn.DBConnManager;//数据库连接池<BR>import java.sql.*;<BR>import java.util.*;</P>
<P>public class ResultGather <BR>{<BR>&nbsp;private String sql;<BR>&nbsp;public ResultGather()<BR>&nbsp;{&nbsp;<BR>&nbsp;}<BR>&nbsp;public ResultGather(String sqlcom)<BR>&nbsp;{<BR>&nbsp;&nbsp;this.sql=sqlcom;<BR>&nbsp;}<BR>&nbsp;public List selectRS(String sqlStr)<BR>&nbsp;{<BR>&nbsp;&nbsp;this.sql = sqlStr;<BR>&nbsp;&nbsp;return selectRS(); <BR>&nbsp;}<BR>&nbsp;public List selectRS() //数据结果在这里装入List和Map<BR>&nbsp;{<BR>&nbsp;&nbsp;List rsall = new ArrayList();<BR>&nbsp;&nbsp;DBConnManager conn = null;<BR>&nbsp;&nbsp;Connection&nbsp; con = null;<BR>&nbsp;&nbsp;Statement stmt = null;<BR>&nbsp;&nbsp;ResultSet rs = null;<BR>&nbsp;&nbsp;Map rsTree;<BR>&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;conn = DBConnManager.getInstance();<BR>&nbsp;&nbsp;&nbsp;con = conn.getConnection("mssql");<BR>&nbsp;&nbsp;&nbsp;stmt = con.createStatement();<BR>&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery(sql);<BR>&nbsp;&nbsp;&nbsp;ResultSetMetaData rsmd = rs.getMetaData();<BR>&nbsp;&nbsp;&nbsp;int numberOfColumns = rsmd.getColumnCount();<BR>&nbsp;&nbsp;&nbsp;while(rs.next())<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;rsTree = new HashMap(numberOfColumns);<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int r=1;r<NUMBEROFCOLUMNS+1;R++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsTree.put(rsmd.getColumnName(r),rs.getObject(r));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;rsall.add(rsTree);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}catch(java.lang.Exception ex){<BR>&nbsp;&nbsp;&nbsp;ex.printStackTrace();<BR>&nbsp;&nbsp;}finally{<BR>&nbsp;&nbsp;&nbsp;try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(rs!=null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(stmt!=null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(conn!=null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.releaseConnection("mssql",con);<BR>&nbsp;&nbsp;&nbsp;}catch(Exception e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e);<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return rsall;<BR>&nbsp;}<BR>&nbsp;}<BR>-----------------------------------------------------------------------------------------------<BR>test.flt代码如下<BR>-----------------------------------------------------------------------------------------<BR>&lt;#list lis as x&gt;<BR>${x.username},<BR>${x.password}<BR><BR>&lt;/#list&gt;<BR></#LIST>&nbsp;&nbsp;&nbsp;&nbsp; //freemarker用法网上有相关介绍<BR>-------------------------------------------------------------------------------------</P>
<P>OK 完成了 没有用到jsp<%.....%>和jsptag<BR>用这个例子做一点修改就可以具有分页用能了</P></DIV><img src ="http://www.blogjava.net/jfy3d/aggbug/4174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-11 15:41 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/11/4174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>