好了 现在开始我们最后的工作,实现最开始的两个DAO。
package cn.com.sitefromscrath.dao; import net.csdn.blog.deltatang.lucene4me.LuceneTool; public class LuceneDAOImpl implements LuceneDAO { private LuceneTool luceneTool; public LuceneDAOImpl(LuceneTool luceneTool) { super(); this.luceneTool = luceneTool; } @SuppressWarnings("static-access") @Override public int[] findDocIDs(String keywords) { return luceneTool.findDocIDs(keywords); } }
package cn.com.sitefromscrath.dao; import java.util.ArrayList; import java.util.List; import net.csdn.blog.deltatang.hibernate4me.Document; import net.csdn.blog.deltatang.hibernate4me.SqlEngine; import net.csdn.blog.deltatang.hibernate4me.SqliteDB; public class MysqlDAOImpl implements MysqlDAO { private SqliteDB sqlEngine; public MysqlDAOImpl(SqliteDB sqlEngine) { super(); this.sqlEngine = sqlEngine; sqlEngine.test(); //作为数据库初始化 当然 这样 big MUD BALL~~~! } @Override public List<Document> getResultsByDocIDs(int[] idlist) { List<Document> result = new ArrayList<Document>(idlist.length); Class clazz = Document.class; for(int id : idlist) { result.add((Document)sqlEngine.load(id, clazz)); } return result; } }
在我们的xml中装配他们:
<beans > <bean id="searchService" class="cn.com.sitefromscrath.service.SearchServiceInRealBiz"> <constructor-arg index="1" ref="luceneDAO" /> <constructor-arg index="2" ref="mysqlDAO" /> </bean> <bean id="luceneDAO" class="cn.com.sitefromscrath.dao.LuceneDAOImpl" > <constructor-arg index="1" ref="luceneTool" /> </bean> <bean id="mysqlDAO" class="cn.com.sitefromscrath.dao.MysqlDAOImpl" > <constructor-arg index="1" ref="sqlEngine" /> </bean> <bean id="luceneTool" class="net.csdn.blog.deltatang.lucene4me.LuceneTool" /> <bean id="sqlEngine" class="net.csdn.blog.deltatang.hibernate4me.SqliteDB" /> <bean id="/mvc/search" view="/net/csdn/blog/deltatang/mvc4me/search.template.jsp" class="net.csdn.blog.deltatang.mvc4me.SearchCtrol"/> </beans>
DADADA。。。似乎万事大吉了:)
tomcat跑一把试试。。。问题粗线了。首先是乱码问题:
加上一个过滤器:
package net.csdn.blog.deltatang.mvc4me; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String encoding = selectEncoding(request); request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); } protected String selectEncoding(ServletRequest request) { String enc = this.encoding == null ? null : this.encoding.trim(); return enc == null ? "utf-8" : enc; } }
对应的xml配置:
<filter> <filter-name>EncodingFilter</filter-name> <filter-class>net.csdn.blog.deltatang.mvc4me.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其次是修改
StringToObjectBuilder
中的写入文件方法。还记得吗,我们自己实现了jsp,但是并没有支持:
<%@ page pageEncoding="UTF-8"%>
标签哦:)
所以我们要确保编译输出的文件也是utf-8格式:
public Object build(String source, String classPath, ClassLoader classLoader) { //替换这里 // new FileWriter(sourceFile).append(source).close(); OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(sourceFile), "UTF-8"); out.write(source); out.flush(); out.close();
继续RUN。问题又来了:
Unable to load sqlite_jni: java.lang.UnsatisfiedLinkError: no sqlite_jni in java.library.path java.sql.SQLException: java.lang.UnsatisfiedLinkError: internal_init
原因是:sqlite_jni.dll文件没有拷到 java.library.path中;简单的做法是:把这个文件copy到tomcat的bin目录下。
OK,在尝试一下:
搞定~~~~!
这个系列就此告一段落。
完整代码下载看这里:
下载地址 http://download.csdn.net/detail/deltatang/7717065