spring-rest案例

本文介绍了一个基于Spring框架的RESTful风格CRUD操作的完整示例,包括配置文件、实体类、DAO层、Service层、Controller层及前端交互代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web.xml配置

 <!-- 配置Spring 提供的编码过滤器  -->
  <filter>
       <filter-name>EncodingFilter</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
       <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
       </init-param>
  </filter>
  <filter-mapping>
       <filter-name>EncodingFilter</filter-name>

 

spring-dao.xml配置

        <!--  开启组件扫描  -->
   <context:component-scan base-package="com.xdl"></context:component-scan>

        <!-- 配置一个数据源  -->

        <!--Oracle数据库-->

<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:1521:xe"></property>     
    <property name="username" value="用户名"></property>
    <property name="password" value="密码"></property>
</bean>
    <!-- 创建一个模板对象 -->
<bean  id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg index="0"  ref="dataSource"></constructor-arg>

</bean>

spring-mvc配置

<!-- 开启标注形式的 MVC -->
<mvc:annotation-driven></mvc:annotation-driven> 
<!-- 对静态资源放行 .js  css  jpg -->
<mvc:default-servlet-handler/>
<!--  配置视图处理器  -->
    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix"  value="/WEB-INF/"></property>
        <property name="suffix"  value=".jsp"></property>

    </bean>

实体类:略

接口类

package com.xdl.dao;

import java.util.List;

import com.xdl.bean.BankAccount;


public interface BankAccountDAO {
     List<BankAccount>  listBankAccount();
     /** 根据账号 删除账户 */
     int   deteleAccountByAno(String ano);
     /** 根据账号 查询账户 */
     BankAccount   getAccountByAno(String ano);
     /** 插入银行账户数据 */
     int   insertAccount(BankAccount  account);
     /** 更新方法 */
     int   updateAccount(BankAccount  account);

}

mapper映射器:

package com.xdl.mapper;


import java.sql.ResultSet;
import java.sql.SQLException;


import org.springframework.jdbc.core.RowMapper;


import com.xdl.bean.BankAccount;


public class BankAccountMapper implements RowMapper<BankAccount> {


@Override
public BankAccount mapRow(ResultSet rs, int arg1) throws SQLException {
return new BankAccount(rs.getString("ano"), rs.getString("aname"),
rs.getString("apassword"), rs.getDouble("money"));
}


}


实现方法:

package com.xdl.dao.imp;


import java.util.List;


import javax.annotation.Resource;


import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;


import com.xdl.bean.BankAccount;
import com.xdl.dao.BankAccountDAO;
import com.xdl.mapper.BankAccountMapper;


