学习任务要求:
- 建表:在MySQL数据库中建立一个四、六级词汇表,至少包含:单词、词性、释义、难度等内容。
- 参照金山、汉典、有道词典的风格建立一个查询单词的JSP网页。
- 反查功能:能依据释义内容,模糊查出对应的单词。
- 统计功能:实现对单词表中a,b,c到z开头单词个数的统计,结果以表格输出到网页上。
- 实践:在JSP网页中能根据拼写、词性、难度范围等信息查出所需词汇的释义。
一、在MySQL数据库中建立一张四、六级单词表
在这里,我们会用到前面所学的数据库的知识,运用图形化管理工具Navicat Premium 连接MySQL数据库,然后创建一个四、六级的单词数据表。
1.连接工作:
打开mysql的服务,打开计算机的管理服务选项。
打开并可进入数据库。
2.制作表格。
制作一张内含单词各个信息的表格。
将Navicat连接到数据库并创建与表格相匹配的表字段。
导入创建好的表格,具体操作如下:
导入表格后,显示的表格如下所示:
二、建立一个JSP查询网页。
1.Tomcat的设置。
在这里,我们将会用到Tomcat,关于Tomcat的设置与使用在前面文章有作介绍,在此不再赘述。
最开始,我们直接双击bin目录下的“startup.bat”, 确保Tomcat是启动状态。
也可以使用命令窗程序打开。
启动检测:启动服务后,打开任意一个浏览器,在地址栏中输入 localhost:8080 然后按回车。
如果弹出如下界面,表示tomcat安装成功并且启动起来了;
(注意:这里特别强调一下,冒号不能是中文状态下的,否则你会出错。)
3.单词查询网页的建立。
要使得各个网页具有相应的查询功能,我们要使用编辑器编写代码。
1)Homepage.jsp文件
Homepage.jsp是仿照各个词典编写的主页面,每一个查询选项都会显示在上面,我们可以在上面进行选择。
代码如下:
<%@ page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %> <%--导入java.sql包--%>
<html>
<head>
<title>查询单词主页</title>
</head>
<body style="background:url(http://pic.90sjimg.com/back_pic/qk/back_origin_pic/00/02/33/5ab12b8f07e0fd50c2b81c67b6fa1616.jpg) center;background-size:cover"><%--设置背景图片--%>
</br></br></br>
<form action="search.jsp" method="POST"><%-- 使用post方法跳转至查询界面--%>
<table align="center">
<h1 style="text-align:center;font-size:50px">大唐词典</h1>
<tr>
<td>英文:</td>
<td><input type="text" name="english"></td>
</tr><tr>
<td>词性:</td>
<td><input type="text" name="pos"></td>
</tr><tr>
<td>中文:</td>
<td><input type="text" name="chinese"></td>
</tr><tr>
<td>难度:</td>
<td><input type="text" name="level"></td>
</tr><tr>
<th></th>
<th><input type="submit" value=" 查 询 "></th>
<th><input type="reset" value=" 重 置 "></th>
</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>
在浏览器地址栏中输入http://localhost:8080/homepage.jsp ,网页的首页如下所示:
2)search.jsp文件。
search.jsp功能是实现单词的英文、中文、词性、难度的多种查询。
代码如下:
<%@ page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<html>
<head>
<title >单词查询</title>
</head>
<body style="background:url(http://pic1.win4000.com/wallpaper/7/568a00d18aa49.jpg) center;background-size:cover">
<%
try {
Class.forName("com.mysql.jdbc.Driver"); ////驱动程序名
String url = "jdbc:MySQL://localhost:3306/wz?&useSSL=false&serverTimezone=UTC"; //数据库名
String username = "root"; //数据库用户名
String password = "965827"; //数据库用户密码
Connection conn = DriverManager.getConnection(url, username, password); //连接状态
if(conn != null){
out.print("数据库连接成功!");
%>
<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" level="title">难度</td>
</tr>
<%
Statement stmt = null;
ResultSet rs = null;
String english =request.getParameter("english");
String pos =request.getParameter("pos");
String ch =request.getParameter("chinese");
String chinese=new String(ch.getBytes("ISO-8859-1"),"UTF-8");
String level =request.getParameter("level");
String sql = "SELECT * FROM cet WHERE english like '%"+english+"%' and pos like '%"+pos+"%' and chinese like '%"+chinese+"%' and level like '%"+level+"%'";
//查询语句
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("level") %></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文件。
count.jsp是为了统计单词表中首字母从A到Z的单词的个数。
代码如下:
<%@ page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<html>
<head>
<title >单词统计</title>
</head>
<body style="background:url(http://img2.ph.126.net/C942k-cgL3y7qmbuk7YXaA==/3213318334229068571.jpg) center;background-size:cover">
<%
try {
Class.forName("com.mysql.jdbc.Driver"); ////驱动程序名
String url = "jdbc:MySQL://localhost:3306/wz?&useSSL=false&serverTimezone=UTC"; //数据库名
String username = "root"; //数据库用户名
String password = "965827"; //数据库用户密码
Connection conn = DriverManager.getConnection(url, username, password); //连接状态
if(conn != null){
out.print("数据库连接成功!"); %>
<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 initial,count(initial) FROM cet GROUP BY initial;"; //查询语句
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {%>
<tr>
<td width="50"><%=rs.getString("initial") %></td>
<td width="50"><%=rs.getString("count(initial)") %></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>
统计详情如下:
三、在JSP网页中进行单词查询
确保 Tomcat 服务器已启动的情况下, 在浏览器地址栏中输入查询单词的首页界面,在相应的框内输入查询要求,实际详情如下: