用JSP实现一个查询四、六级单词的网页

学习任务要求:

  1. 建表:在MySQL数据库中建立一个四、六级词汇表,至少包含:单词、词性、释义、难度等内容。
  2. 参照金山、汉典、有道词典的风格建立一个查询单词的JSP网页。
  3. 反查功能:能依据释义内容,模糊查出对应的单词。
  4. 统计功能:实现对单词表中a,b,c到z开头单词个数的统计,结果以表格输出到网页上。
  5. 实践:在JSP网页中能根据拼写、词性、难度范围等信息查出所需词汇的释义。

一、在MySQL数据库中建立一张四、六级单词表

在这里,我们会用到前面所学的数据库的知识,运用图形化管理工具Navicat Premium 连接MySQL数据库,然后创建一个四、六级的单词数据表。

1.连接工作:

打开mysql的服务,打开计算机的管理服务选项。
2
打开并可进入数据库。
1

2.制作表格。

制作一张内含单词各个信息的表格。
3
将Navicat连接到数据库并创建与表格相匹配的表字段。
4
导入创建好的表格,具体操作如下:
6
导入表格后,显示的表格如下所示:
7

二、建立一个JSP查询网页。

1.Tomcat的设置。

在这里,我们将会用到Tomcat,关于Tomcat的设置与使用在前面文章有作介绍,在此不再赘述。
最开始,我们直接双击bin目录下的“startup.bat”, 确保Tomcat是启动状态。
8
也可以使用命令窗程序打开。
8
启动检测:启动服务后,打开任意一个浏览器,在地址栏中输入 localhost:8080 然后按回车。
如果弹出如下界面,表示tomcat安装成功并且启动起来了;
(注意:这里特别强调一下,冒号不能是中文状态下的,否则你会出错。)
9

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 ,网页的首页如下所示:
9
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>

查询实例:
11
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>

统计详情如下:
0

三、在JSP网页中进行单词查询

确保 Tomcat 服务器已启动的情况下, 在浏览器地址栏中输入查询单词的首页界面,在相应的框内输入查询要求,实际详情如下:

wz

猜你喜欢

转载自blog.csdn.net/qq_42446456/article/details/82532659