@Repository("bankDao")
public class BankAccountDAOOracleImp implements BankAccountDAO {
    @Resource//注入模板  
    private  JdbcTemplate  jdbcTemplate;
@Override
public List<BankAccount> listBankAccount() {
String  sql = "select * from bank_account";
return jdbcTemplate.query(sql, new BankAccountMapper());
}
@Override
public int deteleAccountByAno(String ano) {
String  sql = "delete from bank_account where ano = ?";
try {
return jdbcTemplate.update(sql, ano);
} catch (DataAccessException e) {
e.printStackTrace();
}
return  0;
}
@Override
public BankAccount getAccountByAno(String ano) {
String sql = "select * from bank_account where ano = ?";
List<BankAccount>  accounts = jdbcTemplate.query(sql,
new BankAccountMapper(), ano);
return accounts.isEmpty()?null:accounts.get(0);
}
@Override
public int insertAccount(BankAccount account) {
String sql = "insert into bank_account values(?,?,?,?)";
try {
return jdbcTemplate.update(sql, account.getAno(),
account.getAname(),account.getApassword(),account.getMoney());
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return  0;
}
@Override
public int updateAccount(BankAccount account) {
String sql = "update  bank_account set aname=?,apassword=?,"
+ "money=? where ano=?";
try {
return jdbcTemplate.update(sql, account.getAname(),account.getApassword()
,account.getMoney(),account.getAno());
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return  0;
}


}

Service层

package com.xdl.service;


import java.util.List;


import javax.annotation.Resource;


import org.springframework.stereotype.Service;


import com.xdl.bean.BankAccount;
import com.xdl.dao.BankAccountDAO;


@Service
public class BankAccountService {
@Resource
     private   BankAccountDAO  bankDao;


public BankAccountDAO getBankDao() {
return bankDao;
}


public void setBankDao(BankAccountDAO bankDao) {
this.bankDao = bankDao;
}
/** 显示银行银行列表 */
public  List<BankAccount>  listBankAccount(){
return  bankDao.listBankAccount();
}
/** 根据账号 删除账户  */
public  boolean  removeAccountByAno(String ano){
return  bankDao.deteleAccountByAno(ano)==1?true:false;
}
/** 根据账号 获取账户信息 */
public  BankAccount  accountInfoByAno(String ano){
return  bankDao.getAccountByAno(ano);
}
/** 开户方法 */
public  boolean   createAccount(BankAccount account){
return  bankDao.insertAccount(account)==1?true:false;
}
/** 更新方法 */
public  boolean   updateAccount(BankAccount account){
return  bankDao.updateAccount(account)==1?true:false;
}
}

测试类:略

控制层:

package com.xdl.controller;


import java.util.List;


import javax.servlet.http.HttpServletRequest;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


import com.xdl.bean.BankAccount;
import com.xdl.service.BankAccountService;


@Controller
public class BankAccountController {
   // 注入Service 对象 
   @Autowired
   private   BankAccountService  bankAccountService;
   @RequestMapping("/toBankAccountList.do")
   public  String  toBankAccountList(){
  return  "bank_account_list";
   }
   @RequestMapping("/bankAccountList.do")//请求路劲
   @ResponseBody  //将结果一JSON返回
   public  List<BankAccount>  bankAccountList(){


  List<BankAccount>  datas = bankAccountService.listBankAccount();
  return  datas;
   }
   
   /* @RequestMapping("/bankAccountRemove.do")
   @ResponseBody
   public  boolean bankAccountRemove(HttpServletRequest  request){
  String ano = request.getParameter("ano");
  return  bankAccountService.removeAccountByAno(ano);
   } */
   @RequestMapping(value="/account/{ano}",method=RequestMethod.DELETE)
   @ResponseBody
   public  boolean bankAccountRemove(@PathVariable("ano") String  ano){
  System.out.println("删除 ano=" + ano);
  return  bankAccountService.removeAccountByAno(ano);
   } 
   @RequestMapping(value="/account/{ano}",method=RequestMethod.GET)
   @ResponseBody
   public  BankAccount bankAccountGet(@PathVariable("ano") String  ano){
  System.out.println("获取 ano=" + ano);
  BankAccount  account = bankAccountService.accountInfoByAno(ano);
  if(account == null){
  System.out.println("account:"+account);
  return  null;
  }else{
  return account;
  }
   }
   /** 添加银行账户 */
   @RequestMapping(value="/account/new/{ano}",method=RequestMethod.POST)
   @ResponseBody
   public  boolean   bankAccountAdd(@PathVariable("ano") String ano,
BankAccount account){
  System.out.println(ano);
  System.out.println("account:"+account);
  
  System.out.println();
  return  bankAccountService.createAccount(account);
   }
   
   /** 更新银行账户 */
   @RequestMapping(value="/account/{ano}",method=RequestMethod.POST)
   @ResponseBody
   public  boolean   bankAccountUpdate(@PathVariable("ano") String ano,
@RequestBody BankAccount account){
  System.out.println("account:"+account);
  return  bankAccountService.updateAccount(account);
   }
}

ajax JSP编写:
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript"  src="jquery.min.js"></script>
<script type="text/javascript">
     $(function(){
    alert('到这立,往下走');
     });
</script>
<script type="text/javascript">
   // 等页面加载完成 
   $(function(){
   // 发送ajax 请求 
   $.ajax({
    url:"bankAccountList.do",
    type:'post',
    success:function(datas){
    var $table = $("#accounts");
    for(var i=0;i<datas.length;i++){
    // 拼接出表格的一行
    var obj = datas[i];
    var trStr = "<tr id='"+obj.ano+"'> <td>"+obj.ano+"</td> <td>"+obj.aname+"</td><td>"+
    obj.apassword+"</td> <td>"+obj.money
    +"</td><td><a href='javascript:' onclick='removeAccount(this)'>删除</a></td></tr>";
       $table.append($(trStr));
    }
    },
    dataType:"json"
   });
   });
  // 根据账号来删除账户 
  function   removeAccount(href){
 var  ano = $(href).parent().parent().attr("id");
 $.ajax({
 url:"http://localhost/spring-rest-day08/account/"+ano,
 type:"delete",
 success:function(data){
 if(data){
 $(href).parent().parent().remove();
 }
 },
 dataType:"json"
 });
  }
  function  accountInfoByAno(){
 // 获取查询的账号 
 var  ano = $("#ano").val();
 $("#aname").val("");
 $("#apassword").val("");
 $("#money").val("");
 $.ajax({
 url:"http://localhost/spring-rest-day08/account/"+ano,
 type:"get",
 success:function(data){
 if(data != null){
 $("#ano").val(data.ano);
 $("#aname").val(data.aname);
 $("#apassword").val(data.apassword);
 $("#money").val(data.money);
 return;
 }
 alert('ggg');
 },
 dataType:"json",
 error:function(){
 alert('error');
 }
 });
 
  }
  
  /** 开户的方法  */
  function  createAccount(){
 var  ano = $("#ano").val();
 var  aname = $("#aname").val();
 var  apassword = $("#apassword").val();
 var  money = $("#money").val();

 // 使用post 方式发送ajax 请求 
 $.ajax({
 url:"http://localhost/spring-rest-day08/account/new/"+ano,
 type:"post",
 success:function(data){
 if(data){
 //在表格的最后 增加这条数据 
 var trStr = "<tr id='"+ano+"'> <td>"+ano+"</td> <td>"+aname+"</td><td>"+
      apassword+"</td> <td>"+money
      +"</td><td><a href='javascript:' onclick='removeAccount(this)'>删除</a></td></tr>";
     $("#accounts").append($(trStr));
 }
 },
 dataType:"json",
 data:{"ano":ano,"aname":aname,"apassword":apassword,"money":money}
 });
  }




  /** 更新的方法  */
  function  updateAccount(){
 var  ano = $("#ano").val();
 var  aname = $("#aname").val();
 var  apassword = $("#apassword").val();
 var  money = $("#money").val();
 // 使用put 方式发送ajax 请求 
 $.ajax({
 url:"http://localhost/spring-rest-day08/account/"+ano,
 type:"post",
 success:function(data){
 if(data){
 alert(data);
 }
 },
 contentType:"application/json",
 dataType:"json",
 data:JSON.stringify({"ano":ano,"aname":aname,"apassword":apassword,"money":money})
 });
  }
</script>


<style type="text/css">
    table {
        width:  600px;
        border: 1px solid purple;
        text-align: center;
        border-collapse: collapse;
    }
    td{
       border: 1px solid purple;  
    }
</style>
</head>
<body>
<h3>账户操作 </h3>
<input  type="button"  value="根据ano查询" onclick="accountInfoByAno()"> 
<input  type="button"  value="开户" onclick="createAccount()">
<input  type="button"  value="更新" onclick="updateAccount()"><br>
账号:<input  type="text"  id="ano" > <br>
名字:<input  type="text"  id="aname" > <br>
密码:<input  type="text"  id="apassword" > <br>
余额:<input  type="text"  id="money" > <br>
<h3>账户列表</h3>
<table id="accounts">
     <tr> <td>账号</td> <td>姓名</td><td>密码</td> <td>余额</td><td>删除</td></tr>
</table>
</body>
</html>


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值