2016-02-27 53 views
-1

我有一個名爲SearchBoxNew.jsp JSP頁面,我的web.xml的歡迎,文件標籤下添加JSP Servlet的組合

本頁面基本上具有這樣當我輸入一些東西並回車我會打電話給另外一個搜索框小服務程序「SolrServlet1.java」,這基本上查詢一些文件存儲和響應對象添加到一個HTTPRequest,並使用重定向到SearchBoxNew.jsp「dispatcher.forward(請求,響應);」

但不幸的是,當我輸入文字,然後按回車就告訴我HTTP 狀態404 - /SearchBoxcComp/SearchBox.jsp

,網址爲這樣http://localhost:8080/SearchBoxcComp/hello其中/ Hello是一個網址爲servlet進行映射。

這裏是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
    <display-name>SearchBoxcComp</display-name> 
    <welcome-file-list> 
    <welcome-file>SearchBoxNew.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <servlet-name>SolrServlet1</servlet-name> 
    <servlet-class>Servlets.SolrServlet1</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>SolrServlet1</servlet-name> 
    <url-pattern>/hello</url-pattern> 
    </servlet-mapping> 

    <servlet> 
    <servlet-name>SearchBoxNew</servlet-name> 
    <jsp-file>/SearchBoxNew.jsp</jsp-file> 
    </servlet> 

    <servlet-mapping> 
<servlet-name>SearchBoxNew</servlet-name> 
<url-pattern>/SearchBoxNew</url-pattern> 
</servlet-mapping> 


</web-app> 

有人能告訴我什麼,我丟失或在搜索頁面再次按下進入後我怎樣才能降落?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ page import ="org.apache.solr.common.*" %> 
<%@ page import = "java.util.*" %> 
<%@ page import = "org.apache.solr.client.solrj.response.*" %> 
<%@ page import="org.apache.solr.client.solrj.response.FacetField.Count" %> 
<%@ page import = "java.util.List" %> 
<%@ page import = "com.google.gson.*" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<body> 
<h1>Search Component</h1> 

     <div> 
      <form id="formsearch" name="formsearch" method="post" action="/SearchBoxcComp/hello"> 
      <span><input name="searchWord" class="editbox_search" id="editbox_search" maxlength="120" value="" type="text" style="width:180px; height:20px"/></span> 
      <input name="button_search" value="search" type="submit" name="submit"/> 
      <div class="clr"></div> 
      <%! public QueryResponse QryRspnsMain; %> 
      <% 
      if(request.getParameter("submit") != null){ 
      //String paramValue = request.getAttribute("SearchResult"); 
      //System.out.println(paramValue); 
      //out.println("<tr><td>" + paramValue + "</td></tr>"); 
      QueryResponse QryRspnsMain = (QueryResponse)request.getAttribute("SearchResult"); 
      Gson gson= new Gson(); 
      SolrDocumentList results = QryRspnsMain.getResults(); 
      // Get the Json Object 
      //*************String Jresponse= gson.toJson(results); 

      Iterator<SolrDocument> litr = results.iterator(); 
      String res = gson.toJson(results); 
       for (int i = 0; i < results.size(); ++i) { 
        out.print("<li>" + res); 
       } 
      } 
      %> 


      <% 
      if(request.getParameter("submit") != null){ 
       QueryResponse QryRspnsMain = (QueryResponse)request.getAttribute("SearchResult"); 
       Gson gson= new Gson(); 
       SolrDocumentList results = QryRspnsMain.getResults(); 
       List<FacetField> facetList = QryRspnsMain.getFacetFields(); 
       Iterator<FacetField> itr = facetList.iterator(); 
       while(itr.hasNext()) { 
        FacetField facetField = itr.next(); 
        List<Count> facvalue = facetField.getValues(); 
        for(int i=0; i<facvalue.size(); i++){ 
         System.out.println(facvalue.get(i)); 
         out.print("<li><a href= \"/SearchBoxcComp/facetServlet?facetFiled=\"" + facvalue.get(i) + "&catlevel=" + facetField.getName()); 
         } 
       } 
      } 
      %> 
       </form> 
     </div> 

</body> 
</body> 
</html> 

的Servlet:

package Servlets; 

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.solr.client.solrj.SolrQuery; 
import org.apache.solr.client.solrj.SolrServerException; 
import org.apache.solr.client.solrj.impl.HttpSolrServer; 
import org.apache.solr.client.solrj.impl.XMLResponseParser; 
import org.apache.solr.client.solrj.response.QueryResponse; 
import org.apache.solr.common.SolrDocumentList; 

/** 
* 
*/ 



/** 
* Servlet implementation class SolrServlet 
*/ 

public class SolrServlet1 extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public SolrServlet1() { 
     super(); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String searchWord = request.getParameter("searchWord"); 
     RequestDispatcher dispatcher = getServletConfig () .getServletContext().getRequestDispatcher("/SearchBox.jsp"); 
     //if(searchWord == "" || searchWord == null){ 
     try { 
      QueryResponse SearchResult = searchQuery(searchWord); 
      //String SearchResult = "Avinash Upadhya is Here"; 
      request.setAttribute("SearchResult", SearchResult); 
      dispatcher.forward(request, response); 
     } catch (SolrServerException e) { 
      e.printStackTrace(); 
     } 

    } 

    private static QueryResponse searchQuery(String search) throws SolrServerException{ 
     HttpSolrServer server =new HttpSolrServer("http://localhost:8983/solr"); 
     server.setParser(new XMLResponseParser()); 
     SolrQuery query = new SolrQuery(); 
     query.setQuery("*:*"); 
     query.setFacet(true); 
     query.setFacetMinCount(1); 
     query.addFacetField("manu"); 
     query.setStart(0); 
     //String SolrQuery; 
     if(search != ""){ 
      query.addFilterQuery("name:" + search + "OR description: " + search); 

     } 
      QueryResponse response = server.query(query); 
      //SolrDocumentList results = response.getResults(); 

      return response; 

    } 

} 
+0

嘗試發佈的servlet – Abdelhak

+0

份額我加入了JSP代碼,在這裏你的JSP文件 –

+0

的snnipt – AVINASH

回答

0

如果你想控制轉發給您的SearchBoxNew.jsp,那麼你應該在正確的getRequestDispatcher的方法,將其命名爲

// get dispatcher to jsp 
RequestDispatcher dispatcher = getServletConfig() 
       .getServletContext() 
       .getRequestDispatcher("/SearchBoxNew.jsp"); 

更換SearchBox.jspSearchBoxNew.jsp在servlet的方法,剩下的應該很好地工作。