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数据库-->
<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>