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修复不好,真的会影响后面的很多事,还有就是,不要让自己的代码目录看起来太乱了,代码里面还是要做到精简整洁,如果有重复的代码,尽量写一个工具类来实现,分清层次还是很重要的。