一.准备工作
在做项目开始前,我们要配置好相关的Tomcat环境,各种依赖等等,然后如下图把要用到的文件创建好。
前端:(注意show在web文件夹下创建,不是WEB-INF)

后端:(一共5个文件)

数据库表格:

需要用到的工具类:
DBConnection:
public class DBConnection {
public static void main(String[] args) {
}
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC";
String user = "root";//用户名
String password = "2020";//密码
public Connection conn;
public DBConnection() {
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public void close() {
try {
this.conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
还有MysqlUtil的getJsonBySql方法,作用是根据传入的 SQL 查询语句和指定字段名,从数据库中查询数据,将查询结果封装成 ArrayList 后,再转换为 JSON 格式的字符串返回:
public static String getJsonBySql( String sql,String[] colums){
System.err.println("sql:" + sql);
ArrayList<String[]> result = new ArrayList<String[]>();
DBConnection db = new DBConnection();
try {
Statement stmt = (Statement) db.conn.createStatement();
ResultSet rs = (ResultSet) stmt.executeQuery(sql);
while(rs.next()){
String[] dataRow = new String[colums.length];
for( int i = 0; i < dataRow.length; i++ ) {
dataRow[i] = rs.getString( colums[i] );
}
result.add(dataRow);
}
rs.close();
db.close();
} catch (SQLException e) {
e.printStackTrace();
}
return listToJson(result,colums);
}
写在MysqlUtil即可。
二.前端
前端部分的CSS代码可以自由发挥。
首先在head部分写上jQuery的依赖,必须要写:
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
然后是主体部分:
<body onload="getPage()">
<button onclick="openInsertDiv()">添加</button>
<div id="inputDiv" class="OpenDiv">
用户名:<input type="text" id="username" placeholder="请输入用户名:"/><br/>
密码:<input type="text" id="password" placeholder="请输入密码:"/><br/>
性别:<input type="text" id="sex" placeholder="请输入性别:"/><br/>
年龄:<input type="text" id="age" placeholder="请输入年龄:"/><br/>
手机:<input type="text" id="phone" placeholder="请输入手机:"/><br/>
地址:<input type="text" id="address" placeholder="请输入地址:"/><br/>
<button onclick="insert()">保存</button>
</div>
<div id="show">这是数据展示</div>
<div id="page">
<button onclick="upPage()" style="float: left">上一页</button>
<div id="pageIndex" style="float: left;width: 20px;border: 1px solid #000">1</div>
<button onclick="downPage()" style="float: left">下一页</button>
<div id="pageNum" style="float: left;width: 55px;border:1px solid #000">共0页</div>
</div>
<div id="updateDiv" class="OpenDiv">
id:<input type="text" id="u_id" placeholder="请输入id:"/><br/>
用户名:<input type="text" id="u_username" placeholder="请输入用户名:"/><br/>
密码:<input type="text" id="u_password" placeholder="请输入密码:"/><br/>
性别:<input type="text" id="u_sex" placeholder="请输入性别:"/><br/>
年龄:<input type="text" id="u_age" placeholder="请输入年龄:"/><br/>
手机:<input type="text" id="u_phone" placeholder="请输入手机:"/><br/>
地址:<input type="text" id="u_address" placeholder="请输入地址:"/><br/>
<button onclick="update()">保存</button>
</div>
</body>
接下来在<script></script>里面完成对各种方法的实现:
添加弹窗方法:
function openInsertDiv(){
document.getElementById("inputDiv").style.display="block";
}
修改弹窗方法:
function openUpdateDiv(id,username,password,sex,age,phone,address){
document.getElementById("updateDiv").style.display="block";
$("#u_id").val(id);
$("#u_username").val(username);
$("#u_password").val(password);
$("#u_sex").val(sex);
$("#u_age").val(age);
$("#u_phone").val(phone);
$("#u_address").val(address);
}
get方法:
function get(){
var pageIndex = $("#pageIndex").html();
$.ajax({
type:"get",
url:"/1009Servlet/show",
data:{"pageIndex":pageIndex,"pageSize":"5"},
success:function (data){
console.log(data);
showData(data.data);
}
})
}
获取页数方法:
function getPage(){
$.ajax({
type:"get",
url:"/1009Servlet/getPage",
success:function (data){
console.log(data);
$("#pageNum").html("共"+data.page+"页");
get();
}
})
}
上一页方法:
function upPage(){
var pageIndex = $("#pageIndex").html();
if(pageIndex == 1){
alert("已经是第一页了");
return;
}
pageIndex--;
$("#pageIndex").html(pageIndex);
getPage();
}
下一页方法:
function downPage(){
var pageIndex = $("#pageIndex").html();
var pageNum = $("#pageNum").html();
pageNum = pageNum.substring(1,pageNum.length-1);
if(pageIndex == pageNum){
alert("已经是最后一页了");
return;
}
pageIndex++;
$("#pageIndex").html(pageIndex);
getPage();
}
添加方法:
function insert(){
document.getElementById("inputDiv").style.display="none";
var username = $("#username").val();
var password = $("#password").val();
var sex = $("#sex").val();
var age = $("#age").val();
var phone = $("#phone").val();
var address = $("#address").val();
$.ajax({
type:"post",
url:"/1009Servlet/insert",
data: {"username":username,"password":password,"sex":sex,"age":age,"phone":phone,"address":address},
success:function (data){
console.log(data);
getPage();
}
})
}
删除方法:
function del(id){
$.ajax({
type: "post",
url: "/1009Servlet/delete",
data:{"id":id},
success:function (data){
console.log(data);
getPage();
}
})
}
修改方法:
function update(){
document.getElementById("updateDiv").style.display="none";
var id = $("#u_id").val();
var username = $("#u_username").val();
var password = $("#u_password").val();
var sex = $("#u_sex").val();
var age = $("#u_age").val();
var phone = $("#u_phone").val();
var address = $("#u_address").val();
$.ajax({
type:"post",
url:"/1009Servlet/update",
data: {"id":id,"username":username,"password":password,"sex":sex,"age":age,"phone":phone,"address":address},
success:function (data){
console.log(data);
getPage();
}
})
}
展示方法:
function showData(data){
var html = "<table border='1'>";
html +="<tr>";
html +="<th>编号</th>";
html +="<th>姓名</th>";
html +="<th>密码</th>";
html +="<th>性别</th>";
html +="<th>年龄</th>";
html +="<th>手机</th>";
html +="<th>地址</th>";
html +="<th>操作</th>";
html +="</tr>";
for (var i = 0;i < data.length;i++){
html += "<tr>";
html += "<td>" + data[i].id + "</td>";
html += "<td>" + data[i].username + "</td>";
html += "<td>" + data[i].password + "</td>";
html += "<td>" + data[i].sex + "</td>";
html += "<td>" + data[i].age + "</td>";
html += "<td>" + data[i].phone + "</td>";
html += "<td>" + data[i].address + "</td>";
html += "<td>";
html += "<button onclick='openUpdateDiv("+data[i].id+",\""+data[i].username+"\",\""+data[i].password+"\",\""+data[i].sex+"\",\""+data[i].age+"\",\""+data[i].phone+"\",\""+data[i].address+"\")'>修改</button>"
html += "<button onclick='del("+data[i].id+")'>删除</button>";
html += "</td>";
html += "</tr>";
}
html += "</table>";
$("#show").empty().html(html);
}
三.后端
后端代码必写的三个要点
(1)继承HttpServlet
(2)写上WebServlet注解,且格式一定要正确
(3)一定实现doGet方法或doPost方法
WebServlet注解要写在类名上方,注意括号里要写“”和斜杠/。
首先来看ShowServlet类:
@WebServlet("/show")
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pageIndex = req.getParameter("pageIndex");
String pageSize = req.getParameter("pageSize");
int IntPageSize = Integer.parseInt(pageSize);
int IntPageIndex = Integer.parseInt(pageIndex);
String sql = "select * from user order by id asc limit "+IntPageSize+" offset "+(IntPageIndex-1)*IntPageSize;
String columns[] = {"id","username","password","sex","age","phone","address"};
String data = MysqlUtil.getJsonBySql(sql,columns);
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json");
resp.getWriter().append(data);
}
}
然后是GetCountServlet类:
@WebServlet("/getPage")
public class GetCountServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sql = "select count(*) from user ";
int count = MysqlUtil.getCount(sql);
int pageCount =0;
if(count % 5 ==0){
pageCount = count/5;
}else {
pageCount = count/5+1;
}
String data = "{\"code\":200,\"msg\":\"success\",\"page\":"+pageCount+"}";
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json");
resp.getWriter().append(data);
}
}
InsertServlet类:
@WebServlet("/insert")
public class InsertServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
String age = req.getParameter("age");
String phone = req.getParameter("phone");
String address = req.getParameter("address");
System.out.println(username+" "+password+" "+sex+" "+" "+age+" "+phone+" "+address);
String sql = "insert into user(Username,password,sex,age,phone,address) "
+"values('"+username+"','"+password+"','"+sex+"',"+age+",'"+phone+"','"+address+"')";
int count = MysqlUtil.add(sql);
String data = "";
if(count > 0){
data = "{\"code\":200,\"msg\":\"success\"}";
}else {
data = "{\"code\":999,\"msg\":\"error\"}";
}
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json");
resp.getWriter().append(data);
}
}
DeleteServlet类:
@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter("id");
System.out.println("id="+id);
String sql = "delete from user where id = "+id;
int count = MysqlUtil.del(sql);
String data = "";
if(count > 0){
data = "{\"code\":200,\"msg\":\"success\"}";
}else {
data = "{\"code\":999,\"msg\":\"error\"}";
}
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json");
resp.getWriter().append(data);
}
}
最后是UpdateServlet类:
@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter("id");
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
String age = req.getParameter("age");
String phone = req.getParameter("phone");
String address = req.getParameter("address");
System.out.println(id+" "+username+" "+password+" "+sex+" "+" "+age+" "+phone+" "+address);
String sql = "update user set username = '"+username+"',password = '"+password+"',sex = '"+sex+"',age = "+age+
" ,phone = '"+phone+"',address = '"+address+"' where id = "+id;
int count = MysqlUtil.update(sql);
String data = "";
if(count > 0){
data = "{\"code\":200,\"msg\":\"success\"}";
}else {
data = "{\"code\":999,\"msg\":\"error\"}";
}
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json");
resp.getWriter().append(data);
}
}
四.效果
实现完所以代码之后的效果如下(这里没有写上address):

7713

被折叠的 条评论
为什么被折叠?



