The search results of 360 home page are as follows
1. The main directory structure of the schoolnet campus network completed is as follows
Mainly realizes intelligent search and skin replacement that supports Chinese, first letters and full letters of Pinyin
The page effect is as follows
The main core code is as follows
1.head.jsp
<%@page import="java.io.File"%> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Campus Network Home Page</title> <link rel="stylesheet" href="/schoolnet/css/index.css" type="text/css" /> <script type="text/javascript" src="/schoolnet/js/ddsmoothmenu.js"></script> <script src="/schoolnet/js/jquery.js"></script> <script src="/schoolnet/js/jquery-ui.js"></script> <script type="text/javascript" src="/schoolnet/js/publicJs.js"></script> <script type="text/javascript" src="/schoolnet/myAJAX/ajax_uni.js"></script> <script type="text/javascript" src="/schoolnet/js/style.js"></script> <c:if test="${loginuser.skin.id!=null }"> <script type="text/javascript"> $(document).ready( function setskin() { var photo = '${loginuser.skin.photo}'; $("body").css( "background", "#f6f6f6 url(/schoolnet/images/pf/" + photo + ") top repeat"); }); </script> </c:if> </head> <body> <div> <div id="searchtype"> <a href="javascript:void(0)" onclick="setsearchtype(this),setsearch()" name="searchdatas" id="books.png">Data</a> <a href="javascript:void(0)" onclick="setsearchtype(this),setsearch()" name="searchsongs" id="t01d566d0c28b32ddad.png">Music</a> <a href="javascript:void(0)" onclick="setsearchtype(this),setsearch()" name="searchnews" id="newspaper.png">News</a> <a href="javascript:void(0)" onclick="setsearchtype(this),setsearch()" name="searchxiaoshuos" id="library.png">Novel</a> <a href="javascript:void(0)" onclick="setsearchtype(this),setsearch()" name="searcharticles" id="blog.gif">Log</a> </div> <form id="search-form" action="/schoolnet/other.do?flag=searchdatas&searchpageNow=1" method="post" name="searchdatas" target="blank" onsubmit="return checksearch()"> <img src="/schoolnet/images/front/books.png" id="searchimg" style="margin-bottom:-10px" /><input type="text" name="search" id="topsearchtext" onkeyup="setsearch()" onfocus="newsearch()" "//> <input id="inputsearchtype" type="submit" value="Search information" /> </form> <ul id="setsearch"> </ul> </div> <div id="MainMenu"> <ul> <li><a href="/schoolnet/login.do?flag=goHomeUI" id="*menu_selected"><span>Campus Network</a> </a> </li> <li><a href="/schoolnet/login.do?flag=goHomeUI"><span>Personal Center</span> </a></li> <li><a href="/schoolnet/profile.do?flag=goHomePageUI"><span>My Home</span> </a></li> <li><a href="javascript:void(0)"><span> Application</span> </a> <ul> <li><a href="/schoolnet/shou.do?flag=ShuoShuo&pageNow=1" >Speak</a> </li> <li><a href="/schoolnet/album.do?flag=myAlbumUI&pageNow=1&userid=${loginuser.id }" >Album</a> </li> <li><a href="/schoolnet/friend.do?flag=myfriendUI&pageNow=1" >Friends</a> </li> <li><a href="/schoolnet/article.do?flag=articleUI&pageNow=1&userid=${loginuser.id }" >Log</a> </li> <li><a href="/schoolnet/article.do?flag=articleUI&pageNow=1&userid=${loginuser.id }" >Log</a> </li> <li><a href="/schoolnet/music.do?flag=goMusicHome&pageNow=1" >Music</a> </li> <li><a href="/schoolnet/news.do?flag=gonewsUI&typeid=1&pageNow=1" >News</a> </li> <li><a href="/schoolnet/datas.do?flag=godatasUI&pageNow=1&action=all" >Data</a> </li> <li><a href="/schoolnet/xiaoshuo.do?flag=goxiaoshuoUI&pageNow=1&id=all" >Novel</a> </li> <li><a href="/schoolnet/skin.do?flag=goskinUI&pageNow=1&id=all">Dress Up</a> </li> <li><a href="/schoolnet/share .do?flag=goShareUI&pageNow=1" >New things</a> </li> </ul> </li> <li><a href="javascript:void(0)"><span>About</a> </a> </a> <ul> <li><a href="/schoolnet/other.do?flag=goAboutUI#1">About Us</a> </li> <li><a href="/schoolnet/other.do?flag=goAboutUI#2">Sitemap</a> </li> <li><a href="/schoolnet/other.do?flag=goAboutUI#2">Sitemap</a> </li> <li><a href="/schoolnet/other.do?flag=goAboutUI#3">Copyright Statement</a> </li> <li><a href="/schoolnet/other.do?flag=goAboutUI#4">Friend Links</a> </li> </ul> </li> </li> <li><a href="javascript:void(0)"><span>Settings</span> </a> <ul> <li><a href="/schoolnet/register.do?flag=updUI">Modify personal information</a> </li> <li><a href="/schoolnet/login.do?flag=logout">Exit</a> </li> </li> </li> </li> </li> </li> </li> </li> </li> </li> <c:if test="${loginuser!=null }"> <div id="page-wrap"> <ul> <li id="menu_selected"><a id="menu_selected" href="/schoolnet/login.do?flag=goHomeUI"> <img src="/schoolnet/images/head/${loginuser.photo}" style=" margin-top:-18px;margin-left:-10px" /> </a> <ul> <li><a href="/schoolnet/register.do?flag=updUI">Modify personal information</a> </li> <li><a href="/schoolnet/login.do?flag=logout">Exit</a> </li> </ul></li> </ul> </ul> </div> </c:if> </div> </body> </html> 2. Main js functions
// Used to set the switch search type and display the corresponding popular (first five) content (information, music, news, novels, logs) when triggering the focus of the input control. function setsearchtype(o){ $("#searchtype a").removeClass("current"); $(o).addClass("current"); var inputsearchtype=$(o).text(); $("#inputsearchtype").val("search"+inputsearchtype); document.getElementById("search-form").action="/schoolnet/other.do?flag="+o.name+"&searchpageNow=1"; document.getElementById("search-form").name=o.name; document.getElementById("searchimg").src="/schoolnet/images/front/"+o.id; $("#topsearchtext").show(); $("#searchfriendss").hide(); if(o.name=="searchfriends") { $("#topsearchtext").hide(); $("#searchfriendss").show(); } } // Used to set the content to display smart prompts (the top ten matches in fuzzy search) function setsearch() { var v=document.getElementById("topsearchtext").value; var type=document.getElementById("search-form").name; if(v.length==0) { $("#setsearch").html(""); } if(v.length>0) { $.ajax({ cache: true, type: "POST", url : "/schoolnet/ChangeInfo", data: {"action":"setsearch","search":v,"searchtype":type}, async: false, dataType: "html", success: function(data) { $("#setsearch").html(""); $("#setsearch").append(data); } }); }; } Main java files
if("searchsongs".equals(searchtype)) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>String nameHEAD[]=ChinesePinYinTool.getHeadByString(search); <span style="white-space:pre"> </span>String nameHeadString=""; <span style="white-space:pre"> </span>for (int i = 0; i < nameHEAD.length; i++) { <span style="white-space:pre"> </span>nameHeadString+=nameHEAD[i]; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>String nameALL[]=ChinesePinYinTool.stringToPinyin(search); <span style="white-space:pre"> </span>String nameAllString=""; <span style="white-space:pre"> </span>for (int i = 0; i < nameALL.length; i++) { <span style="white-space:pre"> </span>nameAllString+=nameALL[i]; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>List<Song> songs=universityService.executeQueryByPage("from Song where to_pinyin(name) like '%"+ nameAllString +"%' or pinyin(name) like '%"+ nameHeadString +"%'", null, 1, 10); <span style="white-space:pre"> </span>for(int i=0;i<songs.size();i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>con +="<li><a target='blank' href='/schoolnet/music.do?flag=goPatentDisplay&pid="+songs.get(i).getPatent().getId()+"'>"+songs.get(i).getName()+"</a></li>"; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if (songs.size()!=0) { <span style="white-space:pre"> </span>con +="<li><a href='javascript:void(0)' onclick='hideli()' style='display:inline;float:right;margin-right:8px;'>Close</a></li>"; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>else { <span style="white-space:pre"> </span>con +="<li><a href='javascript:void(0)' onclick='hideli()' style='display:inline;'>No arbitrary match result</a></li>"; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>out.write(con); <span style="white-space:pre"> </span>out.close(); <span style="white-space:pre"> </span>} else if("setpifu".equals(action)) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>String skinid=request.getParameter("skinid"); <span style="white-space:pre"> </span>Skin skin=(Skin) universityService.findById(Skin.class, Integer.valueOf(skinid)); <span style="white-space:pre"> </span>Users user=(Users) request.getSession().getAttribute("loginuser"); <span style="white-space:pre"> </span>user.setSkin(skin); <span style="white-space:pre"> </span>universityService.update(user); <span style="white-space:pre"> </span>} When doing pinyin conversion, you need to import the pinyin4j.jar package
ChinesePinYinTool Pinyin Conversion Tool Class
package schoolnet.utils;
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * * Chinese Pinyin Tool* * * */ public class ChinesePinYinTool { public static void main(String[] args) { String string[]=stringToPinyin("this"); for (int i = 0; i < string.length; i++) { System.out.println(string[i]); } } /** * * Convert a string to a pinyin number* * * @param src * @return */ public static String[] stringToPinyin(String src) { return stringToPinyin(src, false, null); } /** * Convert a string to a pinyin number* * * @param src * @return */ public static String[] stringToPinyin(String src, String separator) { return stringToPinyin(src, true, separator); } /** * Convert a string to a number of pinyin* * * @param src * @param isPolyphone * Whether to find the pinyin of polyphonic characters* * @param separator * Separation between polyphonic characters* * @return */ public static String[] stringToPinyin(String src, boolean isPolyphone, String separator) { // Determine whether the string is if ("".equals(src) || null == src) { return null; } char[] srcChar = src.toCharArray(); int srcCount = srcChar.length; String[] srcStr = new String[srcCount]; for (int i = 0; i < srcCount; i++) { srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator); } return srcStr; } /** * Convert a single character to pinyin* * @param src * @return */ public static String charToPinyin(char src, boolean isPolyphone, String separator) { // Create Chinese pinyin processing HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // Output settings, upper case, phonetic symbol defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); StringBuffer tempPinying = new StringBuffer(); // If it is medium if (src > 128) { try { // Convert to get the result String[] strs = PinyinHelper.toHanyuPinyinStringArray(src, defaultFormat); // Whether to find polyphonic characters, the default is to find the character of polyphonic characters if (isPolyphone && null != separator) { for (int i = 0; i < strs.length; i++) { tempPinying.append(strs[i]); if (strs.length != (i + 1)) { // The polyphonic characters are separated by special symbols tempPinying.append(separator); } } } else { tempPinying.append(strs[0]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { tempPinying.append(src); } return tempPinying.toString(); } public static String hanziToPinyin(String hanzi) { return hanziToPinyin(hanzi, ""); } /** * Convert Chinese characters to pinyin* * @param hanzi * @param separator * @return */ @SuppressWarnings("deprecation") public static String hanziToPinyin(String hanzi, String separator) { // Create Chinese pinyin processing HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // Output settings, upper case, phonetic symbol defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String pinyingStr = ""; try { pinyingStr = PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat, separator); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return pinyingStr; } /** * Convert a string array into a string* * @param str * @param separator * Separation between each string* * @return */ public static String stringArrayToString(String[] str, String separator) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length; i++) { sb.append(str[i]); if (str.length != (i + 1)) { sb.append(separator); } } return sb.toString(); } /** * Connect each character array* * * @param str * @return */ public static String stringArrayToString(String[] str) { return stringArrayToString(str, ""); } /** * Convert a character array into characters* * * @param str * @param separator * Separation between individual strings* * @return */ public static String charArrayToString(char[] ch, String separator) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < ch.length; i++) { sb.append(ch[i]); if (ch.length != (i + 1)) { sb.append(separator); } } return sb.toString(); } /** * Convert a character array into characters* * * @param str * @return */ public static String charArrayToString(char[] ch) { return charArrayToString(ch, " "); } /** * Get the first character of the Chinese character * * * @param src * @param isCapital * Is it big * * @return */ public static char[] getHeadByChar(char src, boolean isCapital) { // If not Chinese character, return directly if (src <= 128) { return new char[] { src }; } // The obtained spelling[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src); // Create a return object int polyphoneSize = pinyingStr.length; char[] headChars = new char[polyphoneSize]; int i = 0; // Intercept the first word for (String s: pinyingStr) { char headChar = s.charAt(0); // Whether the first letter is capitalized, the default is small if (isCapital) { headChars[i] = Character.toUpperCase(headChar); } else { headChars[i] = headChar; } i++; } return headChars; } /** * The default for taking the first word for Chinese characters is large* * @param src * @return */ public static char[] getHeadByChar(char src) { return getHeadByChar(src, true); } /** * Find the initial letter of the string * * @param src * @return */ public static String[] getHeadByString(String src) { return getHeadByString(src, true); } /** * Find the initial letter of the string * * @param src * @param isCapital * Whether it is capitalized* @return */ public static String[] getHeadByString(String src, true); } /** * Find the initial letter of the string * * @param src * @param isCapital * Is it capitalized* @return */ public static String[] getHeadByString(String src, boolean isCapital) { return getHeadByString(src, isCapital, null); } /** * Find the string initials * * @param src * @param isCapital * Whether capitalization* @param separator * Separated* * @return */ public static String[] getHeadByString(String src, boolean isCapital, String separator) { char[] chars = src.toCharArray(); String[] headString = new String[chars.length]; int i = 0; for (char ch : chars) { char[] chs = getHeadByChar(ch, isCapital); StringBuffer sb = new StringBuffer(); if (null != separator) { int j = 1; for (char ch1 : chs) { sb.append(ch1); if (j != chs.length) { sb.append(separator); } j++; } } else { sb.append(chs[0]); } headString[i] = sb.toString(); i++; } return headString; } } Database builds related functions
fristPinyin: This function converts the first Chinese character of a Chinese string into the first letter of the pinyin (for example: "OK"->h)
pinyin: This function connects each of the pinyin first letters corresponding to a Chinese string (for example: "OK"->hd)
to_pinyin: This function connects each of the full letters of a Chinese string corresponding to the pinyin (for example: "OK"->haode)
CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_RETURN VARCHAR(255); SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB, 0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1), 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z'); RETURN V_RETURN; END CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_COMPARE VARCHAR(255); DECLARE V_RETURN VARCHAR(255); DECLARE I INT; SET I = 1; SET V_RETURN = ''; while I < LENGTH(P_NAME) do SET V_COMPARE = SUBSTR(P_NAME, I, 1); IF (V_COMPARE != '') THEN #SET V_RETURN = CONCAT(V_RETURN, ',', V_COMPARE); SET V_RETURN = CONCAT(V_RETURN, fristPinyin(V_COMPARE)); #SET V_RETURN = fristPinyin(V_COMPARE); END IF; SET I = I + 1; end while; IF (ISNULL(V_RETURN) or V_RETURN = '') THEN SET V_RETURN = P_NAME; END IF; RETURN V_RETURN; END CREATE FUNCTION to_pinyin(NAME VARCHAR(255) CHARSET gbk) RETURNS VARCHAR(255) CHARSET gbk BEGIN DECLARE mycode INT; DECLARE tmp_lcode VARCHAR(2) CHARSET gbk; DECLARE lcode INT; DECLARE tmp_rcode VARCHAR(2) CHARSET gbk; DECLARE rcode INT; DECLARE mypy VARCHAR(255) CHARSET gbk DEFAULT ''; DECLARE lp INT; SET mycode = 0; SET lp = 1; SET NAME = HEX(NAME); WHILE lp < LENGTH(NAME) DO SET tmp_lcode = SUBSTRING(NAME, lp, 2); SET lcode = CAST(ASCII(UNHEX(tmp_lcode)) AS UNSIGNED); SET tmp_rcode = SUBSTRING(NAME, lp + 2, 2); SET rcode = CAST(ASCII(UNHEX(tmp_rcode)) AS UNSIGNED); IF lcode > 128 THEN SET mycode =65536 - lcode * 256 - rcode ; SELECT CONCAT(mypy,pin_yin_) INTO mypy FROM t_base_pinyin WHERE CODE_ >= ABS(mycode) ORDER BY CODE_ ASC LIMIT 1; SET lp = lp + 4; ELSE SET mypy = CONCAT(mypy,CHAR(CAST(ASCII(UNHEX(SUBSTRING(NAME, lp, 2))) AS UNSIGNED))); SET lp = lp + 2; END IF; END WHILE; RETURN LOWER(mypy); END;
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.