我今天写的一段jsp,运行没有语法错误,
但是运行结果不是程序逻辑最终的结果,
我在servlet中执行了同样的代码段,运行出程序的正确结果来,
但是总不能所有HTML代码都用servlet打印出来,
不知道这种情况是什么原因导致的,请问大侠,并征求解决办法。

解决方案 »

  1.   

    你的jsp怎么写的,servlet有怎么写的
      

  2.   

    谢谢。
    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"));
    }
    }
    }
      

  3.   

    在jsp中你还引入javax.servlet.*,javax.servlet.http.*这些包干嘛呢?
      

  4.   

    ding ,没有其他原因吗,
    我代码看了好久了,
      

  5.   

    jsp代码看得都背下来了,,,
    用SERVLET做正常,有什么方法,使servlet开发界面也和JSP高效,
    HTML代码一行一行打印也太落后了,
      

  6.   

    jsp中捕捉一下异常,打印看有没有异常信息。
      

  7.   

    我从SERVLET复制过来的时候没有删除,
    跟这个没有关系,
      

  8.   

    只剩下Java代码还是错误,是不是运行环境的问题。
      

  9.   

    没有语法错误的话不见得就是真理
    楼主在jsp页面中,在每个关键的执行语句后面都把结果打印一下,这样查找起来也有个针对性
    另外,如8楼所说,捕捉异常
      

  10.   

    IndexSearcher searcher = new IndexSearcher("C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\search\\index1"); 
    这里出问题了!
    你在servlet不出问题,是因为他能找到这个东西!
    但是在jsp就不行,因为虽然jsp编译之后就是sevlet了,但是你要知道编译好之后的servlet不再webapps下而是work下的项文件下!
    但是直接写的servlet编译之后就再webapps的项目的classes的文件下!
      

  11.   

    听得不明白,我的项目是search,这个路径怎么写,
      

  12.   

    IndexSearcher searcher = new IndexSearcher("index1");
    把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,???
    这个路径好晕啊。
      

  13.   

    问题搞定了,感谢yiquanwen给的启发,改动地方太多,不知道是怎么弄好了,先睡觉了,好困啊,谢谢各位。
    但是对这个路劲还是晕晕的,不知道yiquanwen可否指点些资料,看你分析挺透彻的,谢谢了,明天奖分给你了。
      

  14.   

    这个只是经验!看看servlet的资料就好了!