jsp+servlet+mysql 实现简单的银行登录转账功能
jsp+servlet+mysql 实现简单的银行登录转账功能
【前期的准备】
html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)
先从一个登录页面开始(利用表单提交,action=“jsp实现页面”)
第一步:在(mysql)数据库中建表:
建立一个用户的基本信息表(用户姓名,密码,账户余额),用户转账(用户名,转账金额)的操作表
第二步:
登录页面:输入用户名和密码对数据库中的用户信息(login.jsp)进行验证(qq浏览器中有个书签里面登录成功验证,登录成功验证跳转的页面可以改成到另一个页面(里面包含可以看到自己的账户余额里面有多少钱,还有一个转账的链接)(login.jsp,back.jsp(登录失败),数据库处理类(DB1.java)(主要是验证用户名和密码,里面有一个方法boolean loginSucess(String username,String password)),servlet类(有dopost方法,里面主要构造数据库类的对象,调用里面的loginsucess方法,如果用户名和密码都没有错,利用response.sendRedirect则跳转到zhuangzhang.jsp))
登录之后的页面(转账的功能,):
主要是转账的功能:
{转账 :输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新}
{}部分是从网上看到的一段话,第二个转账部分的数据库处理类,可以写两个方法(1.判断方法(转出账户,转账金额,转入账户是否合法,这个方法的返回类型可以用boolean) 2.更新方法(对该账户的余额信息以及对方的账户余额信息,进行更新)
具体代码
boolean puanduan(String outuser,double cash,String inuser);
void update();
}
然后在servlet里面调用这两个方法。
转账链接到(转账的页面,(zhuanzhang.jsp)这个页面里面包含三个输入框:转出账户(outuser),转账金额(cash),转入账户(inuser)),然后还是编写一个数据库处理类(DB2.java):写一个方法dozz用来处理通过转账,实现转出账户金额减少cash,转入账户金额增加cash,具体的语句参看jdbc语句和mysql语句。然后还要写一个servlet类,还是通过dopost方法来获取zhuanzhang.jsp页面输入框里面的值,然后通过创建数据库类的方法来调用dozz方法实现其功能,然后response.sendRedirect跳转到一个页面(自己用户减少的页面done.jsp???)
【关键代码】

loginServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;
import org.apache.jasper.tagplugins.jstl.core.Out;
import javax.servlet.http.HttpServlet;
import javabean.DB01;
public class LoginServlet extends HttpServlet{
static String userId;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
userId = request.getParameter("id");
HttpSession session=request.getSession();
session.setAttribute("user", userId);
String password = request.getParameter("password");
DB01 db1 = new DB01();
boolean canLogin = db1.loginSuccess(userId,password);
if(canLogin){
response.sendRedirect("transfer.jsp");
}
else if(!canLogin){
response.sendRedirect("back.jsp");
}
}
public ServletConfig getServletConfig(){
return null;
}
public String getServletInfo(){
return null;
}
public void service(ServletRequest request,ServletResponse response) throws ServletException, IOException{
HttpServletRequest rq = (HttpServletRequest)request;
HttpServletResponse rs = (HttpServletResponse)response;
doPost(rq,rs);
}
public void destroy(){
System.out.println("DESTROY");
}
public void init(ServletConfig args0) throws ServletException{
System.out.println("init");
}
}
checkServlet.java
package servlet;
import javabean.DB02;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;
import org.apache.jasper.tagplugins.jstl.core.Out;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
import javax.servlet.http.HttpServlet;
import javabean.DB01;
import sun.text.resources.cldr.es.FormatData_es_419;
public class CheckServlet extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession();
String outId = (String)session.getAttribute("user");
String inId = request.getParameter("inid");
String cash0 = request.getParameter("cash");
DB02 db2 = new DB02();
boolean checkSuccess = db2.checkAndChangeUser(outId,cash0,inId);
if(checkSuccess){
System.out.println(outId);
System.out.println(inId);
response.sendRedirect("success.jsp");
}
else if(!checkSuccess){
response.sendRedirect("transfer.jsp");
}
}
public ServletConfig getServletConfig(){
return null;
}
public String getServletInfo(){
return null;
}
public void service(ServletRequest request,ServletResponse response) throws ServletException, IOException{
HttpServletRequest rq = (HttpServletRequest)request;
HttpServletResponse rs = (HttpServletResponse)response;
doPost(rq,rs);
}
public void destroy(){
System.out.println("DESTROY");
}
public void init(ServletConfig args0) throws ServletException{
System.out.println("init");
}
}
【后期感想和总结】
银行登录页面的总结
经过两周,不,也许只能说是用了一周左右的时间,因为前一周有比较多的事。还有一部分原因就是自己并不是太懂这方面的总体的知识架构,还有就是学长只是粗略的讲了一些基础的知识。然后自己就得开始写,只是实现简单的登录进去之后,实现用户的转账功能。
前期:
1.自己也在网上去查找了一些资料,关于jsp+servlet+mysql,实现简单的登录验证,还有,就是也怪自己之前暑假学习java没有学习和用过java.sql.*里面的一些接口,用来实现与数据库的连接,还有就是之前没怎么用过idea,然后前一周,怎么在idea里面引入数据库驱动包,也是问了学长和其他人才把它解决好,不过在解决之前这段时间,这个小小的银行登录转账,我都用eclipse开始写了,还好因为之前大多数时间都是用的eclipse,然后用起来也比较顺利,经过一些与数据库之间的小小的测试,还是证明引入数据库驱动包引入顺利。
2.自己前期也写了一个要做之前的可以称得上是小小的需求文档,不过感觉以前没有怎么写过这种,写起来也有点困难,所谓万事开头难,大概就是如此吧!
3.然后根据自己的需求文档,一步一实现功能,中间还是遇到了一几个比较伤脑筋的问题,困扰了我两天,百度也没百度出来,最后还是问的同学,相比较而言,自己学的进度还是有点慢。
4.还有一个问题就是,之前学习jsp的时候,忘了有一个东西,就是session对象,一般都是用来存储用户登录的用户名和密码,然后在多个页面之间互相使用,之前把这一点忘了,问题就比较大了,不是这个用户登录进去的用户,都可以在任意用户之间实现转账功能,所以,这个是个很严重的错误,所以,自己上网查查资料,看了看书,然后自己也比较了解了一些,然后就是通过登录,跳转到转账的页面,这个页面上面就只有,输入转账金额和转入用户。
5.然后自己又想了一下,一个用户肯定想知道自己账户里面到底有多少钱,所以,我后来又想了下,做了一个链接来查询自己账户的余额,然后再衡量自己转账的金额。
总结起来,就是自己如果只是想,而不去做,是没有任何收获的,所以,我每天不仅仅是看书,要多敲敲代码,哪怕是照着书敲,自己慢慢理解,然后再敲一遍,这样多多巩固,才能使自己的动手能力增强。
通过这次,简单的一个银行登录,让我还是学到了比较多的知识,jsp里面的几个常用的内置对象,还有java里面怎么连接数据库的代码,然后还有servlet里面的一些doPost方法,service方法,init方法,destroy方法,等等很多的知识,然后自己也收获了:要多从实践中去总结,bug要学会怎么调,港真,如果一个bug修复不好,真的会影响后面的很多事,还有就是,不要让自己的代码目录看起来太乱了,代码里面还是要做到精简整洁,如果有重复的代码,尽量写一个工具类来实现,分清层次还是很重要的。
jsp+servlet+mysql 实现简单的银行登录转账功能的更多相关文章
- (详细)Eclips+jsp+servlet+mysql+登录实例+源代码
欢迎任何形式的转载,但请务必注明出处. 该教程较全,从软件的安装以及相关的环境配置我都放置了相关教程的链接,读者可直接点击进入.自己写电商网站作业时查找了很多资料,但都不是很全,所以趁着寒假写了这份教 ...
- Bootstrap+JSP实例学习笔记一.简单的带登录功能的首页
前言 Bootstrap 是流行的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.源自于twiteer内部的开发框架. 当前(2019-05)最新版本是v3.3. ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- JSP+Servlet+mysql简单示例【图文教程】
下载MYSQL:http://dev.mysql.com/downloads/ 下载安装版的 然后安装(安装步骤就不详细说了) 安装好之后,点击托盘图标,打开管理工具 创建一个数据库 数据库的名字 ...
- jsp+servlet+mysql简单实现用户登陆注册
原码,项目中遇到的错误,解决方法,文章最后有链接可以获取 项目简介 *有的网友说在修改和删除时会触发error,建议各位不要去把用户名命名为中文! 功能描述 登陆,注册,用户一览表,修改,删除,添加, ...
- jsp/servlet/mysql/linux基本概念和操作
一.什么是OOP编程? 面向对象,以结果为导向,并封装整个过程,并尽可能地增加代码的复用性和可扩展性...... 二.Junit? JUnit是一个java语言的单元测试框架.Junit测试时程序员测 ...
- Jsp+servlet+mysql搭建套路
1.建立数据库根据需求建立相应的数据库确立数据库的字段.属性.主键等2.建立javaweb项目,搭建开发环境在开发环境的/WebRoot/WEB-INF下建立lib文件夹,存放需要使用的jar包常用的 ...
- jsp+servlet+mysql增删改查
用的IntelliJ IDEA开发的,jdk1.8 1 首先是项目结构,如下图所示 2看各层的代码 首先是web.xml <?xml version="1.0" encodi ...
- 学生成绩管理系统3.0(JSP+Servlet+MySQL)
源代码:戳这里! (2019-01-08 更新 惊讶于这么久了还有人看这个项目 于是把代码传到 github 了(辣鸡CSDN) https://github.com/G-lory/StudentAc ...
随机推荐
- CocoaPods报错:The dependency `Alamofire ` is not used in any concrete target
看到这个错误提示,首先看看自己的版本是不是 OS X EI Capitan,也就是10.10以后的版本,因为这个版本是比较新的版本,网络上找的那些安装cocoapod命令其实有些过时了,特别是创建po ...
- dandelion datatables : Page index must not be less than zero!
java.lang.IllegalArgumentException: Page index must not be less than zero! at org.springframework.da ...
- opencv 人脸识别
背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
- GROUP与HAVING的使用
SELECT pub_name, state,SUM(state) AS 总数 FROM publishers GROUP BY pub_name, state HAVING SUM(state)&g ...
- InfoPi简介、试用链接、资料索引
InfoPi的定位是“个人信息收集服务器”. 用户可以灵活地定义信息的来源,比如从网页抓取感兴趣的信息.订阅博客.从温度传感器读取数据,等等. 然后,把收集到的信息用web的方式展示出来. 可以把In ...
- malloc原理和内存碎片[转]
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1.检查要访问的虚拟地址是否合法 2.查找/分配一个物理页 3.填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4.建立映射关系 ...
- github上传本地项目
github上传本地项目,分为两个部分: 1.如果建立了ssh key的,直接看第二部分的上传部分就行了 2.如果没有建立ssh key的,就从头开始看吧 ——————————————————我是快乐 ...
- web三种跨域请求数据方法
以下测试代码使用php,浏览器测试使用IE9,chrome,firefox,safari <!DOCTYPE HTML> <html> <head> < ...
- C++中typename和class的区别
C++中typename和class的区别 在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对c ...
- YII rules常见规则
public function rules() { return array( //必须填写 array('email, username, password, ...