B045-jQuery案例实战BootStrap

news2025/2/8 9:15:54

目录

      • 一、BootStrap概述
      • 二、BootStrap使用
        • 1.起步
          • 1.下载或放入BootStrap文件到本地工程里
          • 2.在html代码中引入1个css文件和两个js文件
          • 3.复制模板代码到本地html文件里会自动应用成bootStrap图样中的效果
          • 0.实战案例-环境准备
          • 0.实战案例-基本模板
        • 2.布局容器
        • 3.栅格系统
        • 4.常用组件
          • 表格
          • 表单
      • 三、案例实战
        • 查询所有
          • 页面展示
          • 按钮展示与完成
        • 数据删除
          • 事件委托
          • 获取按钮 - 绑定事件 - 拿到入参 - 发送删除请求
          • 删完之后再清空和查询-即刷新
        • 添加数据
          • 逻辑流程
          • 准备模态框
          • 发送保存请求
          • 后台添加完成
          • 添加前端处理
        • 数据修改
          • 逻辑流程
          • 前端
          • 后端

一、BootStrap概述

jQuery本身不带样式,要自己设置,bootStrap有,可以直接看着选用,不用自己调来调去。相当于带有现成样式的前端组件库。
Bootstrap是最受欢迎的 HTML、CSS 和 JS 前端框架,用于开发响应式布局、移动设备优先的 WEB 项目

注意事项:
1.像百度、淘宝之类的大公司网页不使用响应式,而是独立开发一套手机页面
2.一般网站的交互很少,仅仅用于信息展示和获取以及点个赞什么的。需要写的兼容性代码很少,非常适合做成响应式

二、BootStrap使用

1.起步

1.下载或放入BootStrap文件到本地工程里
2.在html代码中引入1个css文件和两个js文件

中文网 - v3中文文档 - 起步 - 基本模板

<!DOCTYPE html>
<html>
  <head>
    <title>Bootstrap 101 Template</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="../../docs-assets/js/html5shiv.js"></script>
      <script src="../../docs-assets/js/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <h1>Hello, world!</h1>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="//code.jquery.com/jquery.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>
3.复制模板代码到本地html文件里会自动应用成bootStrap图样中的效果

全局CSS样式,组件,JS插件,

0.实战案例-环境准备

在这里插入图片描述

0.实战案例-基本模板
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <link href="/css/bootstrap.css" rel="stylesheet">
    <script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
    <script type="text/javascript" src="/js/bootstrap.js"></script>
    
  </head>
  <body>
    <h1>你好,世界!</h1>
  </body>
</html>

2.布局容器

table布局 - 不满足复杂的布局情况
div布局 - 麻烦

bootStrap版容器布局

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <link href="/css/bootstrap.css" rel="stylesheet">
    <script type="text/javascript" "/js/jquery-2.1.3.js"></script>
    <script type="text/javascript" src="/js/bootstrap.js"></script>
    
    <style type="text/css">
		.container{
			background: red
		}
		.container-fluid{
			background: green
		}
	</style>
	
  </head>
  <body>
	<div class="container">两端留空白</div><br>
	<div class="container-fluid">两端填充满</div>
  </body>
</html>

3.栅格系统

原理和应用见html文档和word文档,可根据不同尺寸屏幕做适应。
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>

<link href="/css/bootstrap.css" rel="stylesheet">
<script type="text/javascript""/js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>

	<style type="text/css">
		div {
			border: 1px solid red;
		}
	</style>

</head>
<body>
	<div class="container">
		<div class="row">
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
			<div class="col-md-1 col-sm-3 col-xs-4">.col-md-1</div>
		</div>
	</div>
</body>
</html>

4.常用组件

表格
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>Bootstrap 101 Template</title>
<!-- css样式 -->
<link href="/css/bootstrap.css" rel="stylesheet">
<!--   引入jquery 的js文件 -->
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<!--   引入bootstrap 的js文件    要在jquery的js文件下面 -->
<script type="text/javascript" src="/js/bootstrap.js"></script>
</head>
<body>
	<div class="container"><!-- 留边 -->
		<table class="table table-bordered table-hover"><!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>年龄</th>
				</tr>
			</thead>
			<tbody>
				<tr class="success">
					<td>111</td>
					<td>张三</td>
					<td></td>
					<td>20</td>
				</tr>
				<tr class="warning">
					<td>111</td>
					<td>张三</td>
					<td></td>
					<td>20</td>
				</tr>
				<tr class="danger">
					<td>111</td>
					<td>张三</td>
					<td></td>
					<td>20</td>
				</tr>
				<tr class="active">
					<td>111</td>
					<td>张三</td>
					<td></td>
					<td>20</td>
				</tr>
			</tbody>
		</table>
	</div>
