⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlsearchservlet.java

📁 JAVA在线商店带JSP的
💻 JAVA
字号:
package shopcart.servlets;import java.io.*;import java.util.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;import DebugLog;import LogServer;import index.*;public class HTMLSearchServlet extends HttpServlet{	protected DebugLog logger;	protected String noIndexPage;	protected String helpPage;    protected String contextPath;		protected static final int DEFAULT_MAX_HITS=25;		public static final String QUERY_FIELD_NAME="query";	public static final String MAX_FIELD_NAME="maxhits";	public static final String CURRENT_FIELD_NAME="hitstart";	public static final String SUBMIT_FIELD_NAME="submit";	public static final String HELP_NAME="help";	    public void init(ServletConfig config)    throws ServletException    {    	super.init(config);	    	String logFile,logServer;    	String updateIntervalString;    	long updateInterval;            logger = DebugLog.getSharedLog();            logFile = getInitParameter("logfile");        logServer = getInitParameter("logserver");        helpPage = getInitParameter("helppage");        noIndexPage = getInitParameter("noindexpage");        updateIntervalString = getInitParameter("updateinterval");        contextPath = getInitParameter("contextpath");            if(updateIntervalString != null)        {            try            {                updateInterval = Long.parseLong(updateIntervalString);                IndexManager.updateInterval = updateInterval;            }            catch(Exception exp)            {            }        }                if((logFile != null)||(logServer != null))        {                    //Index builder uses the same log                    synchronized(logger)            {                if(!logger.initialized())                {                    if(logServer != null)                    {                        logger.logTo(logServer);                    }                    else                    {                        logger.logTo(new File(logFile));                    }                }            }        }    }    	    public void doGet(HttpServletRequest request,                        HttpServletResponse response)    throws IOException    {        String requestType;            requestType = request.getParameter(SUBMIT_FIELD_NAME);            if((requestType != null)            &&(requestType.equalsIgnoreCase(HELP_NAME)))        {            logger.log("Got help request");                    if(helpPage != null)                response.sendRedirect(helpPage);            else                response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);        }        else//null is the same as do query        {            handleQuery(request,response);        }    }	    protected void handleQuery(HttpServletRequest request,                                HttpServletResponse response)    throws IOException    {        HTMLIndex index;        String query;        Vector results;        int i,max,resultCount=0;        String maxString;        int maxHits = DEFAULT_MAX_HITS;        String curHitStartString;        int curHitStart=0;        PrintWriter writer;        String dir,fullDir;        String curFileName=null;        String myURL;            dir = request.getPathInfo();	    fullDir = request.getPathTranslated();            	response.setContentType("text/html");            writer = response.getWriter();        query = request.getParameter(QUERY_FIELD_NAME);        maxString = request.getParameter(MAX_FIELD_NAME);        curHitStartString = request.getParameter(CURRENT_FIELD_NAME);            myURL = request.getRequestURL().toString();            if(maxString != null)        {            try            {                maxHits = Integer.parseInt(maxString);            }            catch(Exception exp)            {                maxHits = DEFAULT_MAX_HITS;            }        }            if(curHitStartString != null)        {            try            {                curHitStart = Integer.parseInt(curHitStartString);            }            catch(Exception exp)            {                curHitStart = 0;            }        }                if(contextPath != null) dir+=contextPath;                logger.log("Requesting index for: "+dir+" fulldir: "+fullDir);        index = IndexManager.indexForDirectory(fullDir,dir);            if(index == null)        {            logger.log("Index not available for: "+fullDir);                    if(noIndexPage != null)                response.sendRedirect(noIndexPage);            else                response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);        }        else        {            results = index.filesForQuery(query);    	    if(results != null) resultCount = results.size();            logger.log("Got "+resultCount+" results for query: "+query);            	    writer.println("<HTML>");    	    writer.println("<HEAD>");    	    writer.println("<TITLE>");    	    writer.println("Search Results");    	    writer.println("</TITLE>");    	    writer.println("</HEAD>");    	    writer.println("<BODY TEXT=\"#000000\" BGCOLOR=\"#FFFFFF\""    	            +" LINK=\"#0000EE\" VLINK=\"#551A8B\""    	            +" ALINK=\"#FF0000\">");        	    writer.println("<CENTER>");    	    writer.println("<TABLE>");    	    writer.println("<TR>");    	    writer.println("<TD>");	        	    if(resultCount > 0)    	    {        	    writer.println("<H1>Your search results are:</H1>");                max = Math.min(resultCount-curHitStart                                ,maxHits);                            //inc printout by one to make it 1-25 not 0-25    	        writer.println("<CENTER>"+(curHitStart+1)+"-"+(curHitStart+max)    	                        +" of "+resultCount+" matches</CENTER>");	                	    outputHitsNavigator(maxHits,curHitStart,resultCount        	                        ,query,myURL,writer);    	                            	        writer.println("<BLOCKQUOTE>");	                	    try                {                            	    for(i=0;i<max;i++)            	    {            	        curFileName = (String) results.elementAt(curHitStart+i);             	        outputFile(curFileName,dir,writer);            	    }                }        	    catch(Exception exp)        	    {        	        logger.log("Bad file name: "+curFileName);        	    }        	        	        writer.println("</BLOCKQUOTE>");    	            	    outputHitsNavigator(maxHits,curHitStart,resultCount        	                        ,query,myURL,writer);    	    }    	    else    	    {    	        writer.println("<H1>No files matched your query.</H1>");    	    }        	    writer.println("</TD>");    	    writer.println("</TR>");    	    writer.println("</TABLE>");    	    writer.println("</CENTER>");    	    writer.println("</BODY>");    	    writer.println("</HTML>");        }    }	    protected void outputFile(String file,String dir,PrintWriter w)    {        String fileName = file.substring(dir.length());                w.print("<A HREF=\"");        w.print(file.replace('\\','/'));//make sure the URL is valid        w.print("\">");        w.print(fileName.replace('\\','/'));        w.println("</A><BR>");    }	    protected void outputHitsNavigator(int maxHits,int current                                        ,int curMax,String query                                        ,String url,PrintWriter w)    {        boolean needPrev,needNext;        int prev,next;            if(curMax>maxHits)        {            needPrev = (current != 0);            needNext = ((current+maxHits)<curMax);                    w.println("<CENTER>");            if(needPrev)            {                w.print("<A HREF=\"");                w.print(url);                w.print("?");                w.print(QUERY_FIELD_NAME);                w.print("=");                w.print(URLEncoder.encode(query));                w.print("&");                w.print(MAX_FIELD_NAME);                w.print("=");                w.print(maxHits);                w.print("&");                w.print(CURRENT_FIELD_NAME);                w.print("=");                prev = (current-maxHits);                w.print(prev);                w.println("\">&lt;prev</A> ");            }            else            {                w.print("<FONT COLOR=\"#777777\">");                w.print("&lt;prev ");                w.println("</FONT>");            }                    if(needNext)            {                w.print("<A HREF=\"");                w.print(url);                w.print("?");                w.print(QUERY_FIELD_NAME);                w.print("=");                w.print(URLEncoder.encode(query));                w.print("&");                w.print(MAX_FIELD_NAME);                w.print("=");                w.print(maxHits);                w.print("&");                w.print(CURRENT_FIELD_NAME);                w.print("=");                next = (current+maxHits);                w.print(next);                w.println("\">next&gt;</A>");            }            else            {                w.print("<FONT COLOR=\"#777777\">");                w.print("next&gt;");                w.println("</FONT>");            }                    w.println("</CENTER>");        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -