当前位置: 首页 > news >正文

深圳创业补贴政策2023申请流程长沙建站seo公司

深圳创业补贴政策2023申请流程,长沙建站seo公司,自己可以做小程序商城吗,网站制作jian she文章目录 数据库表的设计和准备数据环境搭建前端页面编写后端代码实现后端代码目录dao层servicewebpojoUtils 数据库表的设计和准备数据 环境搭建 在pom.xml中配置依赖&#xff08;logback、mybatis、mysql、servlet&#xff09; 注意引入tomcat 前端页面编写 <!DOCTYPE …

文章目录

  • 数据库表的设计和准备数据
  • 环境搭建
  • 前端页面编写
  • 后端代码实现
    • 后端代码目录
    • dao层
    • service
    • web
    • pojo
    • Utils

数据库表的设计和准备数据

在这里插入图片描述
在这里插入图片描述

环境搭建

在pom.xml中配置依赖(logback、mybatis、mysql、servlet)
注意引入tomcat

前端页面编写

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>银行账户转账</title>
</head>
<body><form action="/bank/transfer" method="post">转出账户:<input type="text" name="fromActno"><br>转入账号:<input type="text" name="toActno"><br>转账金额:<input type="text" name="money"><br><input type="submit" value="转账"></form>
</body>
</html>

后端代码实现

后端代码目录

在这里插入图片描述

dao层

//AccountDaoImpl
package com.example.bank.dao.impl;import com.example.bank.dao.AccountDao;
import com.example.bank.pojo.Account;
import com.example.bank.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;public class AccountDaoImpl implements AccountDao {@Overridepublic Account selectByActno(String actno) {SqlSession sqlSession = SqlSessionUtil.openSession();Account account = (Account) sqlSession.selectOne("account.selectByActno", actno);sqlSession.close();return account;}@Overridepublic int updateByActno(Account act) {SqlSession sqlSession = SqlSessionUtil.openSession();int count = sqlSession.update("account.updateByActno",act);sqlSession.commit();sqlSession.close();return count;}
}
package com.example.bank.dao;import com.example.bank.pojo.Account;//dao对象中的任何一个方法和业务不挂钩,没有任何业务逻辑在里面
//DAO中的方法就是做CRUD的
public interface AccountDao {//根据账号查询账户信息Account selectByActno(String actno);//更新账户信息int updateByActno(Account act);
}

dao层是三层架构的最底层,是数据访问层,主要是连接MySQL,并做数据的CRUD,不包含任何的逻辑

service