</body>
</html>
表单
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>Bootstrap 101 Template</title>
<!-- css样式 -->
<link href="/css/bootstrap.css" rel="stylesheet">
<!--   引入jquery 的js文件 -->
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<!--   引入bootstrap 的js文件    要在jquery的js文件下面 -->
<script type="text/javascript" src="/js/bootstrap.js"></script>
	
</head>
<body>
	<div class="container"><!-- 留边 -->
		<form class="form-horizontal">
		  <div class="form-group">
		    <label for="username" class="col-sm-2 control-label">用户名</label>
		    <div class="col-sm-10">
		      <input type="text" class="form-control" id="username" placeholder="请输入用户名">
		    </div>
		  </div>
		  <div class="form-group">
		    <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
		    <div class="col-sm-10">
		      <input type="password" class="form-control" id="inputPassword3" placeholder="请输入密码">
		    </div>
		  </div>
		 
		  <div class="form-group">
		    <div class="col-sm-offset-2 col-sm-10">
		      <button type="submit" class="btn btn-default">提交</button>
		    </div>
		  </div>
		</form>
	</div>
</body>
</html>

三、案例实战

查询所有

页面加载完成后直接发异步请求拿数据
将数据放入新增的标签中

  <script type="text/javascript">
  	$(function(){
  		$.ajax({
  			type:"post",
  			url:"/emp/findAll",
  			success:function(msg){
  				console.debug(msg)
  			}
  		});
  	});
  </script>
	@RequestMapping("/findAll")
	@ResponseBody
	List<Emp> findAll(){
		return service.findAll();
	}
<select id="findAll" resultType="emp">
    select * from emp
</select>
页面展示
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
    <script type="text/javascript" src="/js/bootstrap.js"></script>
    <link href="/css/bootstrap.css" rel="stylesheet">
    
  </head>
  <body>
  	<div class="container">							<!-- 留边 -->
		<table class="table table-bordered ">		<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
	</div>
   <script type="text/javascript">
  	$(function(){
  		$.ajax({
  			type:"post",
  			url:"/emp/findAll",
  			success:function(msg){
  				//console.debug(msg)
  				$.each(msg,function(){                                                                                           var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>操作</td></tr>";
  	  				$("#tb").append(tr);
  				});
  			}
  		});
  	});
  </script>
  </body>
</html>
按钮展示与完成
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
    <script type="text/javascript" src="/js/bootstrap.js"></script>
    <link href="/css/bootstrap.css" rel="stylesheet">
    
  </head>
  <body>
  	<div class="container">							<!-- 留边 -->
		<table class="table table-bordered ">		<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作&nbsp&nbsp&nbsp
						<button class="btn btn-success btn-sm"><span class="glyphicon glyphicon-plus"></span>&nbsp添加</button>
					</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
	</div>
   <script type="text/javascript">
  	$(function(){
  		$.ajax({
  			type:"post",
  			url:"/emp/findAll",
  			success:function(msg){
  				//console.debug(msg)
  				$.each(msg,function(){
  					// 准备按钮
  	  				var btn = "<button class='btn btn-warning btn-sm'><span class='glyphicon glyphicon-trash'></span>&nbsp删除</button>&nbsp&nbsp"+
  	  							"<button class='btn btn-primary btn-sm'><span class='glyphicon glyphicon-wrench'></span>&nbsp修改</button>";
  					// 准备一个tr
  					var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>"+btn+"</td></tr>";
  					// 把tr放入tbody中
  					$("#tb").append(tr);
  				});
  			}
  		});
  	});
  </script>
  </body>
</html>

数据删除

