我今天写的一段jsp,运行没有语法错误,
但是运行结果不是程序逻辑最终的结果,
我在servlet中执行了同样的代码段,运行出程序的正确结果来,
但是总不能所有HTML代码都用servlet打印出来,
不知道这种情况是什么原因导致的,请问大侠,并征求解决办法。
但是运行结果不是程序逻辑最终的结果,
我在servlet中执行了同样的代码段,运行出程序的正确结果来,
但是总不能所有HTML代码都用servlet打印出来,
不知道这种情况是什么原因导致的,请问大侠,并征求解决办法。
jsp 在tomcat解释下,没有语法错误,就是检索不到数据,len = 0
servlet中的代码和JSP中的相关代码是一样的,能够检索到数据。len != 0
代码如下:
jsp<%@ page import = "javax.servlet.*,javax.servlet.http.*,java.io.*,org.apache.lucene.analysis.*, org.apache.lucene.analysis.Analyzer,
org.apache.lucene.document.Document,
org.mira.lucene.analysis.IK_CAnalyzer,org.apache.lucene.index.IndexReader,org.apache.lucene.search.IndexSearcher,org.apache.lucene.queryParser.*, java.net.URLEncoder,
org.apache.lucene.search.Query,org.apache.lucene.search.Hits,java.util.Date"%>
<% String keywords = request.getParameter("keywords");
Analyzer analyzer = new IK_CAnalyzer();
IndexSearcher searcher = new IndexSearcher("C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\search\\index1");
QueryParser parser = new QueryParser("title", analyzer);
MultiFieldQueryParser mParser = new MultiFieldQueryParser(new String[]{"title","site"},analyzer);
Query query = mParser.parse("photoshop");
Date start = new Date();
Hits hits = searcher.search(query);
Date end = new Date();
int len = hits.length();
%>JAVA SERVLETimport javax.servlet.http.HttpServlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.document.*;
import org.mira.lucene.analysis.*;
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.*;import java.util.*;public class SearchServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String keywords = request.getParameter("keywords");
Analyzer analyzer = new IK_CAnalyzer();
IndexSearcher searcher = new IndexSearcher("C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\search\\index1");
QueryParser parser = new QueryParser("title", analyzer);
MultiFieldQueryParser mParser = new MultiFieldQueryParser(new String[]{"title","site"},analyzer);
Query query = null;
try {
query = mParser.parse("裤袜");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date start = new Date();
Hits hits = searcher.search(query);
Date end = new Date();
int len = hits.length();
PrintWriter out = response.getWriter();
out.print("记录 " + len +"条");
for (int i = 0; i < len; i++)
{
Document doc = hits.doc(i);
out.print(doc.get("title"));
}
}
}
我代码看了好久了,
用SERVLET做正常,有什么方法,使servlet开发界面也和JSP高效,
HTML代码一行一行打印也太落后了,
跟这个没有关系,
楼主在jsp页面中,在每个关键的执行语句后面都把结果打印一下,这样查找起来也有个针对性
另外,如8楼所说,捕捉异常
这里出问题了!
你在servlet不出问题,是因为他能找到这个东西!
但是在jsp就不行,因为虽然jsp编译之后就是sevlet了,但是你要知道编译好之后的servlet不再webapps下而是work下的项文件下!
但是直接写的servlet编译之后就再webapps的项目的classes的文件下!
把index1拷贝到work下的项目下跟对应的servlet文件一个文件夹下面,
但是程序出现 不能找到 C:\Program Files\Apache Software Foundation\Tomcat 6.0\index1,
路径应该是C:\Program Files\Apache Software Foundation\Tomcat 6.0\work\Catalina\localhost\search\org\apache\jsp\index1,???
这个路径好晕啊。
但是对这个路劲还是晕晕的,不知道yiquanwen可否指点些资料,看你分析挺透彻的,谢谢了,明天奖分给你了。