好了 现在开始我们最后的工作,实现最开始的两个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