AJAX对数据库增删改查实例
前端代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX小实例</title>
<link href="artDialog/css/dialog.css" rel="stylesheet">
<style>
a:hover{
color:green;
cursor:pointer;
}
</style>
</head>
<body>
<input id="add" type="button" value="添加">
<table id="table" border="1">
<thead>
<tr><td>编号</td><td>姓名</td><td>性别</td><td>操作</td></tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
<!-- 添加 -->
<fieldset id="showdialog" style="display:none"><legend>添加信息</legend>
<form id="form1">
<label for="uname">用户名:</label><input id="uname" type="text" name="uname"><br/>
<label for="usex">性别:</label><select id="usex" name="usex"><option>男</option>
<option>女</option></select><br/>
<input id="addOneData" type="button" value="添加"><input id="updateOneData" type="button" value="修改"><input type="button" value="重置">
</form>
</fieldset>
</body>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<!-- artDialog的js文件 -->
<script type="text/javascript" src="artDialog/dist/dialog.js"></script>
<script type="text/javascript">
/* app:一个app对象 */
var app={
/* 数据源 */
bindData:function(){
$.post("TestUserControl?action=getAllUserInfo",{},function(data){
$("#tbody tr").remove();
$.each(data,function(index,obj){
var tr=$("<tr/>");
$("<td/>").html(obj.uid).appendTo(tr);
$("<td/>").html(obj.uname).appendTo(tr);
$("<td/>").html(obj.usex).appendTo(tr);
var aEdit=$("<a class='aEdit'>编辑<a/>").data("uid",obj.uid).data("user",obj);
var aDel=$("<a class='aDel'>删除</a>").data("uid",obj.uid).data("user",obj);
$("<td/>").append(aEdit).append(aDel).appendTo(tr);
$("#tbody").append(tr);
})
})
},
deleteData:function(){
var uid=$(this).data("uid");
if(!confirm("是否确定删除?")){
return false;
}
$.post("TestUserControl?action=deleteOne",{uid:uid},function(data){
alert(data.msg);
app.bindData();
})
},
/* 添加 */
dia:null,
showDialog:function(){
app.dia=dialog({
title:"详细信息",
modal:true,
backdropOpacity:0.4,
width:'500px',
height:'300px',
content:$("#showdialog")
});
app.dia.show();
},
addData:function(){
$.post("TestUserControl?action=addOneData",$("#form1").serialize(),function(data){
alert(data.msg);
app.bindData();
app.dia.close().remove();
})
},
/* 修改 */
user:null,
getUserInfo:function(){
app.user=$(this).data("user");
$("#uname").val(app.user.uname);
$("#usex").val(app.user.usex);
app.dia=dialog({
title:"详细信息",
modal:true,
backdropOpacity:0.4,
width:'500px',
height:'300px',
content:$("#showdialog")
});
app.dia.show();
},
updateOneData:function(){
app.user.uname=$("#uname").val();
app.user.usex=$("#usex").val();
$.post("TestUserControl?action=updateOneData",app.user,function(data){
alert(data.msg);
app.bindData();
app.dia.close().remove();
})
},
init:function(){
app.bindData();
$("#tbody").on("click",".aDel",app.deleteData);
$("#add").click(app.showDialog);
$("#addOneData").click(app.addData);
$("#tbody").on("click",".aEdit",app.getUserInfo);
$("#updateOneData").click(app.updateOneData);
}
}
app.init();
</script>
</html>
效果:

后台代码:
package controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.TestUserDao;
import vo.TestUser;
/**
* Servlet implementation class TestUserControl
*/
@WebServlet("/TestUserControl")
public class TestUserControl extends HttpServlet {
private static final long serialVersionUID = 1L;
private TestUserDao tudao=new TestUserDao();
/**
* Default constructor.
*/
public TestUserControl() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置相应编码以及响应json对象
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
String action=request.getParameter("action");
switch(action){
case"getAllUserInfo":
List<TestUser>list=tudao.getAllTestUser();
//向前台响应
response.getWriter().print(JsonUtils.Utils.toJson(list));
;break;
case"getone":;break;
case"deleteOne":
int uid=Integer.parseInt(request.getParameter("uid"));
tudao.delete(uid);
response.getWriter().print("{\"msg\":\"删除成功!\"}");
;break;
case"addOneData":
String uname=request.getParameter("uname");
String usex=request.getParameter("usex");
if(tudao.insert(new TestUser(uname,usex))>0){
response.getWriter().print("{\"msg\":\"添加成功!\"}");
}else{
response.getWriter().print("{\"msg\":\"添加失败!\"}");
};break;
case"updateOneData":
int uuid=Integer.parseInt(request.getParameter("uid"));
String uuname=request.getParameter("uname");
String uusex=request.getParameter("usex");
if(tudao.update(new TestUser(uuid,uuname,uusex))>0){
response.getWriter().print("{\"msg\":\"修改成功!\"}");
}else{
response.getWriter().print("{\"msg\":\"修改失败!\"}");
}
break;
default:;break;
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
心得:该例子采用了artDialog 框架以及采用了张果老师传授的封装数据的理念,在前端只对外只暴露一个方法,有效的保护了数据的安全性以及严谨性。
artDialog下载:http://aui.github.io/artDialog/
AJAX对数据库增删改查实例的更多相关文章
- Maven多模块项目+MVC框架+AJAX技术+layui分页对数据库增删改查实例
昨天刚入门Maven多模块项目,所以简单写了一个小测试,就是对数据库单表的增删改查,例子比较综合,写得哪里不妥还望大神赐教,感谢! 首先看一下项目结构: 可以看到,一个项目MavenEmployee里 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- yii2.0增删改查实例讲解
yii2.0增删改查实例讲解一.创建数据库文件. 创建表 CREATE TABLE `resource` ( `id` int(10) NOT NULL AUTO_INCREMENT, `textur ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
随机推荐
- 1构建个人博客--使用Hugo快速成型
概述 人在武汉,病毒肆虐. 隔离久了,有点闷,闲余时间找点事情做. 建个博客吧, 内容不重要,写不写也不那么要紧,目前水平也写不出什么有深度的东西. 但是这个姿势一定要优美, 过程一定要折腾. OK, ...
- 深入理解yield from语法
本文目录 为什么要使用协程 yield from的用法详解 为什么要使用yield from . 为什么要使用协程# 在上一篇中,我们从生成器的基本认识与使用,成功过渡到了协程. 但一定有许多人,只知 ...
- css中:link和@import的区别
两者都是外部引用css的方式.但是有一定的区别: 1. 从属关系:link是一个xhtml标签,除了加载css外,还可以定义 RSS.rel 连接属性等: @import属于css范畴,只能加载css ...
- frida的简单实用
一.环境 1.环境 1.手机运行服务端 2. 电脑端运行客户端3.进行端口转发 adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27 ...
- 一文带你解读:卷积神经网络自动判读胸部CT图像的机器学习原理
本文介绍了利用机器学习实现胸部CT扫描图像自动判读的任务,这对我来说是一个有趣的课题,因为它是我博士论文研究的重点.这篇文章的主要参考资料是我最近的预印本 “Machine-Learning-Base ...
- 简单认识并使用JavaScript【供后端人员作为了解】
JS(JavaScript)Web的脚本语言 脚本语言:无法独立执行,必须嵌入到其他语言当中结合使用 作用:控制页面特效展示 注:JavaScript没有访问系统的权限,并且JavaScript和Ja ...
- SpringMVC框架——原理及使用
核心组件 1. DispatcherServlet:前端控制器器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是Spring MVC 的核心模块. 2. Handler:处理器,完成具体的业务 ...
- volatile 手摸手带你解析
前言 volatile 是 Java 里的一个重要的指令,它是由 Java 虚拟机里提供的一个轻量级的同步机制.一个共享变量声明为 volatile 后,特别是在多线程操作时,正确使用 volatil ...
- jenkins-gitlab-harbor-ceph基于Kubernetes的CI/CD运用(二)
一张网图 因为我们使用了Docker in Docker技术,就是把jenkins部署在k8s里.jenkins master会动态创建slave pod,使用slave pod运行代码克隆,项目构建 ...
- HDU - 1503 最长公共子序列记录路径
题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...