首先还是要连接一下什么是Rest, REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想,

什么是restful?

符合rest 规范和设计风格的程序 就是restful
按照rest 规范 设计一个针对 id 是 2 的银行账户做一个设计

/account/2 get 获取id=2的银行账户
/account/2 post 增加id=2 的银行账户
/account/2 delete 删除id=2 的银行账户
/account/2 put 修改id=2 的银行账户

好了,话不多说了,直接从搭建架构开始一步一步搭建 Rest架构下的增删改查

首先导入各种dao,aop,ioc,mvc,json,数据库连接的jar包

web.xml

 <servlet>
<!--配置请求的入口 -->
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- [配置初始化参数 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet> <!-- 配置映射 -->
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern><!-- 由于使用rest架构,没有后缀名,就直接拦截所有的 -->
</servlet-mapping>

applicationContext.xml

  <!--开启组件扫描 -->
<context:component-scan base-package="cn.com"></context:component-scan>
<!-- 开启mvc标注 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 配置视图处理器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <!-- 配置一个数据源对象 也叫 连接池对象 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="url">
<value>jdbc:oracle:thin:@127.0.0.1::xe</value>
</property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>
<!-- 定义一个模板对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg index="" ref="dataSource"></constructor-arg>
</bean> <!-- 配置文件解析器 --><!-- 暂时没神魔用 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
<!-- 配置 对所有静态资源放行 -->
<mvc:default-servlet-handler/>

首先还是写一个接口:

 public interface BankAccountDao {

     int insertAccount(BankAccountModel ba);//添加

     int deleteAccount(int id);//删除

     BankAccountModel selectByID(int id);//按照ID查询

     int updateAccount(BankAccountModel acc);//更新
}

写实现类:

 @Repository("bankDao")//dao层注解,用于装载组件,绝不可以大意,
public class BankAccountDaoIMP implements BankAccountDao { @Autowired//自动装配
public JdbcTemplate jdbc; @Override
public int insertAccount(BankAccountModel ba) {
String sql = "insert into XDL_BANK_ACCOUNT values (?,?,?,?)";
try {
return jdbc.update(sql, ba.getId(), ba.getAcc_no(), ba.getAcc_password(), ba.getAcc_money());
} catch (Exception e) {
e.printStackTrace();
}
return 0;
} @Override
public int deleteAccount(int id) {
String sql="delete from XDL_BANK_ACCOUNT where id=?";
return jdbc.update(sql,id);
} @Override
public BankAccountModel selectByID(int id) {
String sql="select * from XDL_BANK_ACCOUNT where id=?"; try {
return jdbc.queryForObject(sql, new BankAccountMap(),id);
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} @Override
public int updateAccount(BankAccountModel acc) {
String sql="update XDL_BANK_ACCOUNT set acc_no = ?,acc_password = ?,acc_money = ? where id=?";
try {
return jdbc.update(sql, acc.getAcc_no(),acc.getAcc_password(),acc.getAcc_money(),acc.getId());
} catch (DataAccessException e) {
e.printStackTrace();
}
return 0;
}

写service服务类

 @Service("BankService")//service层的标注
public class BankAccountService {
@Autowired
private BankAccountDao bankDao;
/*添加用户*/
public int register(BankAccountModel ba) {
return bankDao.insertAccount(ba);
}
/*删除用户*/
public boolean remove(int id) {
return bankDao.deleteAccount(id)==0?false:true;
}
/*查找用户*/
public BankAccountModel accountByID(int id){
return bankDao.selectByID(id);
}
/*更新用户*/
public boolean updateByID(BankAccountModel acc){
return bankDao.updateAccount(acc)==0?false:true;
} }

然后就是Controller啦

@RequestMapping("/toAccount.do")
public String toAccount() {
return "account";//直接去account.jsp页面
}

在然后写一个html前端页面

<script src="${pageContext.request.contextPath }/js/jquery2.1.4.js" type="text/javascript"></script>
<script type="text/javascript">
//添加用户
function addAccount(){
//alert();
var id=$("#id").val();
var acc_no=$("#acc_no").val();
var acc_password=$("#acc_password").val();
var acc_money=$("#acc_money").val();
$.ajax({
url:"/Spring-MVC-Day07/account/"+id,
type:"post",
success:function(data){
alert(data);
if(data){
$("#sp1").html("注册成功!");
}else{
$("#sp1").html("注册失败!");
}
},
data:{
id:id,
acc_no:acc_no,
acc_password:acc_password,
acc_money:acc_money
}
});
}
//删除用户
function deleteAccount(){
var id=$("#id").val();
$.ajax({
url:"/Spring-MVC-Day07/account/"+id,
type:"delete",
success:function(data){
alert(data);
if(data){
$("#sp1").html("删除成功!");
}else{
$("#sp1").html("删除失败!");
}
}
});
}
//查询用户
function getAccountByID(){
var id=$("#id").val();
$.ajax({
url:"/Spring-MVC-Day07/account/"+id,
type:"get",
success:function(data){
$("#id").val(data.id);
$("#acc_no").val(data.acc_no);
$("#acc_password").val(data.acc_password);
$("#acc_money").val(data.acc_money);
}
});
}
//更新用户
function updateAccount(){
var id=$("#id").val();
var acc_no=$("#acc_no").val();
var acc_password=$("#acc_password").val();
var acc_money=$("#acc_money").val();
$.ajax({
url:"/Spring-MVC-Day07/account/"+id,
type:"put",
success:function(data){
alert(data);
if(data){
$("#sp1").html("更新成功!");
}else{
$("#sp1").html("更新失败!");
}
},
data:JSON.stringify({
id:id,
acc_no:acc_no,
acc_password:acc_password,
acc_money:acc_money
}),//将json字符串转换为json对象
contentType:"application/json"
});
} </script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <form action="">
id<input type="text" id="id"><br>
acc_no<input type="text" id="acc_no"><br>
acc_password<input type="text" id="acc_password"><br>
acc_money<input type="text" id="acc_money"><br>
<input type="button" value="增加" onclick="addAccount()"><br>
<input type="button" value="删除用户" onclick="deleteAccount()"><br>
<input type="button" value="查询单个用户" onclick="getAccountByID()"><br>
<input type="button" value="更新按钮" onclick="updateAccount()"><br>
<span id="sp1"></span>
</form>
</body>
</html>

其中,用户需要更新数据时,使用ajax传递值时,data中的值必须使用JSON.stringify()将其系列化,Controller那边才能使用

public boolean updateAccount(@RequestBody BankAccountModel ba,@PathVariable("id") int id){}接受到值

差点忘记Mapping

public class BankAccountMap implements RowMapper<BankAccountModel> {
/**
* 把结果集转换成对象 index:到了第几行
*/
@Override
public BankAccountModel mapRow(ResultSet rs, int index) throws SQLException { return new BankAccountModel(rs.getInt("id"), rs.getString("aCC_NO"),
rs.getString("aCC_PASSWORD"), rs.getDouble("aCC_MONEY"));
} }

Rest架构下的增删改查的更多相关文章

  1. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  2. MyBatis项目配置案例详解与Web下的增删改查实现[附项目源码]

    MyBatis项目案例 项目图示: 项目源码地址:https://github.com/JluTiger/mybatispro 1.项目功能 项目案例:后台管理系统用户数据维护平台 所有用户数据查询 ...

  3. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...

  4. BootstrapTable+KnockoutJS实现增删改查解决方案

    BootstrapTable+KnockoutJS实现增删改查解决方案 前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一 ...

  5. mysql8 mongodb4 增删改查 性能对比,2019 最专业对比,nosql 真的比 sql 性能强很多?

    原文:mysql8 mongodb4 增删改查 性能对比,2019 最专业对比,nosql 真的比 sql 性能强很多? 版权所有:http://www.fengyunxiao.cn 近几年看了很多关 ...

  6. 手把手教你基于koa2,mongoose实现增删改查

    初始化项目 npm init -y 先安装一波乱七八糟的依赖插件(需要具备一定的koa2知识,至于mongoDB自行百度安装教程),模板引擎我使用的是art-template(据说是性能最好的,而且是 ...

  7. MVC项目实践,在三层架构下实现SportsStore-11,使用Knockout实现增删改查

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  8. 设置Sql server用户对表、视图、存储过程、架构的增删改查权限

    根据数据库Schema限制用户对数据库的操作行为 授予Shema dbo下对象的定义权限给某个用户(也就是说该用户可以修改架构dbo下所有表/视图/存储过程/函数的结构) use [Your DB N ...

  9. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

随机推荐

  1. 数据库路由中间件MyCat - 源代码篇(4)

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2. 前端连接建立与认证 Title:MySql连接建立以及认证过程client->MySql:1.T ...

  2. 【题解】 BZOJ4548 小奇的糖果

    本文同步在学弟ZCDHJ的个人博客发布,审核需要一段时间. 传送门 考虑题目中获得的糖果并不包含所有的颜色这句话,发现相当于我们可以直接选取某一个颜色强制不能选(这样子一定最优). 然后就可以考虑分开 ...

  3. RabbitMq初探——消息持久化

    消息持久化 前言 通过上一节,我们知道,有消息确认机制,保证了当消费者进程挂掉后,消息的不丢失. 但是如果rabbitmq挂掉呢?它的队列和消息都会丢失的.为了保证消息在rabbitmq挂掉重启后不丢 ...

  4. 深入了解java虚拟机(JVM) 第十三章 虚拟机字节码执行引擎

    一.概述 执行引擎是java虚拟机最核心的组成部件之一.虚拟机的执行引擎由自己实现,所以可以自行定制指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式.所有的Java虚拟机的执行 ...

  5. 基于聚类的“图像分割”(python)

    基于聚类的“图像分割” 参考网站: https://zhuanlan.zhihu.com/p/27365576 昨天萌新使用的是PIL这个库,今天发现机器学习也可以这样玩. 视频地址Python机器学 ...

  6. git已经删除了远程分支,本地仍然能看到

    1.使用 git branch -a 命令可以查看所有本地分支和远程分支,发现很多在远程仓库已经删除的分支在本地依然可以看到. 2.使用命令 git remote show origin,可以查看re ...

  7. Powershell cannot be loaded because running scripts is disabled on this system 解决办法

    问题背景 第一次跑ps时,出现了下面的提示.这是因为windows不允许执行脚本而已,不要大惊小怪. 解决办法 这个需要管理员执行,不然会出现以下的情况 正常情况

  8. mysq5.7

    1.mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql 2. chown -R work:work /home/work/mysql 3.su - work 4. ...

  9. prim /kruskal 最小生成树

    #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #inc ...

  10. html-css-js基本理解和简单总结

    目录 一.对于网页的基本理解 1.网页是一种数据展示和信息交互的载体 2.网页组成部分 3.支撑一个网页的技术模块 二.html的理解和技术笔记 1.html理解 2.html技术笔记-html标签 ...