Los resultados de búsqueda de la página de inicio 360 son los siguientes
1. La estructura principal del directorio de la red de campus Schoolnet completada es la siguiente
Principalmente se da cuenta de la búsqueda inteligente y el reemplazo de la piel que admite las letras chinas, las primeras y las letras completas de pinyin
El efecto de la página es el siguiente
El código principal principal es el siguiente
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 público "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transictar <html> <foad> <title> Campus Network Página de inicio </title> <link rel = "stylesheet" href = "/schoolnet/css/index.css" type = "text/css"/> <script type = "text/javaScript" src = "/schoolnet/js/ddsmoothmenu.js"> </script> <script <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). var foto = '$ {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)" 0) " onClick = "setSearchType (this), setSearch ()" name = "searchSongs" id = "T01D566D0C28B32DDAD.PNG id = "Newspaper.png"> News </a> <a href = "javascript: void (0)" onClick = "setSearchType (this), setSearch ()" name = "searchXiaoshUos" id = "biblioteca.png"> novedoso </a> <a hrf = "javascript: void (0)" "" "" onClick = "setSearchType (this), setSearch ()" name = "SearchArticles" id = "Blog.gif"> log </a> </div> <form de formular ID = "Search-Form" Action = "/Schoolnet/Other.do src = "/schoolnet/images/front/books.png" id = "searchImg" style = "margen-bottom: -10px"/> <input type = "text" name = "search" id = "topsearchText" en keyp = "setSearch ()" onFocus = "Newsearch ()" ///> <input Id = "InputSearchType" Type = "Subting" Subting " </form> <ul id = "setSearch"> </ul> </iv> <div id = "mainmenu"> <ul> <li> <a href = "/schoolnet/login.do? href = "/Schoolnet/Login.do? </a> <ul> <li> <a href = "/Schoolnet/shou.do? href = "/Schoolnet/Friend.do? href = "/Schoolnet/Artículo.do? href = "/Schoolnet/News.do? href = "/Schoolnet/xiaoshuo.do? ¿ </li> <li> <a href = "/Schoolnet/Other.do? href = "/Schoolnet/Other.do? href = "javascript: void (0)"> <span> configuración </span> </a> <ul> <li> <a href = "/schoolnet/registro.do? </li> </li> </li> </li> </li> </li> </li> <c: if test = "$ {loginuser! = null}"> <div id = "page-wrap"> <ul> <li id = "menú_selected"> <a id = "menú_selected" href = "/schoolnet/login.do.do? src = "/Schoolnet/Images/Head/$ {loginuser.photo}" style = "margin-top: -18px; margin-left: -10px"/> </a> <ul> <li> <a href = "/Schoolnet/registro.do? href = "/Schoolnet/Login.do? 2. Funciones JS principales
// Se utiliza para establecer el tipo de búsqueda de interruptor y mostrar el contenido popular (primeros cinco) correspondiente (información, música, noticias, novelas, registros) al activar el enfoque del control de entrada. función setSearchType (o) {$ ("#SearchType A"). RemoVeCLass ("actual"); $ (o) .addclass ("actual"); var inputSearchType = $ (o) .Text (); $ ("#InputSearchType"). Val ("Buscar"+InputSearchType); document.getElementById ("Search-Form"). Action = "/Schoolnet/Other.do? document.getElementById ("Forma de búsqueda"). Name = O.Name; document.getElementById ("SearchImg"). Src = "/Schoolnet/Images/Front/"+O.ID; $ ("#topsearchText"). show (); $ ("#SearchFriendss"). Hide (); if (o.name == "SearchFriends") {$ ("#TopSearchText"). Hide (); $ ("#SearchFriendss"). Show (); }} // Se usa para establecer el contenido para mostrar las indicaciones inteligentes (las diez principales coincidencias en la búsqueda difusa) función setSearch () {var v = document.getElementById ("topsearchText"). Valor; var type = document.getElementById ("Forma de búsqueda"). 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: falso, tipo de datos: "HTML", Success: Function (Data) { $ ("#setSearch"). html (""); }; } Archivos Java principales
if ("SearchSongs" .Equals (SearchType)) <span style = "White-Space: pre"> </span> {<span style = "White-space: pre"> </span> String namehead [] = chineSepinyIncool.getheadbystring (búsqueda); <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 [] = chineseepinyIncool.stringtopinyin (búsqueda); <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 ("De Song Where To_pinyin (name) como '%" + NameallString + "%' o piDyin (nombre) como '%" + NameHeadring + "%'", Null, 1, 1, 10); 10); <span style = "White-Space: pre"> </span> for (int i = 0; i <cancess.size (); i ++) <span style = "white-space: pre"> </span> {<span style = "white-space: pre"> </span> con+= "<li> <a objetivo = 'en blanco' ' href = '/Schoolnet/Music.do? <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;'> cerrar </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 arbitrario counscript </aa>"/"/"/"/"/"/"/"/"/"/". <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 (acción)) <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> usuarios usuarios = (usuarios) request.getSession (). getAttribute ("Loginuser"); <span style = "White-Space: pre"> </span> user.setskin (skin); <span style = "White-Space: pre"> </span> UniversityService.Update (usuario); <span style = "White-Space: pre"> </span>} Al hacer la conversión de pinyin, debe importar el paquete pinyin4j.jar
CHINESEPINYNINTOOL CLASE DE HERRAMIENTA DE CONVERSIÓN
paquete schoolnet.utils;
importar net.sourceforge.pinyin4j.pinyinhelper; importar net.sourceforge.pinyin4j.format.hanyupinyincasetype; importar net.sourceForge.pinyin4j.format.hanyupinyinoutputformat; importar net.sourceForge.pinyin4j.format.hanyupinyIntonetype; importar net.sourceforge.pinyin4j.format.exception.badhanyupinyinoututputformatcombination; / ** * * herramienta pinyin china * * * * */ public class ChineSepinyIncool {public static void main (string [] args) {string string [] = StringTopinyin ("this"); for (int i = 0; i <string.length; i ++) {system.out.println (string [i]); }} / ** * * Convertir una cadena a un número Pinyin * * * @param src * @return * / public static string [] stringTopinyin (string src) {return stringTopinyIn (src, false, null); } / ** * Convierta una cadena a un número de pinyin * * * @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.toCarArray (); int srcCount = srcchar.length; Cadena [] srcstr = new String [srcCount]; for (int i = 0; i <srcCount; i ++) {srcstr [i] = Chartopinyin (srcchar [i], ispolyphone, separator); } return srcstr; } / ** * Convierta un solo carácter a Pinyin * * @param src * @return * / public static String Chartopinyin (char src, boolean ispolyphone, string separator) {// crea procesamiento chino de pinyin hanyupinyinoutformat default = new hanyupinyinoNformat ();; // Configuración de salida, mayúscula, símbolo fonético defaultFormat.setCasetype (hanyupinyincasetype.lowercase); DefaultFormat.settoneType (hanyupinyInTonetype.without_tone); StringBuffer TempPinying = new StringBuffer (); // Si es medio if (src> 128) {try {// Convertir para obtener la cadena de resultados [] strs = pinyinhelper.tohanyupinyinstringarray (src, defaultformat); // si encontrar caracteres polifónicos, el valor predeterminado es encontrar el carácter de los caracteres polifónicos si (ispolyphone && null! = Separator) {for (int i = 0; i <strs.length; i ++) {temppinying.append (strs [i]); if (strs.length! = (i + 1)) {// Los caracteres polifónicos están separados por símbolos especiales Temppinying.append (separador); }}} else {temppining.append (strs [0]); }} Catch (BadHanyUpinyinoutputFormatCombination e) {E.PrintStackTrace (); }} else {temppinying.append (src); } return temppinying.ToString (); } public static string hanzitopinyin (cadena Hanzi) {return hanzitopinyin (Hanzi, ""); } / ** * Convierta los caracteres chinos en Pinyin * * @param Hanzi * @param separator * @return * / @supplesswarnings ("deprecation") public static string hanzitopinyin (string hanzi, string separator) {// crea el procesamiento de pinyin de pinyin chino hanyupinyinoutformat foursatFormat = new hanyuPinyinoutFormat ();); // Configuración de salida, mayúscula, símbolo fonético defaultFormat.setCasetype (hanyupinyincasetype.lowercase); DefaultFormat.settoneType (hanyupinyInTonetype.without_tone); Cadena pinyings = ""; intente {pinyingstr = pinyinhelper.tohanyupinyinstring (hanzi, defaultformat, separator); } Catch (BadhanyupinyinoutputFormatCombination e) {E.PrintStackTrace (); } return PinyingStr; } / ** * Convierta una matriz de cadenas en una cadena * * @param str * @param separator * Separación entre cada cadena * * @return * / public static string stringArrayToString (string [] str, string separator) {stringBuffer sb = new StringBuffer (); para (int i = 0; i <str.length; i ++) {sb.append (str [i]); if (str.length! = (i + 1)) {sb.append (separador); }} return sb.ToString (); } / ** * Conecte cada matriz de caracteres * * * @param str * @return * / public static string stringArrayToString (string [] str) {return stringArrayToString (str, ""); } / ** * Convierta una matriz de caracteres en caracteres * * * @param str * @param separator * Separación entre cadenas individuales * * @return * / public static string charArrayToString (char [] ch, string separator) {stringBuffer sb = new StringBuffer (); para (int i = 0; i <ch.length; i ++) {sb.append (ch [i]); if (ch.length! = (i + 1)) {sb.append (separador); }} return sb.ToString (); } / ** * Convierta una matriz de caracteres en caracteres * * * @param str * @return * / public static string CharArrayToString (char [] ch) {return CharArrayToString (ch, ""); } / ** * Obtenga el primer carácter del personaje chino * * * * @param src * @param iscapital * ¿es grande * * @return * / public static char [] getheadbychar (char src, boolean iscapital) {// si no el carácter chino, devuelve directamente si (src <= 128) {return New Char [] {src}; } // La ortografía obtenida [] pinyings = pinyinhelper.tohanyupinyinstringarrray (src); // Crear un objeto de retorno int polyphonesize = pinyings.length; char [] lealchars = nuevo char [polyphonesize]; int i = 0; // interceptar la primera palabra para (cadena s: pinyings) {char lealchar = s.charat (0); // Si la primera letra está en mayúscula, el valor predeterminado es pequeño if (isCapital) {lealchars [i] = caracteres.ToUpperCase (lealchar); } else {lealchars [i] = lealchar; } i ++; } return Charchars; } / ** * El valor predeterminado para tomar la primera palabra para los caracteres chinos es grande * * @param src * @return * / public static char [] getheadbychar (char src) {return getheadbychar (src, true); } / ** * Encuentre la letra inicial de la cadena * * @param src * @return * / public static string [] getheadbytring (string src) {return getheadbystring (src, true); } / ** * Encuentre la letra inicial de la cadena * * @param src * @param iscapital * si está en mayúscula * @return * / public static string [] getheadbystring (string src, true); } / ** * Encuentre la letra inicial de la cadena * * @param src * @param iscapital * ¿está en mayúscula * @return * / public static string [] getheadbystring (string src, boolean iscapital) {return getheadbytring (src, iscapital, null); } / ** * Encuentre las iniciales de cadena * * @param src * @param iscapital * si capitalización * @param separator * separado * * @return * / public static string [] getheadbytring (string src, boolean iscapital, string separator) {char [] chars = src.tocharray (); Cadena [] Headsting = new String [chars.length]; int i = 0; para (char ch: chars) {char [] chs = getheadbychar (ch, iscapital); StringBuffer sb = new StringBuffer (); if (null! = separator) {int j = 1; para (char ch1: chs) {sb.append (ch1); if (j! = chs.length) {sb.append (separador); } j ++; }} else {sb.append (chs [0]); } tumba [i] = sb.ToString (); i ++; } return Headsting; }} La base de datos construye funciones relacionadas
Fristpinyin: esta función convierte el primer carácter chino de una cadena china en la primera letra del pinyin (por ejemplo: "ok"-> h)
Pinyin: esta función conecta cada una de las primeras letras de Pinyin de una cadena china (por ejemplo: "OK"-> HD)
to_pinyin: esta función conecta cada una de las letras completas de una cadena china correspondiente al pinyin (por ejemplo: "OK"-> Haode)
Crear función `Fristpinyin` (P_Name Varchar (255)) Devuelve Varchar (255) Charset UTF8 Begin declare v_return Varchar (255); Establecer v_return = elt (interval (conv (hex (izquierda (convert (p_name usando 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; FIN END CREATE Función `Pinyin` (P_Name Varchar (255)) Devuelve Varchar (255) Charset UTF8 Comenzar declare v_compare Varchar (255); Declarar v_return varchar (255); Declarar i int; Establecer i = 1; Establecer v_return = ''; mientras que i <longitud (p_name) establece v_compare = subStr (p_name, i, 1); If (v_compare! = '') Entonces #set v_return = concat (v_return, ',', v_compare); Establecer v_return = concat (v_return, fristpinyin (v_compare)); #Set v_return = fristpinyin (v_compare); Fin si; Establecer i = i + 1; terminar mientras; If (isnull (v_return) o v_return = '') luego establecer v_return = p_name; Fin si; Return v_return; FIN Crear function to_pinyin (nombre varchar (255) charset gbk) devuelve varchar (255) charset gbk comienza declarar mycode int; Declarar tmp_lcode varchar (2) charset gbk; Declarar lcode int; Declarar tmp_rcode varchar (2) charset gbk; Declarar rcode int; Declarar mypy varchar (255) charset gbk predeterminado ''; Declarar lp int; Establecer mycode = 0; Establecer lp = 1; Establecer nombre = hex (nombre); Mientras que LP <longitud (name) establece tmp_lcode = substring (nombre, lp, 2); Establecer lcode = Cast (ASCII (unhex (tmp_lcode)) como unsigned); Establecer tmp_rcode = sustring (nombre, lp + 2, 2); Establecer rcode = Cast (ASCII (Underx (tmp_rcode)) como sin firmar); Si lcode> 128 luego establece mycode = 65536 - lcode * 256 - rcode; Seleccione Concat (mypy, pin_yin_) en mypy desde t_base_pinyin donde code_> = abs (mycode) orden por code_ asc límite 1; Establecer lp = lp + 4; Else Set mypy = concat (mypy, char (cast (ascii (unhele (subcadena (nombre, lp, 2))) como sin firmar))); Establecer lp = lp + 2; Fin si; Terminar mientras; Regresar más bajo (mypy); FIN;
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.