<%@page import="com.hanweb.common.util.NumberUtil"%> <%@page import="com.hanweb.common.util.StringUtil"%> <%@page import="com.hanweb.jcms.util.SafeUtil"%> <%@page import="com.hanweb.common.util.file.LocalFileUtil"%> <%@page import="com.hanweb.common.util.mvc.Script"%> <%@page contentType="text/html;charset=UTF-8" %> <%@page import="com.hanweb.jcms.build.service.makepage.ModalFile"%> <%@page import="com.hanweb.jcms.build.service.makeunit.ExtraModuleUnit"%> <%@page import="com.hanweb.jcms.entity.Jcms_ModalobjectunitEntity"%> <%@page import="com.hanweb.jcms.plugins.sitesearch.service.Jcms_Sitesearch_ModalBLF"%> <%@page import="com.hanweb.jcms.service.website.Jcms_WebinfomationBLF"%> <%@page import="com.hanweb.jcms.util.AccessUtil"%> <%@page import="java.util.regex.Matcher"%> <%@ page import="java.util.regex.Pattern" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="java.net.URLDecoder" %> <%@ include file="config.jsp" %> <%! public boolean canAccess(String strPara) { boolean bl = true; if (strPara != null) { strPara = strPara.toLowerCase(); if (strPara.contains("%") || strPara.contains("|") || strPara.contains("+") || strPara.contains("&") || strPara.contains("alert") || strPara.contains("script") || strPara.contains("\"") || strPara.contains("\'") || strPara.contains("<") || strPara.contains("set") || strPara.contains("exec") || strPara.contains("delete") || strPara.contains("update") || strPara.contains("declare") || strPara.contains("cast")) { bl = false; } } return bl; } public boolean isTimeIndex(String keyWord, String keyValue){ boolean bl = false; if((StringUtil.equals(keyValue, "") || StringUtil.getString(keyValue).length()==0) && (StringUtil.equals(keyWord, "0") || StringUtil.equals(keyWord, "1") || StringUtil.equals(keyWord, "7") || StringUtil.equals(keyWord, "30") || StringUtil.equals(keyWord, "90") || StringUtil.equals(keyWord, "365"))){ bl = true; } return bl; } %> <% String jpageCss=""+ ""+ ""; request.setCharacterEncoding("UTF-8"); Script script = Script.getInstanceOnly(); if(!AccessUtil.checkAccess(request)){ //阻止跨站点请求伪造 out.print(script.addScript("location.href='../../';").getScript()); return; } LocalFileUtil fileUtil = LocalFileUtil.getInstance(); //得到栏目IDs,可认是当前栏目ID也可以是ID的集合 String strColumnId = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("columnid"))); int strWebId = NumberUtil.getInt(request.getParameter("webid"), 0); String strClassWord =StringUtil.getString( SafeUtil.getSafeString(request.getParameter("classword"))); //查询的字段类型 String strKeyWord = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("keyword"))); // if(!StringUtil.equals(strKeyWord, "vc_title") && // !StringUtil.equals(strKeyWord, "vc_keyword") && // !StringUtil.equals(strKeyWord, "vc_abs") && // !StringUtil.equals(strKeyWord, "vc_author") && // !StringUtil.equals(strKeyWord, "vc_source") && // !StringUtil.equals(strKeyWord, "vc_editor")){ // strKeyWord = ""; // } //查询的关键字值 String strKeyValue = StringUtil.getString(SafeUtil.getSafeString(URLDecoder.decode(request.getParameter("keyvalue"), "UTF-8"))); //子栏目下信息类别id号 String loadsubid = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("loadsubid"))); //模块单元id编号 String modalUnitId = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("modalunitid"))); //当前页码 int nCurrentPage = NumberUtil.getInt(request.getParameter("currpage"), 1); if( nCurrentPage < 1 ){ nCurrentPage = 1; } //得到网站域名 String strDomain = Jcms_WebinfomationBLF.modifyAndGetWebDomain("1", NumberUtil.getInt(strWebID)); //路径 String strSysPath = application.getRealPath(""); String strPath = strSysPath+"/jcms_files/jcms1/web"+strWebID +"/site/"; String strModulePath = fileUtil.getAbsolutePath("jcms_files/jcms1/web"+strWebID +"/site/module/sitesearch/"); String webtype = xmlFile.getContent("webtype", strModulePath+"config/config.xml"); String strUrl = "/"; if( webtype.trim().equals("2")){ strUrl = "/module/"; } else{ strUrl = request.getContextPath() + "/jcms_files/jcms1/web"+strWebID+"/site/module/"; } Jcms_Sitesearch_ModalBLF search = Jcms_Sitesearch_ModalBLF.getInstance().init(strAppID, NumberUtil.getInt(strWebID)); String strUnitPath = ""; if(modalUnitId == null || modalUnitId.equals("")){ strUnitPath = strModulePath + "config/unit.xml"; }else if(NumberUtil.getInt(modalUnitId) > 0){ strUnitPath = strModulePath + "config/unit_" + modalUnitId + ".xml"; }else{ out.println("模块单元id不正确"); return; } Jcms_ModalobjectunitEntity unitEntity = search.getUnitInfo(strUnitPath); /*得到模板实例的ID*/ ExtraModuleUnit unit = ExtraModuleUnit.getInstance().init("1", NumberUtil.getInt(strWebID)); int nModalObjectID = NumberUtil.getInt(xmlFile.getContent( "sub_moduleid", strUnitPath )); String strModalHtml = ""; String strImgPath = ""; String defaultModalHtml = ""; ModalFile mfile = ModalFile.getInstance().init("1"); if(nModalObjectID > 0){ mfile.setWebID( NumberUtil.getInt(strWebID)); mfile.setSysPath(); java.util.Hashtable htReturn = mfile.getModalHTML(nModalObjectID); if( htReturn != null && htReturn.size()>0 ){ strModalHtml = htReturn.get("modalHTML").toString(); //板板文件 strImgPath = htReturn.get("imagePath").toString(); //图片路径 // 替换路径 strModalHtml = mfile.replaceImagePath(strModalHtml); } }else{ //默认模板读取 defaultModalHtml = strModulePath + "html/sitesearch.html"; strImgPath = strModulePath + "html/"; String strCssPath = strModulePath + "html/"; // 读取模板实例源文件 String strHTML = fileUtil.readFileToString(defaultModalHtml, "UTF-8"); strModalHtml = StringUtil.getString(strHTML); //copy模板图片 mfile.copyImageFile(strImgPath, strModulePath + "images/", strModalHtml); mfile.copyImageFile(strCssPath, strModulePath + "css/", strModalHtml); } long time = System.currentTimeMillis(); //得到每页显示的记录数 int nRow = unitEntity.getI_row(); int nCol = unitEntity.getI_col(); int nPageCount = nRow * nCol; //每页显示记录数 //得到总记录数 int nTotalCount = 0; if("0".equals(strColumnId) || "".equals(strColumnId)){ if(isTimeIndex(strKeyWord, strKeyValue)){ nTotalCount = search.getSiteTotalCountByTime1(strColumnId, strClassWord, strKeyWord, loadsubid, strWebId); }else{ nTotalCount = search.getSiteTotalCount1(strColumnId,strClassWord, strKeyWord, strKeyValue, loadsubid ,strWebId); } }else{ if(isTimeIndex(strKeyWord, strKeyValue)){ nTotalCount = search.getSiteTotalCountByTime2(strColumnId, strClassWord, strKeyWord, loadsubid); }else{ nTotalCount = search.getSiteTotalCount2(strColumnId,strClassWord, strKeyWord, strKeyValue, loadsubid); } } //得到总页数 int nTotalPage = nTotalCount / nPageCount; if( nTotalCount % nPageCount != 0 ){ nTotalPage += 1; } if( nCurrentPage > nTotalPage ){ nCurrentPage = nTotalPage; } int nMin = (nCurrentPage-1) * nPageCount; int nMax = nCurrentPage * nPageCount; unit.setUnitInfo( unitEntity ); unit.setModalUnitID( ""+nModalObjectID ); unit.setAbsolutePath( strPath ); strDomain = Jcms_WebinfomationBLF.getInstance().fixDomain(strDomain); if(!strDomain.endsWith("/")){ strDomain = strDomain + "/"; } unit.setPath(strDomain); //判断是否要高亮显示 String c_view = search.get_c_view(); boolean viewFlag = false; if( c_view.trim().equals("1") && strKeyValue.trim().length() > 0 ){ viewFlag = true; } String strContent = ""; if(nTotalCount > 0){ if("0".equals(strColumnId) || "".equals(strColumnId)){ if(isTimeIndex(strKeyWord, strKeyValue)){ strContent = unit.getSiteSubjectLinkByTime(strColumnId, strClassWord, strKeyWord,strKeyValue, nMin, nMax, viewFlag, loadsubid, unitEntity, strWebId+""); }else{ strContent = unit.getSiteSubjectLink(strColumnId, strClassWord, strKeyWord, strKeyValue, nMin, nMax, viewFlag, loadsubid, unitEntity, strWebId+""); } }else{ if(isTimeIndex(strKeyWord, strKeyValue)){ strContent = unit.getSiteSubjectLinkByTime(strColumnId, strClassWord, strKeyWord, strKeyValue, nMin, nMax, viewFlag, loadsubid, unitEntity); }else{ strContent = unit.getSiteSubjectLink(strColumnId, strClassWord, strKeyWord, strKeyValue, nMin, nMax, viewFlag, loadsubid, unitEntity); } } } //模块的访问路径 String strModule = strUrl+ "sitesearch/index.jsp?classword=" + strClassWord + "&keyword=" + strKeyWord + "&columnid=" + strColumnId+"&webid="+strWebId+"&modalunitid="+modalUnitId;; //得到检索的表单 String strSearchForm = search.getSearchModuleForm(strModule, strKeyValue); // request,总记录,每页记录数,当前页码.表格样式,页码的hidden值 //页码的hidden值 String strHidden = "\n" + " \n" + "" + "" + "" + ""; String urlPage = "./index.jsp?keyword=" + strKeyWord + "&columnid=" + strColumnId + "&keyvalue=" + URLEncoder.encode(strKeyValue, "utf-8")+"&webid="+strWebId+"&modalunitid="+modalUnitId; String strPages = search.getPaginationView(urlPage, nTotalCount, nPageCount, nCurrentPage, strHidden); if("".equals(strContent)) { strContent = "
没有发现任何记录
"; } time = System.currentTimeMillis() - time; String cssstyle = ""; int endRecord = nPageCount * nCurrentPage; if(endRecord > nTotalCount){ endRecord = nTotalCount; } int indexStartNum = nPageCount * (nCurrentPage - 1) + 1; if(indexStartNum < 0){ indexStartNum = 0; } StringBuffer searchTip = new StringBuffer(cssstyle) .append("") .append("") .append("") .append("") .append("") .append("
搜索:").append(strKeyValue).append("共有 ").append(nTotalCount) .append(" 条结果,这是 ").append(indexStartNum).append(" - ").append(endRecord) .append(" 条。
"); strContent = strContent + "
" + searchTip.toString() + "
" + strPages; //内外网路径判断 String strConfPath = strModulePath + "config/config.xml"; String strWebType = xmlFile.getContent("webtype", strConfPath); //获取内外网的标识 strWebType = strWebType == null ? "1" : strWebType; String strAppPath = xmlFile.getContent("web_in_servername", strConfPath); strAppPath = strAppPath == null ? "jcms" : strAppPath; String strReplace = "/"+strAppPath+"/jcms_files/jcms1"+ "/web"+strWebID+"/site/"; if(strWebType.trim().equals("2")) { //外网 strContent = StringUtil.replace(strContent, strReplace , "/"); } String regEx = ""; Pattern p1 = Pattern.compile(regEx); Matcher m1 = p1.matcher(strModalHtml); String tag1 = ""; if( strModalHtml.trim().length()> 0 ){ if(m1.find()){ tag1 = m1.group(); //标签和内容 strModalHtml = strModalHtml.replaceFirst(tag1,jpageCss); }else{ strModalHtml =jpageCss+strModalHtml; } }else{ strContent =jpageCss+strContent; } if( strModalHtml.trim().length()> 0 ){ strModalHtml = unit.replaceUnitTag("站内检索表单",strModalHtml,strSearchForm); strModalHtml = unit.replaceUnitTag("站内检索",strModalHtml,strContent); out.println(strModalHtml); }else{ strContent = StringUtil.replace(strContent,"\"","\\\""); strContent = StringUtil.removeEnter(strContent); String strAlter = " var content=\""+strContent+"\";"; strAlter += " document.write(content);"; out.println(script.addScript(strAlter).getScript()); } %>