事件委托
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>Bootstrap 101 Template</title>
<!-- css样式 -->
<link href="/css/bootstrap.css" rel="stylesheet">
<!--   引入jquery 的js文件 -->
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<!--   引入bootstrap 的js文件    要在jquery的js文件下面 -->
<script type="text/javascript" src="/js/bootstrap.js"></script>
</head>
<body>
	<input type="button" value="添加p元素" />
	<p>111</p>
	<p>222</p>
	<p>333</p>
	<script type="text/javascript">
		$(function() {
			$('input').click(function() {
				$('body').append('<p>新添加的p元素</p>');
			});

			/* $('p').on('click', function() {
				$(this).remove();
			}); */

			//与上面效果一样(如果不传选择器,就是普通的事件绑定,传了就是事件委托)
			 $('body').on('click', 'p', function() {
			// 委托给祖先类		由p标签来做
				$(this).remove();
			}); 
		});
	</script>
</body>
</html>
获取按钮 - 绑定事件 - 拿到入参 - 发送删除请求
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
	<div class="container">
		<!-- 留边 -->
		<table class="table table-bordered ">
			<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作&nbsp&nbsp&nbsp
						<button class="btn btn-success btn-sm">
							<span class="glyphicon glyphicon-plus"></span>&nbsp添加
						</button>
					</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
	</div>
	<script type="text/javascript">
  	$(function(){
  		$.ajax({
  			type:"post",
  			url:"/emp/findAll",
  			success:function(msg){
  				//console.debug(msg)
  				$.each(msg,function(){
  					// 准备按钮
  	  				var btn = "<button class='btn btn-warning btn-sm del'><span class='glyphicon glyphicon-trash'></span>&nbsp删除</button>&nbsp&nbsp"+
  	  							"<button class='btn btn-primary btn-sm'><span class='glyphicon glyphicon-wrench'></span>&nbsp修改</button>";
  					// 准备一个tr
  					var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>"+btn+"</td></tr>";
  					// 把tr放入tbody中
  					$("#tb").append(tr);
  				});
  			}
  		});
  	});
  	
  	// 删除,动态生成的元素,需要事件委托机制
  	$("tbody").on("click",".del",function(){
  		// 获取eid ->即请求入参
  		var eid = $(this).parent().parent().find("td:eq(0)").text();
  		// alert(eid)
  		// 发送删除请求
		$.ajax({
			type: "post",
			url: "/emp/delById",
			data:"eid="+eid,
			success: function(msg){
				console.debug(msg);
			}
		});
	});		
  	
  </script>
</body>
</html>
	@RequestMapping("/delById")
	@ResponseBody
	public String delById(Integer eid){

		try {
			service.delById(eid);
			return "ok";
		} catch (Exception e) {
			return e.getMessage();
		}
	}
<delete id="delById">
    delete from emp where eid = #{eid}
</delete>
删完之后再清空和查询-即刷新

封装查询所有方法—查询所有前先清空
删除成功就查询所有—即刷新

<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
	<div class="container">
		<!-- 留边 -->
		<table class="table table-bordered ">
			<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作&nbsp&nbsp&nbsp
						<button class="btn btn-success btn-sm">
							<span class="glyphicon glyphicon-plus"></span>&nbsp添加
						</button>
					</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
	</div>
	<script type="text/javascript">
	
		//封装查询所有
		function list(){
			// 清空数据
			$("#tb").empty();
			
			$.ajax({
	  			type:"post",
	  			url:"/emp/findAll",
	  			success:function(msg){
	  				//console.debug(msg)
	  				$.each(msg,function(){
	  					// 准备按钮
	  	  				var btn = "<button class='btn btn-warning btn-sm del'><span class='glyphicon glyphicon-trash'></span>&nbsp删除</button>&nbsp&nbsp"+
	  	  							"<button class='btn btn-primary btn-sm'><span class='glyphicon glyphicon-wrench'></span>&nbsp修改</button>";
	  					// 准备一个tr
	  					var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>"+btn+"</td></tr>";
	  					// 把tr放入tbody中
	  					$("#tb").append(tr);
	  				});
	  			}
	  		});
		}
		
		// 页面加载完发送查询所有的请求
	  	$(function(){
	  		list();
	  	});
  	
	  	// 删除,动态生成的元素,需要事件委托机制
	  	$("tbody").on("click",".del",function(){
	  		// 获取eid ->即请求入参
	  		var eid = $(this).parent().parent().find("td:eq(0)").text();
	  		// alert(eid)
	  		// 发送删除请求
			$.ajax({
				type: "post",
				url: "/emp/delById",
				data:"eid="+eid,
				success: function(msg){
					//console.debug(msg);
					if(msg.indexOf("ok")!=-1){
						// 查询所有,刷新
						list();
					}else{
						alert("删除失败");
					}
				}
			});
		});		
  	
  </script>
</body>
</html>

添加数据

逻辑流程

点击添加 - 出现模态框 - 填写表单 - 保存数据

准备模态框
<!-- 模态框  -->
<div id="saveModal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">添加数据</h4>
            </div>
            <div class="modal-body">

                <!-- 表单 -->
                <form class="form-horizontal" role="form">
                    <div class="form-group">
                        <label for="ename" class="col-sm-2 control-label">姓名</label>
                        <div class="col-sm-10">
                            <input type="text" name="ename" class="form-control" id="ename" placeholder="请输入姓名">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="sex" class="col-sm-2 control-label">性别</label>
                        <div class="col-sm-10">
                            <label class="radio-inline">
                                <input type="radio" name="sex" id="sex1" value=""></label>
                            <label class="checkbox-inline">
                                <input type="radio" name="sex" id="sex2" value=""></label>
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="adress" class="col-sm-2 control-label">地址</label>
                        <div class="col-sm-10">
                            <input type="text" name="adress" class="form-control" id="adress" placeholder="请输入地址">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="tel" class="col-sm-2 control-label">电话</label>
                        <div class="col-sm-10">
                            <input type="text" name="tel" class="form-control" id="tel" placeholder="请输入电话">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="card" class="col-sm-2 control-label">card</label>
                        <div class="col-sm-10">
                            <input type="text" name="card" class="form-control" id="card" placeholder="请输入卡号">
                        </div>
                    </div>
                </form>

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                <button type="button" class="btn btn-primary">保存</button>
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
发送保存请求
		// 添加
	  	$(".add").click(function(){
			// 清空模态框中的form表单   js的方法 reset()
			$("form")[0].reset();
			// 显示模态框
			$("#saveModal").modal("show");	
	  	})

		// 保存操作
		$("#save").click(function(){
			// 发送请求 保存操作
			$.ajax({
				type: "post",
				url: "/emp/save",
				data: $("form").serialize(), // 获取form中的数据
				success: function(msg){
					console.debug(msg);
				}
			});		
		});
后台添加完成
	@RequestMapping("/save")
	@ResponseBody
	public String save(Emp emp){

		try {
			service.add(emp);
			return "ok";
		} catch (Exception e) {
			return "no";
		}
	}
<insert id="add">
    insert into emp (ename,sex,address,tel,card)
    values(#{ename},#{sex},#{address},#{tel},#{card}) 
</insert>
添加前端处理
		// 添加
	  	$(".add").click(function(){
			// 清空模态框中的form表单   js的方法 reset()
			$("form")[0].reset();
			// 显示模态框
			$("#saveModal").modal("show");	
	  	})
	  	
	  	// 保存操作
		$("#save").click(function(){
			// 发送请求 保存操作
			$.ajax({
				type: "post",
				url: "/emp/save",
				data: $("form").serialize(), // 获取form中的数据
				success: function(msg){
					if(msg.indexOf("ok")!=-1){
						// 关闭模态框
						$("#saveModal").modal("hide");						
						// 查询所有,刷新
						list();
					}else{
						alert("保存失败");
					}
				}
			});		
		});

完整JSP

<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
	<div class="container">
		<!-- 留边 -->
		<table class="table table-bordered ">
			<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作&nbsp&nbsp&nbsp
						<button class="add btn btn-success btn-sm">
							<span class="glyphicon glyphicon-plus"></span>&nbsp添加
						</button>
					</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
		
		<!-- 模态框  -->
		<div id="saveModal" class="modal fade">
		  <div class="modal-dialog">
		    <div class="modal-content">
		      <div class="modal-header">
		        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
		        <h4 class="modal-title">添加数据</h4>
		      </div>
		      <div class="modal-body">
		      
		        <!-- 表单 -->
		        <form class="form-horizontal" role="form">
				  <div class="form-group">
				    <label for="ename" class="col-sm-2 control-label">姓名</label>
				    <div class="col-sm-10">
				      <input type="text" name="ename" class="form-control" id="ename" placeholder="请输入姓名">
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="sex" class="col-sm-2 control-label">性别</label>
				    <div class="col-sm-10">
				        <label class="radio-inline">
						  <input type="radio" name="sex" id="sex1" value=""></label>
						<label class="checkbox-inline">
						  <input type="radio" name="sex" id="sex2" value=""></label>
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="address" class="col-sm-2 control-label">地址</label>
				    <div class="col-sm-10">
				      <input type="text" name="address" class="form-control" id="address" placeholder="请输入地址">
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="tel" class="col-sm-2 control-label">电话</label>
				    <div class="col-sm-10">
				      <input type="text" name="tel" class="form-control" id="tel" placeholder="请输入电话">
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="card" class="col-sm-2 control-label">card</label>
				    <div class="col-sm-10">
				      <input type="text" name="card" class="form-control" id="card" placeholder="请输入卡号">
				    </div>
				  </div>
				</form>
				
		      </div>
		      <div class="modal-footer">
		        <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
		        <button type="button" id="save" class="btn btn-primary">保存</button>
		      </div>
		    </div><!-- /.modal-content -->
		  </div><!-- /.modal-dialog -->
		</div><!-- /.modal -->
		
	</div>
	<script type="text/javascript">
	
		//封装查询所有
		function list(){
			// 清空数据
			$("#tb").empty();
			
			$.ajax({
	  			type:"post",
	  			url:"/emp/findAll",
	  			success:function(msg){
	  				//console.debug(msg)
	  				$.each(msg,function(){
	  					// 准备按钮
	  	  				var btn = "<button class='btn btn-warning btn-sm del'><span class='glyphicon glyphicon-trash'></span>&nbsp删除</button>&nbsp&nbsp"+
	  	  							"<button class='btn btn-primary btn-sm'><span class='glyphicon glyphicon-wrench'></span>&nbsp修改</button>";
	  					// 准备一个tr
	  					var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>"+btn+"</td></tr>";
	  					// 把tr放入tbody中
	  					$("#tb").append(tr);
	  				});
	  			}
	  		});
		}
		
		// 页面加载完发送查询所有的请求
	  	$(function(){
	  		list();
	  	});
  	
	  	// 删除,动态生成的元素,需要事件委托机制
	  	$("tbody").on("click",".del",function(){
	  		// 获取eid ->即请求入参
	  		var eid = $(this).parent().parent().find("td:eq(0)").text();
	  		// alert(eid)
	  		// 发送删除请求
			$.ajax({
				type: "post",
				url: "/emp/delById",
				data:"eid="+eid,
				success: function(msg){
					//console.debug(msg);
					if(msg.indexOf("ok")!=-1){
						// 查询所有,刷新
						list();
					}else{
						alert("删除失败");
					}
				}
			});
		});	
	  	
	  	// 添加
	  	$(".add").click(function(){
			// 清空模态框中的form表单   js的方法 reset()
			$("form")[0].reset();
			// 显示模态框
			$("#saveModal").modal("show");	
	  	})
	  	
	  	// 保存操作
		$("#save").click(function(){
			// 发送请求 保存操作
			$.ajax({
				type: "post",
				url: "/emp/save",
				data: $("form").serialize(), // 获取form中的数据
				success: function(msg){
					if(msg.indexOf("ok")!=-1){
						// 关闭模态框
						$("#saveModal").modal("hide");						
						// 查询所有,刷新
						list();
					}else{
						alert("保存失败");
					}
				}
			});		
		});
  	
  </script>
</body>
</html>

数据修改

逻辑流程

点击修改绑定事件展示模态框,
回显数据(模态框添加eid隐藏域input框 单选框的值回显),
修改,
发送修改请求,
拿到数据刷新,
添加里清空隐藏域id

前端
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<script type="text/javascript" src="/js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
	<div class="container">
		<!-- 留边 -->
		<table class="table table-bordered ">
			<!-- 带边框的表格 -->
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>性别</th>
					<th>地址</th>
					<th>电话</th>
					<th>卡号</th>
					<th>操作&nbsp&nbsp&nbsp
						<button class="add btn btn-success btn-sm">
							<span class="glyphicon glyphicon-plus"></span>&nbsp添加
						</button>
					</th>
				</tr>
			</thead>
			<tbody id="tb">
			</tbody>
		</table>
		
		<!-- 模态框  -->
		<div id="saveModal" class="modal fade">
		  <div class="modal-dialog">
		    <div class="modal-content">
		      <div class="modal-header">
		        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
		        <h4 class="modal-title">添加或修改数据</h4>
		      </div>
		      <div class="modal-body">
		      
		        <!-- 表单 -->
		        <form class="form-horizontal" role="form">
				  <div class="form-group">
				    <label for="ename" class="col-sm-2 control-label">姓名</label>
				    <div class="col-sm-10">
				      <input type="text" name="ename" class="form-control" id="ename" placeholder="请输入姓名">
				      <input type="hidden" name="eid" id="eid" />
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="sex" class="col-sm-2 control-label">性别</label>
				    <div class="col-sm-10">
				        <label class="radio-inline">
						  <input type="radio" name="sex" id="sex1" value=""></label>
						<label class="checkbox-inline">
						  <input type="radio" name="sex" id="sex2" value=""></label>
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="address" class="col-sm-2 control-label">地址</label>
				    <div class="col-sm-10">
				      <input type="text" name="address" class="form-control" id="address" placeholder="请输入地址">
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="tel" class="col-sm-2 control-label">电话</label>
				    <div class="col-sm-10">
				      <input type="text" name="tel" class="form-control" id="tel" placeholder="请输入电话">
				    </div>
				  </div>
				  <div class="form-group">
				    <label for="card" class="col-sm-2 control-label">card</label>
				    <div class="col-sm-10">
				      <input type="text" name="card" class="form-control" id="card" placeholder="请输入卡号">
				    </div>
				  </div>
				</form>
				
		      </div>
		      <div class="modal-footer">
		        <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
		        <button type="button" id="save" class="btn btn-primary">保存</button>
		      </div>
		    </div><!-- /.modal-content -->
		  </div><!-- /.modal-dialog -->
		</div><!-- /.modal -->
		
	</div>
	<script type="text/javascript">
	
		//封装查询所有
		function list(){
			// 清空数据
			$("#tb").empty();
			
			$.ajax({
	  			type:"post",
	  			url:"/emp/findAll",
	  			success:function(msg){
	  				//console.debug(msg)
	  				$.each(msg,function(){
	  					// 准备按钮
	  	  				var btn = "<button class='btn btn-warning btn-sm del'><span class='glyphicon glyphicon-trash'></span>&nbsp删除</button>&nbsp&nbsp"+
	  	  							"<button class='btn btn-primary btn-sm update'><span class='glyphicon glyphicon-wrench'></span>&nbsp修改</button>";
	  					// 准备一个tr
	  					var tr="<tr class='success'><td>"+this.eid+"</td><td>"+this.ename+"</td><td>"+this.sex+"</td><td>"+this.address+"</td><td>"+this.tel+"</td><td>"+this.card+"</td><td>"+btn+"</td></tr>";
	  					// 把tr放入tbody中
	  					$("#tb").append(tr);
	  				});
	  			}
	  		});
		}
		
		// 页面加载完发送查询所有的请求
	  	$(function(){
	  		list();
	  	});
  	
	  	// 删除,动态生成的元素,需要事件委托机制
	  	$("tbody").on("click",".del",function(){
	  		// 获取eid ->即请求入参
	  		var eid = $(this).parent().parent().find("td:eq(0)").text();
	  		// alert(eid)
	  		// 发送删除请求
			$.ajax({
				type: "post",
				url: "/emp/delById",
				data:"eid="+eid,
				success: function(msg){
					//console.debug(msg);
					if(msg.indexOf("ok")!=-1){
						// 查询所有,刷新
						list();
					}else{
						alert("删除失败");
					}
				}
			});
		});	
	  	
	  	// 添加
	  	$(".add").click(function(){
			// 清空模态框中的form表单   js的方法 reset()
			$("form")[0].reset();
			// 清空隐藏域的eid
			$("#eid").val("");
			// 显示模态框
			$("#saveModal").modal("show");	
	  	})
	  	
	  	// 修改
		// 绑定点击事件  事件委托机制
		$("tbody").on("click",".update",function(){
			// 回显数据    -- 
			// 获取数据
			// 获取id
			var eid = $(this).parent().parent().find("td:eq(0)").text();
			var ename = $(this).parent().parent().find("td:eq(1)").text();// 姓名
			var sex = $(this).parent().parent().find("td:eq(2)").text(); // 性别
			var address = $(this).parent().parent().find("td:eq(3)").text();//  地址
			var tel = $(this).parent().parent().find("td:eq(4)").text();// 电话
			var card = $(this).parent().parent().find("td:eq(5)").text(); //卡号
			
			// 把数据放入form中数据回显
			$("#ename").val(ename);
			$("#sex1,#sex2").val([sex]);	// 也可判断后分别赋值
			$("#address").val(address);
			$("#tel").val(tel);
			$("#card").val(card);
			$("#eid").val(eid);
				
			// 模态框展示
			$("#saveModal").modal("show");
		})
	  	
	  	// 保存操作 添加与修改都走这里
		$("#save").click(function(){
			// 发送请求 保存操作
			$.ajax({
				type: "post",
				url: "/emp/save",
				data: $("form").serialize(), // 获取form中的数据
				success: function(msg){
					if(msg.indexOf("ok")!=-1){
						// 关闭模态框
						$("#saveModal").modal("hide");						
						// 查询所有,刷新
						list();
					}else{
						alert("保存失败");
					}
				}
			});		
		});
  	
  </script>
</body>
</html>
后端
	@RequestMapping("/save")
	@ResponseBody
	public String save(Emp emp){

		try {
			if (emp.getEid()==null) {
				service.add(emp);
			}else{
				service.update(emp);
			}
			
			return "ok";
		} catch (Exception e) {
			return "no";
		}
	}
<update id="update">
    update emp set ename=#{ename},sex=#{sex},address=#{address},tel=#{tel},card=#{card}
    where eid=#{eid}
</update>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts里type为custom,自定义配置renderItem为柱状形状

echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 主要功能&#xff1a;文本超过柱状形状就隐藏否则就显示&#xff0c;…

风口上的AIGC,技术人才动不动就年薪百万?

2023年&#xff0c;职场人都在讨论什么&#xff1f; 自今年3月以来&#xff0c;随着ChatGPT应用持续走俏&#xff0c;AIGC领域抢人大战盛况空前。随之而来的便是“AI取代人类”“10亿打工人被革命”&#xff0c;AI的发展速度和步伐&#xff0c;超乎我们预期&#xff0c;也影响…

MySQL - 第0节 - MySQL在Centos 7环境安装

1.安装前说明 • 安装与卸载过程中&#xff0c;用户全部切换成为root&#xff0c;一旦安装&#xff0c;普通用户也能够使用。 • 初期练习&#xff0c;mysql不进行用户管理&#xff0c;全部使用root进行&#xff0c;后面学了用户管理&#xff0c;再考虑新建普通用户。 注&#…

互联网医院资质申请条件|互联网医院申请流程

互联网医院是医疗行业应用互联网技术的一种创新形态&#xff0c;它为患者提供便捷的医疗服务&#xff0c;改善了医疗资源的不足和分散情况。在中国&#xff0c;互联网医院的发展也越来越受到重视&#xff0c;互联网医院牌照的申请流程和需要的资料也成为了关注的焦点。 一、互…

SpringCloud 中各微服务使用 springcloud-config 获取配置文件时,配置信息无法实时刷新

文章目录 1、引入actuator监控2、修改 yml3、添加注解 RefreshScope4、业务操作5、发送通知&#xff0c;即可生效6、思考 使用 springcloud-config 作为 服务配置 管理时&#xff0c; 当对 git 上的配置进行修改后&#xff0c; 各微服务客户端 配置无法 实时刷新&#xff0c;需…

【Flutter】Flutter 切换语言 当前页面不刷新

文章目录 一、前言二、Flutter 多语言支持的基础知识三、如何在 Flutter 中设置语言四、如何在 Flutter 中切换语言五、代码示例六、完整代码七、总结 一、前言 大家好&#xff0c;今天我们要探讨的主题是如何在 Flutter 中切换语言&#xff0c;而不需要刷新当前页面。这是一个…

vue-element-admin - 最新完美解决项目是英文的问题,将英文变成中文的汉化处理详细教程(克隆完项目后不是中文的解决方法)

前言 网上的教程(并且都是好几年前的了)克隆运行后界面文字全都是英文的,如果您想要中文汉语版本请使用本文的方案。 本文 解决了克隆运行 vue-element-admin 项目后,默认是英文的问题!将语言设置为中文的详细教程! 官方文档说的很晦涩,您可以按照本教程步骤进行操作即…

log4j配置说明

目录&#xff1a; 1、 引入jar包使用 2、 使用 3、 配置文件 4、 配置 5、 说明 说明&#xff1a;2015年9月&#xff0c;Apache软件基金业宣布&#xff0c;Log4j不在维护&#xff0c;建议所有相关项目升级到Log4j2。 1.引入jar包使用 <dependency><groupI…

vscode 调试

目录 准备 GDB 调试方法 问题 准备 然后点击 文件-打开文件夹&#xff0c;找到创建的代码路径&#xff0c;确定后&#xff0c;在左侧的资源管理器可以看到代码文件。 第一次运行需要安装 c 的扩展&#xff0c;在扩展页面中&#xff0c;安装 C/C 编译注意一定要加上 -g 指令…

SpringBoot项目配置方式及优先级

说明&#xff1a;SpringBoot支持以下五种方式配置方式&#xff0c;例如将项目的Tomcat端口从8080&#xff0c;更改为9000&#xff0c;可以使用如下方式配置 【方式一】命令行参数 在启动窗口&#xff0c;鼠标右键&#xff0c;选择“Edit Configurations”&#xff0c;在弹出来…

开会糟透了?试试无声会议吧

引言 无声会议(Silent Meeting) 是一种已被成功实践但却鲜有公开资料的开会方法&#xff0c;本文会探寻下它的有趣历史&#xff0c;并介绍如何通过它的小小改变让会议变得不再糟糕。 文档是无声会议的核心基础&#xff0c;本文会引出 Coda 和 Mojidoc(妙记多) 这两款让你的会…

泛微数字化国有资产管理平台,以智能增效能

2021年国务院发布的《行政事业性国有资产管理条例》中要求应当建立健全行政事业性国有资产管理机制&#xff0c;加强对本级行政事业性国有资产的管理。 随着数字化转型的深入&#xff0c;越来越多的行政事业单位、国有企业运用数字化的理念、思路、方法&#xff0c;以智能增效…

AI工具助力创意与写作:19岁小伙每月赚3万,学会这些你也能轻松做到!

导语&#xff1a;在数字时代&#xff0c;人工智能为我们提供了许多创新的工具和资源&#xff0c;助力我们在各个领域实现创意和写作的目标。本文将介绍五款热门的AI工具&#xff1a;Copyai、Flikiai、Notion、TomeAl和Writesonic&#xff0c;它们分别在写作、视频配音、文本编辑…

Java调用Midjourney进行AI画图原生版抓包实现支持中文

用途介绍 Midjourney是一个目前优秀的AI画图工具&#xff0c;不挂梯无法直接访问 本代码主要用于搭建镜像站使用 适合人群 本代码不适合新手&#xff0c;建议使用过okhttp、且具有二开能力的同学使用~ 实现原理 通过调用发送信息接口发送请求&#xff0c;通过轮询房间消息…

【2023最全教程】Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目…

Spring @Autowired注入太坤肋了 我们自己写一个

1、 背景 众所周知该注解是Spring中用于依赖注入的注解&#xff0c;但是该注解只是简单根据类型的注入&#xff0c; 并且如果该类型存在多个实现类的情况下无法抉择具体哪一个实现类就会抛出错误&#xff0c;除非搭配Qualifier注解然后使用硬编码的方式去指定Bean的名字去抉择…

8年测试岗总结,软件测试常见面试题+答案,轻松避坑...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、介绍一下测试流…

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…

Redis高级篇—分布式缓存 持久化 主从 哨兵 分片

分布式缓存 -- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 0.学习目标 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化 AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&a…

jetBrian_工具的使用

文章目录 Intellij IDEA新建一个IDEA项目新建Project - ClassJDK相关设置out目录和编译版本 详细设置&#xff08;感觉有用的设置&#xff09;打开是否选择项目取消自动更新设置整体主题设置菜单和窗口字体和大小设置IDEA背景图设置编辑器主题样式注释的字体颜色代码智能提示功…