//AccountServiceImpl
package com.example.bank.service.impl;import com.example.bank.dao.AccountDao;
import com.example.bank.dao.impl.AccountDaoImpl;
import com.example.bank.exceptions.MoneyNotEnoughException;
import com.example.bank.exceptions.TransferException;
import com.example.bank.pojo.Account;
import com.example.bank.service.AccountService;public class AccountServiceImpl implements AccountService {private AccountDao accountDao = new AccountDaoImpl();@Overridepublic void transfer(String fromActno, String toActno, double money) throws MoneyNotEnoughException, TransferException {//1、判断转出账户的余额是否充足Account fromAct = accountDao.selectByActno(fromActno);if (fromAct.getBalance() < money){//2、如果转出账户余额不足,提示用户throw new MoneyNotEnoughException("对不起,您的余额不足");}//3、如果转出账户余额充足,更新转出账户余额(update)//先更新内存中java对象account的余额Account toAct = accountDao.selectByActno(toActno);fromAct.setBalance(fromAct.getBalance() - money);toAct.setBalance(toAct.getBalance() + money);int count = accountDao.updateByActno(fromAct);//4、更新转入账户余额(update)count += accountDao.updateByActno(toAct);if (count != 2){throw new TransferException("转账异常,未知原因");}}}
//AccountService
package com.example.bank.service;import com.example.bank.exceptions.MoneyNotEnoughException;
import com.example.bank.exceptions.TransferException;public interface AccountService {
//    @param fromActno 转出账号
//    @param toActno 转入账号
//    @param money 转账金额void transfer(String fromActno, String toActno, double money) throws MoneyNotEnoughException, TransferException;
}

service层是业务逻辑层,主要是对数据进行逻辑的处理,页面的改变等。这里的逻辑主要就是对余额先进行能否转移的判断,其次是对账户余额的转移改变,最后就是对不同错误的出现返回不同的错误类型

web

//AccountServlet
package com.example.bank.web;import com.example.bank.exceptions.MoneyNotEnoughException;
import com.example.bank.exceptions.TransferException;
import com.example.bank.service.AccountService;
import com.example.bank.service.impl.AccountServiceImpl;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/transfer")
public class AccountServlet extends HttpServlet {//为了让这个对象在其他方法中也可以用private AccountService accountService = new AccountServiceImpl();@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException{//获取表单数据String fromActno = request.getParameter("fromActno");String toActno = request.getParameter("toActno");double money = Double.parseDouble(request.getParameter("money"));try {//调用servlet的转账方法完成转账。(调业务层)accountService.transfer(fromActno,toActno,money);//程序能够走到这里,表示转账一定成功了//调用view完成展示结果response.sendRedirect(request.getContextPath() + "/success.html");} catch (MoneyNotEnoughException e) {response.sendRedirect(request.getContextPath() + "/error1.html");} catch (TransferException e) {response.sendRedirect(request.getContextPath() + "/error2.html");}}
}

展示层,获取表单数据以及针对不同情况错误的出现展示不同的页面信息。

pojo

pojo是封装类,账号的类型里面有的相关数据,一方面能在java中进行数据操作,另一方面对接MySQL的账户信息,方便CRUD。

package com.example.bank.web;import com.example.bank.exceptions.MoneyNotEnoughException;
import com.example.bank.exceptions.TransferException;
import com.example.bank.service.AccountService;
import com.example.bank.service.impl.AccountServiceImpl;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/transfer")
public class AccountServlet extends HttpServlet {//为了让这个对象在其他方法中也可以用private AccountService accountService = new AccountServiceImpl();@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException{//获取表单数据String fromActno = request.getParameter("fromActno");String toActno = request.getParameter("toActno");double money = Double.parseDouble(request.getParameter("money"));try {//调用servlet的转账方法完成转账。(调业务层)accountService.transfer(fromActno,toActno,money);//程序能够走到这里,表示转账一定成功了//调用view完成展示结果response.sendRedirect(request.getContextPath() + "/success.html");} catch (MoneyNotEnoughException e) {response.sendRedirect(request.getContextPath() + "/error1.html");} catch (TransferException e) {response.sendRedirect(request.getContextPath() + "/error2.html");}}
}

Utils

package com.example.bank.utils;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;public class SqlSessionUtil {private SqlSessionUtil(){}private static SqlSessionFactory sqlSessionFactory;static {try {sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));} catch (IOException e) {throw new RuntimeException(e);}}public static SqlSession openSession(){return sqlSessionFactory.openSession();}}

写好的工具类,方便在dao层获取sqlsession对象。

银行转账小功能

http://www.ds6.com.cn/news/100738.html

相关文章:

  • 公司网站运营维护单位网站推荐
  • 网站建设中端口号的作用是什么病毒式营销方法
  • 杭州网站建设商城价格热点新闻事件
  • wordpress登录用户可以搜索seo关键词优化软件怎么样
  • 如何使用wordpress搭建网站seo英文怎么读
  • 做网站推广选择什么最好杭州网站制作排名
  • 南阳企业网站推广方法电商网站模板
  • 盐城市城乡建设局网站营销型网站的分类不包含
  • 建设银行网站官网小红书关键词排名优化
  • 武汉大学吧阜新网站seo
  • 网站建设_seo技术支持企业网
  • wordpress读音seo代运营
  • 网站怎么做中英文切换淘宝权重查询
  • 德州万企互联网站制作360网站排名优化
  • 思维导图在线制作网站系统优化是什么意思
  • 南京企业建站系统电商培训内容有哪些
  • 网站建设工具哪个好用产品推广平台
  • 信阳网络营销公司seo优化推广软件
  • 怎样做校园网站推广泉州seo按天计费
  • 网站优化建设方案seocui cn
  • 高端科研网站设计搜索推广公司
  • 做网站推广都有哪些行业上海百度推广公司排名
  • 网页设计与网站的关系谷歌官方网站
  • 福州专业做网站企业推广平台
  • 邯郸做网站的新十条优化措施
  • 怎么做网站快捷方式优秀网站网页设计分析
  • 网站开发 如何备案十大广告公司排名
  • 有没有好用的网址seo优化基础教程pdf
  • 百年建筑网站广东seo推广费用
  • 郑州做网站服务器2345网址导航手机版