小学期布置了这样一项作业,要用JSP去写,虽然写得很简陋,但还是特地写一篇文章记录一下。
![7f55343cffb2949a8c64aabfb659925e.png](https://img-blog.csdnimg.cn/img_convert/7f55343cffb2949a8c64aabfb659925e.png)
![3a542411f1b70898456fe72d56bd9346.png](https://img-blog.csdnimg.cn/img_convert/3a542411f1b70898456fe72d56bd9346.png)
![f0eb801d2c602617c693176b6f68ac40.png](https://img-blog.csdnimg.cn/img_convert/f0eb801d2c602617c693176b6f68ac40.png)
类的设计是如下图:
![9a898bab0d90b8c05eb020b3b4583108.png](https://img-blog.csdnimg.cn/img_convert/9a898bab0d90b8c05eb020b3b4583108.png)
entity包中的Nationality类为每一行(每个民族)数据的封装,包含五个属性,构造方法与每个属性的get()和set()方法用以在JSP中使用EL表达式获取数据。
filter包中的Filter类实现了servlet的Filter接口,用来设置UTF-8编码防止显示时候的乱码情况。
repository包中的NationRepository类专门用来处理数据库中的数据(增删改查以及显示)。
util包中的JDBCTools类提供了两个静态方法。getConnection()用来获取一个connection对象,release方法用来释放connection、statement、resultSet资源。上述两个步骤在增删改查的时候都会用到,所以封装到类中减少代码重复。
util包中的RoundToTool类提供了一个静态方法myRound,用来将一个double类型的数四舍五入到小数点后两位。
servlet包中的Nationality类继承了HttpServlet类用于处理浏览器的GET和POST请求。
直接上代码
entity包中的Nationality类
package
servlet包中的Nationality类
package
Filter类
package
NationaRepository类:
package
JDBCTools类
package
RoundToTool类
package
add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>新增条目</title>
</head>
<body>
<form action="/nationality" method="post">
民族:<input type="text" name="name"><br/>
男性人口:<input type="text" name="mp"><br/>
女性人口:<input type="text" name="wp"><br/>
<input type="hidden" name="method" value="add">
<input type="submit" value="提交">
</form>
</body>
</html>
admin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>管理员登陆</title>
</head>
<body>
<form action="/nationality" method="get">
<h4>用户名:<input type="text" name="user" id="user"></h4>
<h4>密码:<input type="text" name="password" id="password"></h4>
<input type="submit" value="登陆" onclick="func()">
</form>
<script>
function func(){
var user = document.getElementById("user").value;
var password = document.getElementById("password").value;
if(user!="admin" || password!="123"){
alert("用户名或密码错误")
}
}
</script>
</body>
</html>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>各民族查询系统</title>
</head>
<body>
<h1>我国各民族人口构成网络查询系统</h1>
<hr>
<a href="/query.jsp?admin=false">查询</a>
<a href="admin.jsp">管理员登陆</a><br/>
<table border="1" cellspacing="0">
<tr>
<th>民族</th>
<th>男性人口</th>
<th>男性比重(%)</th>
<th>女性人口</th>
<th>女性比重(%)</th>
<th>男女性别比</th>
</tr>
<c:forEach items="${list}" var="nationality">
<tr>
<td>${nationality.name}</td>
<td>${nationality.mp}</td>
<td>${nationality.mr}</td>
<td>${nationality.wp}</td>
<td>${nationality.wr}</td>
<td>${nationality.mw}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
index2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>管理员界面</title>
</head>
<body>
<p>
<a href="add.jsp">新增条目</a>
<a href="/query.jsp?admin=true">查询</a>
<a href="/nationality">退出登录</a>
</p>
<table border="1" cellspacing="0">
<tr>
<th>民族</th>
<th>男性人口</th>
<th>男性比重(%)</th>
<th>女性人口</th>
<th>女性比重(%)</th>
<th>男女性别比</th>
</tr>
<tr>
<td>${list[0].name}</td>
<td>${list[0].mp}</td>
<td>${list[0].mr}</td>
<td>${list[0].wp}</td>
<td>${list[0].wr}</td>
<td>${list[0].mw}</td>
</tr>
<c:forEach items="${list}" var="nationality" begin="1">
<tr>
<td>${nationality.name}</td>
<td>${nationality.mp}</td>
<td>${nationality.mr}</td>
<td>${nationality.wp}</td>
<td>${nationality.wr}</td>
<td>${nationality.mw}</td>
<td>
<a href="/nationality?method=deleteByName&name=${nationality.name}">删除</a>
<a href="/nationality?method=findById&name=${nationality.name}">修改</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
query.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询界面</title>
</head>
<body>
<form action="/nationality" method="get">
请输入要查询的民族:<input type="text" name="name"><br/>
<input type="hidden" name="method" value="query">
<input type="hidden" name="admin" value="${param.admin}">
<input type="submit" value="提交">
</form>
</body>
</html>
showQuery.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询结果</title>
</head>
<body>
民族:<input type="text" value="${nationality.name}" id="name" readonly><br/>
男性人口:<input type="text" value="${nationality.mp}" readonly><br/>
男性比重:<input type="text" value="${nationality.mr}" readonly><br/>
女性人口:<input type="text" value="${nationality.wp}" readonly><br/>
女性比重:<input type="text" value="${nationality.wr}" readonly><br/>
男女性别比:<input type="text" value="${nationality.mw}" readonly><br/>
<a href="" id="links">回到主界面</a>
<script >
var name = document.getElementById("name").value;
if(name==""){
alert("未查询到相关内容!")
}
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
var admin = getQueryVariable("admin");
if(admin=="true"){
document.getElementById("links").href="/nationality?user=admin&password=123";
}
if(admin=="false"){
document.getElementById("links").href="/nationality";
}
</script >
</body>
</html>
update.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改条目</title>
</head>
<body>
<form action="/nationality" method="post">
民族:<input type="text" name="name" value="${nationality.name}" readonly><br/>
男性人口:<input type="text" name="mp" value="${nationality.mp}"><br/>
女性人口:<input type="text" name="wp" value="${nationality.wp}"><br/>
<input type="hidden" name="method" value="update">
<input type="submit" value="提交">
</form>
</body>
</html>