Rest架构下的增删改查

首先还是要连接一下什么是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

 1 <servlet>
 2       <!--配置请求的入口 -->
 3       <servlet-name>SpringMVC</servlet-name>
 4       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 5       <!-- [配置初始化参数 -->
 6       <init-param>
 7       <param-name>contextConfigLocation</param-name>
 8       <param-value>classpath:applicationContext.xml</param-value>
 9       </init-param>
10   </servlet>
11   
12   <!-- 配置映射 -->
13   <servlet-mapping>
14   <servlet-name>SpringMVC</servlet-name>
15   <url-pattern>/</url-pattern><!-- 由于使用rest架构,没有后缀名,就直接拦截所有的 -->
16   </servlet-mapping>
View Code

applicationContext.xml

 1  <!--开启组件扫描 -->
 2     <context:component-scan base-package="cn.com"></context:component-scan>
 3     <!-- 开启mvc标注 -->
 4     <mvc:annotation-driven></mvc:annotation-driven>
 5     <!-- 配置视图处理器 -->
 6     <bean
 7         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 8         <property name="prefix" value="/WEB-INF/"></property>
 9         <property name="suffix" value=".jsp"></property>
10     </bean>
11 
12     <!-- 配置一个数据源对象 也叫 连接池对象 -->
13     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
14         <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
15         <property name="url">
16             <value>jdbc:oracle:thin:@127.0.0.1:1521:xe</value>
17         </property>
18         <property name="username" value="scott"></property>
19         <property name="password" value="tiger"></property>
20     </bean>
21     <!-- 定义一个模板对象 -->
22     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
23         <constructor-arg index="0" ref="dataSource"></constructor-arg>
24     </bean>
25 
26 
27     <!-- 配置文件解析器 --><!-- 暂时没神魔用 -->
28     <bean id="multipartResolver"
29         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
30     </bean>
31    <!-- 配置     对所有静态资源放行 -->
32   <mvc:default-servlet-handler/>
View Code

首先还是写一个接口:

 1 public interface BankAccountDao {
 2     
 3     int insertAccount(BankAccountModel ba);//添加
 4     
 5     int deleteAccount(int id);//删除
 6     
 7     BankAccountModel selectByID(int id);//按照ID查询
 8     
 9     int updateAccount(BankAccountModel acc);//更新
10 }
View Code

写实现类:

 1 @Repository("bankDao")//dao层注解,用于装载组件,绝不可以大意,
 2 public class BankAccountDaoIMP implements BankAccountDao {
 3 
 4     @Autowired//自动装配
 5     public JdbcTemplate jdbc;
 6 
 7     @Override
 8     public int insertAccount(BankAccountModel ba) {
 9         String sql = "insert into XDL_BANK_ACCOUNT values (?,?,?,?)";
10         try {
11             return jdbc.update(sql, ba.getId(), ba.getAcc_no(), ba.getAcc_password(), ba.getAcc_money());
12         } catch (Exception e) {
13             e.printStackTrace();
14         }
15         return 0;
16     }
17 
18     @Override
19     public int deleteAccount(int id) {
20         String sql="delete from XDL_BANK_ACCOUNT where id=?";
21         return jdbc.update(sql,id);
22     }
23 
24     
25 
26     @Override
27     public BankAccountModel selectByID(int id) {
28         String sql="select * from XDL_BANK_ACCOUNT where id=?";
29         
30         try {
31             return jdbc.queryForObject(sql, new BankAccountMap(),id);
32         } catch (DataAccessException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         }
36         return null;
37     }
38 
39     @Override
40     public int updateAccount(BankAccountModel acc) {
41         String sql="update XDL_BANK_ACCOUNT set acc_no = ?,acc_password = ?,acc_money = ? where id=?";
42         try {
43             return jdbc.update(sql, acc.getAcc_no(),acc.getAcc_password(),acc.getAcc_money(),acc.getId());
44         } catch (DataAccessException e) {
45             e.printStackTrace();
46         }
47         return 0;
48     }
View Code

写service服务类

 1 @Service("BankService")//service层的标注
 2 public class BankAccountService {
 3     @Autowired
 4     private BankAccountDao bankDao;
 5     /*添加用户*/
 6     public int register(BankAccountModel ba) {
 7         return bankDao.insertAccount(ba);
 8     }
 9      /*删除用户*/
10     public boolean remove(int id) {
11         return bankDao.deleteAccount(id)==0?false:true;
12     }
13      /*查找用户*/
14     public BankAccountModel accountByID(int id){
15         return bankDao.selectByID(id);
16     }
17      /*更新用户*/
18     public boolean updateByID(BankAccountModel acc){
19         return bankDao.updateAccount(acc)==0?false:true;
20     }
21     
22 }
View Code

然后就是Controller啦

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

在然后写一个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>
View Code

其中,用户需要更新数据时,使用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"));
    }
    
    

}
View Code
原文地址:https://www.cnblogs.com/hx1098/p/9332205.html