前端界面html
搜索结果界面 (搜索软件专业学生)前端
搭建环境java
mysql中新建数据库,数据表(并设为主要工做表),导入csv文件mysql
基本思路git
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
jsp中链接数据库web
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/Scholarship?useUnicode=true&characterEncoding=utf-8" user="root" password="xxx"/> <c:set var="SiteId" value="3"/>
java代码提取查询字符串中的年份正则表达式
<%! /* 从字符串提取数字 */ public String getNumbers(String content) { Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(content); while (matcher.find()) { return matcher.group(0); } return ""; } %> <% request.setCharacterEncoding("utf-8"); String content = request.getParameter("content"); // 默认为查询当前年份 Calendar now = Calendar.getInstance(); int year=now.get(Calendar.YEAR); // 若指定年份,则提取查询字符串中的数字做为年份 String str_digit = getNumbers(content); if (str_digit.length()>0){ year = Integer.valueOf(str_digit); } // 去除查询字符串中的数字 content = content.replaceAll("\\d+", ""); %>
sql查询 获取到的前端搜索框中的关键字sql
<sql:query dataSource="${snapshot}" var="result"> <!-- request.getParameter获取搜索的关键字,名称要与html中定义的相同 SELECT * 表明选择数据表中全部rows WHERE XXX LIKE '%xxx%'为正则表达式中,起到contains的做用。 --> SELECT * FROM Scholarship.`<%=year %>` WHERE name LIKE '%<%=content %>%' OR type LIKE '%<%=content %>%' OR college LIKE '%<%=content %>%' ORDER BY id; </sql:query>
将查询结果以表格形式显示在界面上数据库
<table border="1" width="100%"> <tr> <th>序号</th> <th>院系</th> <th>姓名</th> <th>类别</th> </tr> <c:forEach var="row" items="${result.rows}" varStatus="status"> <!-- 表格隔行背景色变化,文字居中 status.count为循环计数值--> <tr <c:if test="${status.count%2==0}">bgcolor="#CCCCFF"</c:if> align="center"> <td><c:out value="${status.count}"></c:out></td> <td><c:out value="${row.college}"/></td> <td><c:out value="${row.name}"/></td> <td><c:out value="${row.type}"/></td> </tr> </c:forEach> </table>
到此,基本完成,接下来就是美化搜索结果界面以及接入学校数据库啦。apache