这个小程序主要是加强对jsp+mvc的理解。
程序采用了Oracle数据库。其他的数据库,请自行修改数据库配置文件db.properties。
需要源程序的请微博关注TraCatche私信我,欢迎大家跟我一起讨论学习的问题。
我有各种ui设计视频,Android视频,java视频,还有各种的项目的视频。要的请私信
注:此程序只适用初学者,高手请关注我的其他文档,我会陆续把javaweb的基础到三大框架的小程序陆续发出来。
主要的逻辑代码都已粘出来了。
AtmDaoImpl
package com.wdf.newatm;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class AtmDaoImpl implements AtmDao{
privateConnection conn;
PreparedStatementpstmt=null;
Stringurl=null;
Stringuname=null;
Stringupass=null;
StringdriverName=null;
@Override
publicvoid condb() {
//TODO Auto-generated method stub
init();
try{
Class.forName(driverName);
conn=DriverManager.getConnection(url,uname, upass);
}catch (ClassNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库异常");
}
}
@Override
publicvoid createPtmt(String sql) {
//TODO Auto-generated method stub
try{
pstmt=conn.prepareStatement(sql);
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
publicint update(Object... params) {
//TODO Auto-generated method stub
intlineNum=-1;
try{
for(inti=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
lineNum=pstmt.executeUpdate();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
returnlineNum;
}
@Override
publicResultSet query(Object... params) {
//TODO Auto-generated method stub
try{
for(inti=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
returnpstmt.executeQuery();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
returnnull;
}
publicvoid init(){
Propertiespt=new Properties();
InputStreamis=AtmDaoImpl.class.getClassLoader().getResourceAsStream("db.properties");
try{
pt.load(is);
url=pt.getProperty("url");
uname=pt.getProperty("uname");
upass=pt.getProperty("upass");
driverName=pt.getProperty("drivername");
}catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
is.close();
}catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
publicvoid closeConn(){
if(conn!=null){
try{
conn.close();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/* publicvoid closeRs(){
if(rs!=null){
try{
conn.close();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}*/
publicvoid closePstmt(){
if(pstmt!=null){
try{
conn.close();
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Jsp的action
Atm.jsp
<%@ page language="java"contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page import="com.wdf.newatm.AtmDaoImpl"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="com.wdf.newatm.ATMUser"%>
<!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String status=request.getParameter("status");
String err="";
AtmDaoImpl atm=new AtmDaoImpl();
atm.condb();
if(status.equals("login")){
String acc=request.getParameter("account");
String pass=request.getParameter("password");
atm.createPtmt("select * from atmuser where account=?");
ResultSet rs=atm.query(acc);
ATMUser user=null;
if(rs.next()){
if(rs.getString(3).equals(pass)){
user=new ATMUser();
user.setId(rs.getInt(1));
user.setAccount(rs.getString(2));
user.setPassword(rs.getString(3));
user.setName(rs.getString(4));
user.setMoney(rs.getDouble(5));
session.setAttribute("user", user);
response.sendRedirect("main.jsp");
}else{
err="密码不正确";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("index.jsp?err="+err+"&acc="+acc);
}
}else{
err="用户名不正确";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("index.jsp?err="+err);
}
//request.setAttribute("err",err);
rs.close();
atm.closePstmt();
atm.closeConn();
}
if(status.equals("register")){
String account=request.getParameter("account");
Stringpassowrd=request.getParameter("password");
Stringr_password=request.getParameter("r_password");
Stringname=request.getParameter("name");
Stringsmoney=request.getParameter("money");
if(account!=null && passowrd!=null && r_password!=null && name!=null){
atm.createPtmt("insert into atmuser(account,password,name,money)values(?,?,?,?)");
ATMUser user=null;
if(passowrd.equals(r_password)){
doublemoney=Double.parseDouble(smoney);
if(atm.update(account,passowrd,name,money)!=-1){
user=new ATMUser();
user.setAccount(account);
user.setPassword(passowrd);
user.setName(name);
user.setMoney(money);
session.setAttribute("user", user);
response.sendRedirect("main.jsp");
}else{
response.sendRedirect("shibai.jsp");
}
}else{
err="两次密码输入不一样";
account=URLEncoder.encode(account,"utf-8");
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("register.jsp?err="+err+"&acc="+account);
}
atm.closePstmt();
atm.closeConn();
}else{
err="用户名密码或名字不能为空";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("register.jsp?err="+err);
}
}
if(status.equals("savemoney")){
String smoney=request.getParameter("smoney");
if(smoney!=null){
double money=Double.parseDouble(smoney);
ATMUseruser = (ATMUser) session.getAttribute("user");
double nmoney=user.getMoney();
Stringaccount = user.getAccount();
user.setMoney(nmoney+money);
session.setAttribute("user", user);
atm.createPtmt("UPDATE ATMUSER SET MONEY=MONEY+? WHERE ACCOUNT=?");
int i=atm.update(money,account);
if(i!=-1){
err="操作成功";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("savemoney.jsp?err="+err);
}else{
response.sendRedirect("shibai.jsp");
}
atm.closePstmt();
atm.closeConn();
}
}
if(status.equals("takemoney")){
String tmoney=request.getParameter("tmoney");
if(tmoney!=null){
double money=Double.parseDouble(tmoney);
ATMUseruser = (ATMUser) session.getAttribute("user");
double smoney=user.getMoney();
Stringaccount = user.getAccount();
if(money<=smoney){
user.setMoney(smoney-money);
session.setAttribute("user", user);
atm.createPtmt("UPDATE ATMUSER SET MONEY=MONEY-? WHERE ACCOUNT=?");
int i=atm.update(money,account);
if(i!=-1){
err="操作成功";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("takemoney.jsp?err="+err);
}else{
response.sendRedirect("shibai.jsp");
}
atm.closePstmt();
}else{
err="当前余额"+smoney+",所取金额大于余额";
err=URLEncoder.encode(err,"utf-8");
response.sendRedirect("takemoney.jsp?err="+err);
}
atm.closeConn();
}
}
%>
</body>
</html>