用JSP实现一个查询单词的网页
本文目的:实现一个查询单词的网页,能依据拼写、词性、难度范围等信息查出所需词汇的释义来。网页参照汉典的风格。要求建立大学四级、六级词汇表放到MYSQL数据库中,至少包括:单词、词性、释义、难度(标记是4级的还是6级还是其他)。能依据释义内容,模糊查出对应的单词。实现对单词表中a,b,c到z开头单词个数的统计,结果以表格输出到网页上。
1. 在MySQL数据库中建立数据表
用图形化管理工具Navicat Premium 连接MySQL数据库,在数据库“test”下建立一张名为“word”的数据表。
2.建立JSP文件
关于Tomcat的设置,前面文章有作介绍,这里不再赘述。我关于此网页的风格参照汉典,进入主页面后,先选择按照某种方式搜索(英文或汉语意思),如不选择,默认为输入英文进行搜索。建立4个搜索主页面的JSP文件,分别按照英文,汉语,词性,难度等级进行查询,查询时分别跳转到各自的查询结果表,再加上一个统计首字母单词个数的JSP文件。
1)Home.jsp文件
这是网页的主页面,默认是按照英文进行查询,另外三个查询的JSP文件于此类似,并且都有超链接可以相互跳转。
<%@ page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>查询单词主页</title>
</head>
<body style="background:url(http://img1.imgtn.bdimg.com/it/u=1680093947,1418848796&fm=200&gp=0.jpg) center;background-size:cover"><%--设置背景图片--%>
</br></br></br>
<form action="es.jsp" method="POST">
<table align="center">
<h1 style="text-align:center;font-size:50px">小白词典</h1>
<tr>
<td id="tm1">
<a title="按英文查询" href="http://localhost:8080/Home.jsp">按英文查询</a>
</td>
<td id="tm2">
<a title="按中文查询" href="http://localhost:8080/h2.jsp">按中文查询</a>
</td>
<td id="tm3">
<a title="按词性查询" href="http://localhost:8080/h3.jsp">按词性查询</a>
</td>
<td id="tm4">
<a title="按难度查询" href="http://localhost:8080/h4.jsp">按难度查询</a>
</td>
</table>
</tr>
<table align="center">
<tr>
</br>
<td><input type="text" name="english" size="30" placeholder="请输入英文进行查询"></td>
<th><input type="submit" value="搜索"></th>
</tr>
</table>
</form>
<form action="count.jsp" method="POST">
<table align="center">
<tr>
</br></br>
<td><input type="submit" value=" 统计首字母开头单词个数(A-Z)" ></td>
</tr>
</table>
</body>
</html>
网页的主页面如下图所示:
2)es.jsp
这是按照英文查询单词结果的JSP文件,另外三个查询结果JSP文件与此类似。
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@page import="java.sql.*" %>
<html>
<head>
<title >单词查询</title>
</head>
<body style="background:url(http://p0.so.qhimgs1.com/bdr/_240_/t01127c805d1f6209dc.jpg) center;background-size:cover">
<%
try {
Class.forName("com.mysql.jdbc.Driver"); 驱动程序名
String url = "jdbc:mysql://localhost:3306/test"; //数据库名
String username = "root"; //数据库用户名
String password = "123456"; //数据库用户密码
Connection conn = DriverManager.getConnection(url, username, password); //连接状态
if(conn != null){
out.print("数据库连接成功!");
out.print("<br />");
out.print("<br />");
%>
<table align="center" border="2">
<tr>
<td width="100" english="title">英文</td>
<td width="100" pos="title">词性</td>
<td width="100" chinese="title">中文</td>
<td width="100" grade="title">难度</td>
</tr>
<%
Statement stmt = null;
ResultSet rs = null;
String english =request.getParameter("english");
String sql = "SELECT * FROM word WHERE english like '%"+english+"%' "; //查询语句
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
out.print("查询结果:");
while (rs.next()) {%>
<tr>
<td width="100" ><%=rs.getString("english") %></td>
<td width="100" ><%=rs.getString("pos") %></td>
<td width="100"><%=rs.getString("chinese") %></td>
<td width="100"><%=rs.getString("grade") %></td>
</tr>
<%
}
}else{
out.print("连接失败!");
}
}catch (Exception e) {
e.printStackTrace();
out.print("数据库连接异常!");
}
%>
</table>
<h1 align="center" ><input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一页"> </h1>
</body>
</html>
3)count.jsp
这是统计从a到z首字母开头单词个数的JSP文件。
<%@ page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<html>
<head>
<title >单词统计</title>
</head>
<body style="background:url(http://p0.so.qhimgs1.com/bdr/_240_/t01127c805d1f6209dc.jpg) center;background-size:cover">
<%
try {
Class.forName("com.mysql.jdbc.Driver"); 驱动程序名
String url = "jdbc:mysql://localhost:3306/test"; //数据库名
String username = "root"; //数据库用户名
String password = "123456"; //数据库用户密码
Connection conn = DriverManager.getConnection(url, username, password); //连接状态
if(conn != null){
%>
<h2>首字母单词个数统计:</h2>
<table align="center" border="2">
<tr>
<td width="50" initial="title">首字母</td>
<td width="50" count(initial)="title">统计</td>
</tr>
<%
Statement stmt = null;
ResultSet rs = null;
String sql = "SELECT firstLetter,count(firstLetter) FROM word GROUP BY firstLetter;"; //查询语句
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {%>
<tr>
<td width="50"><%=rs.getString("firstLetter") %></td>
<td width="50"><%=rs.getString("count(firstLetter)") %></td>
</tr>
<%}
}else{
out.print("连接失败!");
}
}catch (Exception e) {
e.printStackTrace();
out.print("数据库连接异常!");
}
%>
</table>
<h1 align="center" ><input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回"> </h1>