📄 bankbillservlet.java
字号:
package bankbill;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
import shared.*;
public class BankBillServlet extends HttpServlet {
protected static final String DBName = "java:/DefaultDS";
private DataSource dataSource;
public void init(ServletConfig config) throws ServletException {
try {
InitialContext ic = new InitialContext();
dataSource = (DataSource) ic.lookup(DBName);
} catch (Exception e) {
e.printStackTrace();
throw new ServletException("init error");
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/octet-stream");
InputStream is = request.getInputStream();
OutputStream os = response.getOutputStream();
DataInputStream call = new DataInputStream(is);
DataOutputStream result = new DataOutputStream(os);
//分清楚需要处理的模块
byte method = call.readByte();
switch (method) {
//处理登录模块
case MessageConstants.OPERATION_LOGIN_USER:
login(call,result);
break;
//显示欠费列表
case MessageConstants.OPERATION_LIST_ACCOUNT:
sendBillInfo(request,response);
break;
case MessageConstants.OPERATION_UPDATE_ACCOUNT:
updateAccount(call,result);
break;
}
response.setContentLength(result.size());
}
private void updateAccount(DataInputStream call,
DataOutputStream result) throws IOException {
byte[] data = new byte[call.readInt()];
call.read(data);
AccountInfo accinfo = new AccountInfo();
accinfo.deserialize(data);
System.out.println(accinfo.getUserName());
System.out.println(accinfo.getPassword());
System.out.println(accinfo.getCreditCardHolderName());
System.out.println(accinfo.getCreditCardNumber());
//进行数据库验证是否用户名和密码合法
//这里省略了数据库的验证部分,直接返回一个合法的信息
//如果成功登录返回1
result.writeInt(1);
return;
}
private void login(DataInputStream call,
DataOutputStream result) throws IOException{
String username = call.readUTF();
String password = call.readUTF();
System.out.println(username);
System.out.println(password);
//进行数据库验证是否用户名和密码合法
//这里省略了数据库的验证部分,直接返回一个合法的信息
//如果成功登录返回1
result.writeInt(1);
return;
}
private void sendBillInfo(HttpServletRequest request,
HttpServletResponse response) throws IOException{
Connection conn;
response.setContentType("application/octet-stream");
OutputStream os = response.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
try {
conn = dataSource.getConnection();
//获得行数
PreparedStatement ps1 = conn.prepareStatement("SELECT COUNT(*) As rowcount"
+ " FROM BANKBILL");
ResultSet rs1 = ps1.executeQuery();
rs1.next();
int num = rs1.getInt("rowcount");
rs1.close();
ps1.close();
PreparedStatement ps = conn.prepareStatement("SELECT *"
+ " FROM BANKBILL");
ResultSet rs = ps.executeQuery();
//发送账单数目
dos.writeInt(num);
BillInfo binfo = new BillInfo();
while (rs.next()) {
binfo.setBilldate(rs.getString(1));
binfo.setMoney(rs.getString(2));
binfo.setReason(rs.getString(3));
byte[] data = binfo.serialize();
//一条记录的长度
dos.writeInt(data.length);
//发送账单数据
dos.write(data);
System.out.println(rs.getString(1));
}
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
response.setContentLength(dos.size());
dos.close();
os.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -