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

📄 queryapplet.java

📁 JAVA数据库编程实例源码及其一些Java基本介绍
💻 JAVA
字号:
package querydbinapplet;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.table.*;/** * Title:			Applet与Servlet通讯查询数据库 * Description:			教学示范 * Copyright:			Copyright (c) 2003 * Company:			北京师范大学计算机系 * @author			孙一林 * @version			1.0 */public class queryApplet extends Applet {  private boolean isStandalone = false;  private Button queryButton = new Button();  private TextField queryTextField = new TextField();  private Label queryLabel = new Label();  String title[];                              //定义显示数据表格的标题  Vector vector;                               //定义存储结果集数据的数组  AbstractTableModel tm;                       //定义显示数据表格的抽象类  JScrollPane scroll;                          //定义装载数据表格的容器  boolean lastQuery = false;                   //上次查询是否成功  public String getParameter(String key, String def) {    return isStandalone ? System.getProperty(key, def) :      (getParameter(key) != null ? getParameter(key) : def);  }  public queryApplet() {  }  public void init() {    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  private void jbInit() throws Exception {    queryButton.setLabel("查询");    queryButton.setBounds(new Rectangle(288, 348, 75, 29));    queryButton.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        queryButton_actionPerformed(e);      }    });    this.setLayout(null);    queryTextField.setBounds(new Rectangle(107, 26, 168, 26));    queryLabel.setText("请输入学号");    queryLabel.setBounds(new Rectangle(24, 26, 69, 21));    this.add(queryLabel, null);    this.add(queryTextField, null);    this.add(queryButton, null);  }  public void start() {  }  public void stop() {  }  public void destroy() {  }  public String getAppletInfo() {    return "Applet Information";  }  public String[][] getParameterInfo() {    return null;  }  private void getResult() //把用户在applet中输入的查询学号传送给Servlet,然后把Servlet的处理结果显示出来  {    try    {      String Num = queryTextField.getText();           //获取要查询的学号      URL servletURL = new URL(this.getDocumentBase(),"queryservlet");  //创建与后台Servlet通讯的连接实例      URLConnection connection = servletURL.openConnection();    //与后台Servlet进行连接      connection.setUseCaches(false);                         //设置连接不使用缓存      connection.setDoOutput(true);                           //设置连接的Servlet进行输出      ByteArrayOutputStream byteStream = new ByteArrayOutputStream(1024);  //创建二进制字节流ByteArrayOutputStream实例      PrintWriter out = new PrintWriter(byteStream, true);    //创建向二进制字节流写入文本数据的PrintWriter实例      String postData = "Num=" + URLEncoder.encode(Num);      //将学生学号以URL方式编码      out.print(postData);                                    //将学生学号写入二进制字节流      out.flush();                                            //清空PrintWriter      String lengthString = String.valueOf(byteStream.size());    //获取学生学号长度,即向Servlet传送的参数的长度      connection.setRequestProperty("Content-Length", lengthString);  //设置与Servlet的连接的输入参数长度      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//把与Servlet连接的输入参数转化为x-www-form-urlencoded格式      byteStream.writeTo(connection.getOutputStream());       //将学生学号传送到后台Servlet进行查询      BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));  //创建读取Servlet处理结果的BufferReader实例      String resultStr = br.readLine();               //读取后台Servlet以字符串形式返回的查询结果      displayResult(resultStr);                       //处理查询结果字符串获取查询结果并显示    }    catch(Exception ex)    {      ex.printStackTrace();    }  }  void displayResult(String resultStr)                //处理查询结果字符串获取查询结果并以表格方式显示  {    int colCount = Integer.parseInt(trimColCount(resultStr));      //解析查询结果字符串获取查询结果的字段数    int recordCount = Integer.parseInt(trimRecordCount(resultStr));  //解析查询结果字符串获取查询结果的记录数    if (recordCount==0)               //若查询结果为空,则返回查询结果为空的信息    {      JOptionPane msg = new JOptionPane();      JOptionPane.showMessageDialog(this, "数据库中没有您查询的学号", "数据库中没有您查询的学号!", 1);      lastQuery = false;                              //数据库查询操作失败    }    else                              //若查询结果不为空,则创建表格显示查询数据    {      String[][] result = new String[recordCount+1][colCount];  //创建存取查询结果的二维字符串数组      result = trimResult(colCount, recordCount, resultStr);    //解析查询结果字符串获取查询结果的各个字段存入查询结果数组中      title = new String[colCount];                             //获取显示数据的表格的标题      for(int i=0; i<colCount; i++)      {        title[i] = new String(result[0][i]);      }      initTable();                                             //初始化显示数据的表格      vector.removeAllElements();                              //刷新表格并显示查询结果数组中的结果      tm.fireTableStructureChanged();      for(int i=1; i<=recordCount; i++)      {        Vector rec_vector = new Vector();        for(int j=0; j<colCount; j++)        {          rec_vector.addElement(result[i][j]);        }        vector.addElement(rec_vector);      }      tm.fireTableStructureChanged();      lastQuery = true;                              //数据库查询操作成功    }  }  String trimColCount(String s)                   //解析查询结果字符串获取查询结果的字段数  {    int idx = s.indexOf('#');    return s.substring(0,idx);  }  String trimRecordCount(String s)                //解析查询结果字符串获取查询结果的记录数  {    int idx1 = s.indexOf('#');    int idx2 = s.indexOf('#',idx1+1);    return s.substring(idx1+1,idx2);  }  String[][] trimResult(int colCount, int recordCount, String s)    //解析查询结果字符串获取查询结果的各个字段  {    String[][] result = new String[recordCount+1][colCount];    int idx1 = s.indexOf('#');    int idx2 = s.indexOf('#',idx1+1);    int idx3;    for(int i=0; i<=recordCount; i++)    {      for(int j=0; j<colCount; j++)      {        idx3 = s.indexOf('#', idx2+1);        result[i][j] = s.substring(idx2+1, idx3);        idx2 = idx3;      }    }    return result;  }  void initTable() {                           //初始化显示数据集结果的表格    JTable table;    vector = new Vector();    tm = new AbstractTableModel() {            //实现表格抽象类的接口      public int getColumnCount() {        return title.length;      }      public int getRowCount() {        return vector.size();      }      public Object getValueAt(int row, int column) {        if(!vector.isEmpty())        {          return ((Vector)vector.elementAt(row)).elementAt(column);        }        else        {          return null;        }      }      public void setValueAt(Object value, int row, int column)      {      }      public String getColumnName(int column)      {        return title[column];      }      public Class getColumnClass(int c)      {        return getValueAt(0,c).getClass();      }      public boolean isCellEditable(int row, int column)      {        return false;      }    };    table = new JTable(tm);    table.setToolTipText("Display Query Result");    table.setAutoResizeMode(table.AUTO_RESIZE_SUBSEQUENT_COLUMNS);    table.setCellSelectionEnabled(false);    table.setShowHorizontalLines(true);    table.setShowVerticalLines(true);    scroll = new JScrollPane(table);    scroll.setBounds(20,60,550,200);    this.add(scroll,null);  }  public static void main(String[] args) {    queryApplet applet = new queryApplet();    applet.isStandalone = true;    Frame frame;    frame = new Frame() {      protected void processWindowEvent(WindowEvent e) {        super.processWindowEvent(e);        if (e.getID() == WindowEvent.WINDOW_CLOSING) {          System.exit(0);        }      }      public synchronized void setTitle(String title) {        super.setTitle(title);        enableEvents(AWTEvent.WINDOW_EVENT_MASK);      }    };    frame.setTitle("Applet Frame");    frame.add(applet, BorderLayout.CENTER);    applet.init();    applet.start();    frame.setSize(400,320);    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);    frame.setVisible(true);  }  void queryButton_actionPerformed(ActionEvent e) {  //把用户在applet中输入的查询学号传送给Servlet,然后把Servlet的处理结果使用表格显示    if(lastQuery==true)                               //若上次查询成功,则首先清除上次查询的表格    {      scroll.setVisible(false);      this.remove(scroll);    }    getResult();                                    //处理输入的查询学号并传送给Servlet,然后把Servlet的处理结果使用表格显示  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -