⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bankbillservlet.java

📁 《J2ME实用教程》 源文件下载 本书没有仅仅局限于J2ME单机游戏的开发
💻 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 + -