360 홈페이지의 검색 결과는 다음과 같습니다.
1. Schoolnet 캠퍼스 네트워크의 주요 디렉토리 구조는 다음과 같습니다.
주로 중국어, 첫 글자 및 Pinyin의 전체 문자를 지원하는 지능적인 검색 및 피부 교체를 깨닫습니다.
페이지 효과는 다음과 같습니다
기본 핵심 코드는 다음과 같습니다
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"feefix " uri = "http://java.sun.com/jsp/jstl/functions"%> <! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://ww.w.w.3.org/tr/xhtml1/dtd/xhtml1 -생 <html> <head> <title> 캠퍼스 네트워크 홈 페이지 </title> <link rel = "스타일 시트"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/js/js/jquery-ui.js"> </script> <script type = "text/javaScript"src = "/schootern/js/publicjs.js"> src = "/schoolnet/myajax/ajax_uni.js"> </script> <script type = "text/javaScript"src = "/schoolnet/js/style.js"> </script> <c : if test = "$ {loginUser.skin.id! = null}"> <텍스트/Javascrip "(avascrip)". setskin () {var photo = '$ {loginuser.skin.photo}'; $ ( "body"). css ( "배경", "#f6f6f6 URL (/schoolnet/images/pf/" + photo + ") 상단 반복"); }); </script> </c : if> </head> <body> <div> <div id = "searchType"> <a href = "javaScript :"void (0) "onclick ="setSearchType (this), setSearch () "name ="searchDatas "id ="books.png </a> <href = "javascript : 0)" " onclick = "setSearchType (this), setSearch ()"name = "searchSongs"id = "t01d566dad.png"> music </a> <a href = "javaScript : void (0)"onclick = "setsearchType (this), setsearch ()" "Searchnewss" id = "newspaper.png"> news </a> <a href = "javaScript : void (0)"onclick = "setSearchType (this), setSearch ()"name = "searchXiaoShuos"id = "library.png"> 소설 </a> <a href = "javaScript (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"searchDatas "onsub"onsub "onsub"onsub "onsub"blank "onsub" src = "/schoolnet/images/front/books.png"id = "searchimg"style = "margin-bottom : -10px"/> <입력 유형 = "text"name = "search"id = "topsearchtext"onkeyup = "setsearch ()"onfocus = "reearch ()" "//> <입력 ID ="inputsype "" "" ""입력 id = "searchpe" </form> <ul id = "setsearch"> </ul> </div> <div id = "mainmenu"> <ul> <li> <a href = "/schoolnet/login.do? flag = gohomeui"id = "*menu_selected"> <span> 캠퍼스 네트워크 </a> </a> <li> <a href = "/schoolnet/login.do? flag = gohomeui"> <span> 개인 센터 </span> </a> </a> <li> <a href = "/schoolnet/profile.do? flag = gohomepageui"> <span> 내 집 </span> </a> </li> <li> <a href = "javascript : void (0)"> </a> <ul> <li> <a href = "/schoolnet/shou.do? flag = shuoshuo & pagenow = 1"> speak </a> </li> <li> <a href = "/schoolnet/alild.do? flag = myalbumui & pagenow = 1 & useriD = $ {loginuser.id}"> href = "/schoolnet/friend.do? flag = myfriendui & pagenow = 1"> 친구 </a> </a> </a> </li> <li> <a href = "/schoolnet/article.do? flag = articeui & pagenow = 1 & userId = $ {loginuser.id}"> log </a> <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> </a> </a> <li> <a href = "/schoolnet/datas.do? flag = godatasui & pagenow = 1 & action = all"> data </a> <li> <a href = "/schoolnet/xiaoshuo.do? flag = goxiaoshuoui = 1 & id = all = all"> 소설 "> 소설 </a> </a >> </li> <li> <a href ="/schoolnet/skin.do? flag = goskinui & pagkinui & id = all = all "> </li> <li> .do? flag = goshareui & pagenow = 1 "> 새로운 것들 </a> </li> </ul> </li> <li> <a href ="javaScript : void (0) "> </a> </a> </a> <ul> <li> <a href ="/schoolnet/other.do? <li> <a href = "/schoolnet/other.do? flag = goaboutui#2"> siteemap </a> </li> <li> <a href = "/schoolnet/other.do? flag = goaboutui#2"> siteemap </a> </li> <li> <a href = "/schooln/other.do? <li> <a href = "/schoolnet/other.do? flag = goaboutui#4"> 친구 링크 </a> </li> </li> </li> </li> </li> </ul> </li> </li> <li> <a href = "javaScript : void (0)"> <span> settings </span> </a> <ul> <li> <a href = "/href ="/register.gergon. 정보 </a> </li> <li> <a href = "/schoolnet/login.do? flag = logout"> exit </a> </li> </li> </li> </li> </li> </li> </li> </li> </li> </li> </li> <c : test = "$ {loginuser! = null}". 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-le-10px"/> href = "/schoolnet/register.do? flag = updui"> 개인 정보 수정 </a> </li> <li> <a href = "/schoolnet/login.do? flag = logout"> exit </a> </li> </ul> </li> </ul> </ul> </div> </div> </html> </html> </html. 2. 메인 JS 기능
// 입력 컨트롤의 초점을 트리거 할 때 스위치 검색 유형을 설정하고 해당 인기 (첫 번째 5 개) 컨텐츠 (정보, 음악, 뉴스, 소설, 로그)를 표시하는 데 사용됩니다. 함수 setSearchType (o) {$ ( "#searchType a"). removeClass ( "current"); $ (o) .addclass ( "current"); var inputsearchtype = $ (o) .text (); $ ( "#inputSearchType"). val ( "검색"+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 (); }} // 컨텐츠를 스마트 프롬프트 (퍼지 검색의 상위 10 개 일치) 함수 setSearch () {var v = document.getElementById ( "TopSearchText"). value; var type = document.getElementById ( "Search-Form"). 이름; if (v.length == 0) {$ ( "#setSearch"). html ( ""); } if (v.length> 0) {$ .ajax ({cache : true, type : "post :"post ", url :"/schoolnet/changeinfo ", data : {"action ":"setsearch ","search ":"v ": type}, async : false, dataType :"html ", data (data) {data) { $ ( "#setsearch"). html ( ""); }; } 메인 Java 파일
if ( "searchSongs".Equals (searchType)) <span style = "white-space : pre"> </span> {<span style = "white-space : pre"> </span> string namehead [] = chinesepinyintool.getheadbystring (search); <span style = "화이트 공간 : 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 = "화이트 공간 : pre"> </span>} <span style = "white space : pre"> </span> string nameall [] = chinesepinyintool.stringtopinyin (검색); <span style = "화이트 공간 : pre"> </span> 문자열 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"> </span>} <span style = "흰색 공간 : pre"> </span> list <song> songs = Universityservice.executeQueryBypage ( "%" + nameallstring + "%'또는 pinyin (name) + nameheadString +", 1, 10); <span style = "white space : pre"> </span> for (int i = 0; i <songs.size (); i ++) <span style = "화이트 공간 : pre"> </span href = '/schoolnet/music.do? flag = gopatentDisplay & pid = "+songs.get (i) .getPatent (). getId ()+"> ">"+">"+songs.get (i) .getName ()+"</a>"; <span style = "white"> </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 : 오른쪽; 마진-오른쪽 : 8px;'> Close </a> </li> "; <span style = "화이트 공간 : 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 chenate;'; <span style = "white-space : pre"> </span>} <span style = "화이트 공간 : pre"> </span> out.write (con); <span style = "화이트 공간 : 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 skinid = request.getParameter ( "SkinId"); <span style = "흰색 공간 : pre"> </span> 피부 피부 = (피부) UniversityService.findbyid (스킨 .class, integer.valueof (skinid)); <span style = "화이트 공간 : pre"> </span> 사용자 = (사용자) request.getSession (). getAttribute ( "loginuser"); <span style = "흰색 공간 : pre"> </span> user.setskin (스킨); <span style = "white-space : pre"> </span> UniversityService.update (사용자); <span style = "화이트 공간 : pre"> </span>} Pinyin 변환을 수행 할 때는 Pinyin4J.jar 패키지를 가져와야합니다.
ChinesepinyIntool Pinyin Conversion Tool Class
패키지 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 도구 * * */ 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]); }} / ** * * 문자열을 pinyin 번호로 변환 * * * * @param src * @return * / public static string [] StringTopinyin (String Src) {return StringTopinyin (Src, False, Null); } / ** * 문자열을 pinyin 번호로 변환 * * * * @param src * @return * / public static string [] StringTopinyin (String Src, String Speporator) {return StringTopinyin (src, true, separator); } / ** * 문자열을 여러 pinyin * * * @param src * @param ispolyphone *로 변환 * 폴리 포닉 문자의 pinyin을 찾을 수 있는지 * @param separator * polyphonic 문자들 사이의 분리 * * @return * / public static string [] StringTopiny (String SRC, Boolean ispolyphone, string) {// is if (sr) ||. NULL = SRC) {return null; } char [] srcchar = src.tochararray (); int srccount = srcchar.length; 문자열 [] srcstr = 새 문자열 [srccount]; for (int i = 0; i <srccount; i ++) {srcstr [i] = Chartopinyin (srcchar [i], ispolyphone, separator); } 반환 srcstr; } / ** * 단일 문자를 pinyin * * @param src * @return * / public static string ChartoPinyin (char src, boolean ispolyphone, string spectorator) {// 중국인 pinyin 프로세싱 DefaultFormat = new HanyUpinyInoutputformat (new HanyUpinyInoutputformat); // 출력 설정, 대문자, 발음 기호 DEFAULTFORMAT.SETCASETYPE (hanyUpinyIncasetype.lowercase); defaultformat.settoneType (hanyUpinyIntonEtype.withOut_tone); StringBuffer temppinying = new StringBuffer (); // medium if (src> 128) {try {// 결과를 얻기 위해 변환 strs [] strs = pinyinHelper.toHanyUpinyInstringArray (src, defaultFormat); // 다성 문자를 찾을지 여부에 관계없이 기본값은 (ispolyphone && null! = separator) {for (int i = 0; i <strs.length; i ++) {temppinying.append (strs [i]); if (strs.length! = (i + 1)) {// 폴리 포닉 문자는 특수 기호로 분리됩니다. }}} else {temppinying.append (strs [0]); }} catch (badhanyUpinyInoutputformatcombination e) {e.printstacktrace (); }} else {temppinying.append (src); } return tempinying.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(); // 출력 설정, 대문자, 발음 기호 DEFAULTFORMAT.SETCASETYPE (hanyUpinyIncasetype.lowercase); defaultformat.settoneType (hanyUpinyIntonEtype.withOut_tone); 문자열 pinyingstr = ""; try {pinyingstr = pinyinHelper.toHanyUpinyInstring (Hanzi, DefaultFormat, Separator); } catch (badhanyUpinyInoutputformatcombination e) {e.printstacktrace (); } return pinyingstr; } / ** * 문자열 배열을 문자열로 변환 * * @param str * @param separator * 각 문자열 사이의 분리 * * @return * / public static string StringArraytostring (String [] str, String Speporator) {StringBuffer sb = new StringBuffer (); for (int i = 0; i <str.length; i ++) {sb.append (str [i]); if (str.length! = (i + 1)) {sb.append (분리기); }} return sb.toString (); } / ** * 각 문자 배열 * * * @param str * @return * / public static string StringArraytoString (String [] str) {return StringArrayToString (str, ""); } / ** * 문자 배열을 문자로 변환 * * * @param str * @param 분리기 * 개별 문자열 간 분리 * * @return * / public static string charArraytostring (char [] ch, 문자열 분리기) {StringBuffer sb = new StringBuffer (); for (int i = 0; i <ch.length; i ++) {sb.append (ch [i]); if (ch.length! = (i + 1)) {sb.append (분리기); }} return sb.toString (); } / ** * 문자 배열을 문자로 변환 * * * @param str * @return * / public static string charArraytostring (char [] ch) {return charArraytostring (ch, ""); } / ** * 중국어의 첫 번째 캐릭터를 얻으십시오 * * * * @param src * @param iscapital *은 빅 * * @return * / public static char [] getheadbychar (char src, boolean iscapital) {// 중국어가 아닌 경우 직접 반환합니다 (src <= 128) {새 Char [] {src}; } // 획득 된 철자 [] pinyingstr = pinyinHelper.toHanyUpinyInstringArray (SRC); // 리턴 객체 생성 int polyphonesize = pinyingstr.length; char [] headchars = new char [polyphonesize]; int i = 0; // (문자열 s : pinyingstr) {char headchar = s.charat (0); // 첫 번째 문자가 대문자가 되든 기본값은 작은 if (iscapital) {headchars [i] = arribute.toupperCase (headchar); } else {headchars [i] = Headchar; } i ++; } return headchars; } / ** * 중국어에 대한 첫 번째 단어를 취하는 기본값은 크다 * * @param src * @return * / public static char [] getheadbychar (char src) {return getheadbychar (src, true); } / ** * 문자열의 초기 문자를 찾으십시오 * * @param src * @return * / public static string [] getheadbystring (String Src) {return getheadbystring (src, true); } / ** * 문자열의 초기 문자를 찾으십시오 * * @param src * @param iscapital * 자본화 여부 * @return * / public static string [] getheadbystring (String Src, True); } / ** * 문자열의 초기 문자 찾기 * * @param src * @param iscapital * 자본화 * @return * / public static string [] getheadbystring (String Src, Boolean iscapital) {return getheadbystring (src, iscapital, null); } / ** * 문자열 이니셜 찾기 * * @param src * @param iscapital * 자본화 * @param 분리기 * 분리 * * @return * / public static string [] getheadbystring (문자열 src, boolean iscapital, 문자열 분리기) {char [] chars = src.toarray (); 문자열 [] headstring = 새 문자열 [chars.length]; int i = 0; for (char ch : chars) {char [] chs = getheadbychar (ch, iscapital); StringBuffer sb = new StringBuffer (); if (null! = 분리기) {int j = 1; for (char ch1 : chs) {sb.append (ch1); if (j! = chs.length) {sb.append (분리기); } j ++; }} else {sb.append (chs [0]); } HeadString [i] = sb.toString (); i ++; } return headstring; }} 데이터베이스는 관련 기능을 구축합니다
Fristpinyin :이 기능은 중국 줄의 첫 번째 중국어를 Pinyin의 첫 글자로 변환합니다 (예 : "Ok"-> h)
PINYIN :이 기능은 중국 문자열의 각 Pinyin 첫 글자를 연결합니다 (예 : "OK"-> HD)
TO_PINYIN :이 기능은 Pinyin에 해당하는 중국 문자열의 전체 문자를 연결합니다 (예 : "OK"-> Haode)
기능 생성`fristpinyin` (p_name varchar (255)) varchar (255) charset utf8 시작 v_return varchar (255); set v_return = elt (interval (conc (hex (왼쪽 (왼쪽 (gbk를 사용하여 p_name), 1), 16,10), 0xb0a1,0xb0c5,0xb2c1,0xb4ee, 0xb6ea, 0xb7a2,0xb8c1,0xb9fe, 0xbbf7, 0xbbf7, 0xb6ea, 0xb6ea. 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'); 반환 v_return; 엔드 생성 기능`pinyin` (p_name varchar (255)) varchar (255) charset utf8 시작 v_compare varchar (255); v_return varchar (255)를 선언합니다. 내가 int를 선언한다; 설정 i = 1; set v_return = ''; i <length (p_name)는 v_compare = substr (p_name, i, 1)을 설정합니다. if (v_compare! = '') #set v_return = concat (v_return, ',', v_compare); set v_return = concat (v_return, fristpinyin (v_compare)); #set v_return = fristpinyin (v_compare); 끝 IF; i = i + 1을 설정하고; 끝을 끝내십시오. if (isnull (v_return) 또는 v_return = '')을 설정 한 다음 V_return = p_name을 설정하십시오. 끝 IF; 반환 v_return; END 생성 기능 to_pinyin (이름 varchar (255) charset gbk) varchar (255) charset gbk 시작 mycode int; TMP_LCODE VARCHAR (2) Charset GBK; lcode int 선언; TMP_RCODE VARCHAR (2) Charset GBK; rcode int를 선언합니다. MyPy Varchar (255) Charset GBK Default ''; lp int를 선언합니다. mycode = 0을 설정하십시오. lp = 1을 설정하고; set name = hex (이름); lp <length (name)는 tmp_lcode = substring (name, lp, 2)을 설정합니다. set lcode = cast (ascii (enhex (tmp_lcode))가 서명되지 않은 것으로); set tmp_rcode = substring (이름, lp + 2, 2); set rcode = cast (ascii (enhex (tmp_rcode))가 서명되지 않은 것으로); lcode> 128 인 경우 mycode = 65536 -lcode * 256 -rcode를 설정하십시오. code_> = abs (mycode) 순서가 code_ asc 한계 1에서 concat (mypy, pin_yin_)을 mypy로 선택하십시오. 설정 lp = lp + 4; 그렇지 않으면 set mypy = concat (mypy, char (cast (ascii (unhex (substring (substring (name, lp, 2)))))))); 설정 lp = lp + 2; 끝 IF; 끝을 끝내십시오. 더 낮은 리턴 (mypy); 끝;
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.