自己封装的一个 servlet 和 applet序列化通信的好例子

    技术2022-05-11  18

    //实体类 import java.io.Serializable;import java.sql.Timestamp;

     

    public class Employee implements Serializable { /**  *   */ private static final long serialVersionUID = -728103096813097978L; private int id; private String name; private Timestamp birthday; private String sex; private String schoolRecord; private String phone; private String email; private String address; public String getAddress() {  return address; } public void setAddress(String address) {  this.address = address; } public Timestamp getBirthday() {  return birthday; } public void setBirthday(Timestamp birthday) {  this.birthday = birthday; } public String getEmail() {  return email; } public void setEmail(String email) {  this.email = email; } public int getId() {  return id; } public void setId(int id) {  this.id = id; } public String getName() {  return name; } public void setName(String name) {  this.name = name; } public String getPhone() {  return phone; } public void setPhone(String phone) {  this.phone = phone; } public String getSchoolRecord() {  return schoolRecord; } public void setSchoolRecord(String schoolRecord) {  this.schoolRecord = schoolRecord; } public String getSex() {  return sex; } public void setSex(String sex) {  this.sex = sex; }  

    }

     

    //封装的DB

     

    import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;

     

    public class EmployeeSqLServerDB  {

    private  Connection conn=null;private static String jdbcDriverString="com.microsoft.jdbc.sqlserver.SQLServerDriver";private static String urlString="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=employee";private static String user="sa";private static String password="yy116"; 

     private EmployeeSqLServerDB() { }  private static EmployeeSqLServerDB db; static {  if(db== null)db=new EmployeeSqLServerDB(); }  public static EmployeeSqLServerDB newInstance() {  return db; } public static EmployeeSqLServerDB newInstance(String jdbcDriverString, String urlString) {  setJdbcDriverString(jdbcDriverString);  setUrlString(urlString);  return db; }  public Connection getConn() throws Exception {      try {   Class.forName(jdbcDriverString);    conn = DriverManager.getConnection( urlString, user, password );   } //Load the Driver catch (SQLException e) {  // TODO Auto-generated catch block  e.printStackTrace();  throw new Exception("数据库连接失败!"); } catch (ClassNotFoundException e) {    e.printStackTrace();  throw new Exception("数据库驱动包加载失败!"); } return conn;}public  Statement getStatement(Connection conn) throws Exception{ Statement stmt=null;  try {  stmt=conn.createStatement(); } catch (SQLException e) {  e.printStackTrace();  throw new Exception("[数据库操作错误!]"+e.getErrorCode()+":"+e.getMessage()); } return stmt;}public ResultSet executeQuery(Statement stmt,String sql) throws Exception{ ResultSet res=null; try {  res=stmt.executeQuery(sql); } catch (SQLException e) {  // TODO Auto-generated catch block  e.printStackTrace();  throw new Exception("[数据库操作错误!]"+e.getErrorCode()+":"+e.getMessage()); } return res;}public  int executeUpate(Statement stmt,String sql) throws Exception{ try {  return stmt.executeUpdate(sql); } catch (SQLException e) {  // TODO Auto-generated catch block  e.printStackTrace();  throw new Exception("[数据库更新操作错误!]"+e.getErrorCode()+":"+e.getMessage()); }

    }public PreparedStatement getPreparedStatement(Connection conn,String sql) throws Exception{ PreparedStatement pstmt=null;  try {  pstmt=conn.prepareStatement(sql); } catch (SQLException e) {  // TODO Auto-generated catch block  e.printStackTrace();  throw new Exception("[数据库操作错误!]"+e.getErrorCode()+":"+e.getMessage()); } return pstmt;}public  PreparedStatement getPreparedStatement(Connection conn,String sql,int autoGeneratedKeys) throws SQLException{ PreparedStatement pstmt=null;    pstmt=conn.prepareStatement(sql,autoGeneratedKeys);    return pstmt;  }  public void close(Connection conn) throws Exception  {   try   {    if(conn!=null)    {          conn.close();     conn=null;    }   }catch (SQLException e) {    e.printStackTrace();    throw new Exception("[数据库关闭操作错误!]"+e.getErrorCode()+":"+e.getMessage());   }  }  public void close(ResultSet rs) throws Exception  {   try   {    if(rs!=null)    {          rs.close();     rs=null;    }   }catch (SQLException e) {    e.printStackTrace();    throw new Exception("[数据库关闭操作错误!]"+e.getErrorCode()+":"+e.getMessage());   }  }

      public void close(Statement stmt) throws Exception  {   try   {    if(stmt!=null)    {          stmt.close();     stmt=null;    }   }catch (SQLException e) {    e.printStackTrace();    throw new Exception("[数据库关闭操作错误!]"+e.getErrorCode()+":"+e.getMessage());   }  }  public static EmployeeSqLServerDB getDb() {   return db;  }  public static void setDb(EmployeeSqLServerDB db) {   EmployeeSqLServerDB.db = db;  }  public static String getJdbcDriverString() {   return jdbcDriverString;  }  public static void setJdbcDriverString(String jdbcDriverString) {   EmployeeSqLServerDB.jdbcDriverString = jdbcDriverString;  }  public static String getPassword() {   return password;  }  public static void setPassword(String password) {   EmployeeSqLServerDB.password = password;  }  public static String getUrlString() {   return urlString;  }  public static void setUrlString(String urlString) {   EmployeeSqLServerDB.urlString = urlString;  }  public static String getUser() {   return user;  }  public static void setUser(String user) {   EmployeeSqLServerDB.user = user;  }      

    }

    //封装的DAO

     

    package com.zcsoft.test.employee;

    import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;

    import java.sql.Statement;

    import java.text.SimpleDateFormat;

    import java.util.ArrayList;import java.util.List;

    public class EmploySqlServerDAO {

     private static EmploySqlServerDAO dao; private EmployeeSqLServerDB db;

     static {  if (dao == null)   dao = new EmploySqlServerDAO(); }

     private EmploySqlServerDAO() {  // TODO 自动生成构造函数存根 }

     public static EmploySqlServerDAO newInstance(EmployeeSqLServerDB db) {  dao.setDb(db);  return dao; }

     public void addEmployee(Employee e) throws Exception {  Connection conn = db.getConn();  String sql = "insert into employee2(name,birthday,sex,schoolrecord,phone,email,addr) values(?,?,?,?,?,?,?)";  PreparedStatement pstmt = db.getPreparedStatement(conn, sql);

      pstmt.setString(1, e.getName());  pstmt.setTimestamp(2, e.getBirthday());  pstmt.setString(3, e.getSex());  pstmt.setString(4, e.getSchoolRecord());  pstmt.setString(5, e.getPhone());  pstmt.setString(6, e.getEmail());  pstmt.setString(7, e.getAddress());  pstmt.executeUpdate();

      db.close(pstmt);  db.close(conn);

     }

     public Employee getEmployeeByID(int employeeID) throws Exception {  Connection conn = db.getConn();

      String sql = "select * from employee2 where id=" + employeeID;  Employee e = new Employee();  Statement stmt = db.getStatement(conn);  ResultSet rs = db.executeQuery(stmt, sql);

      while (rs.next()) {   e.setId(rs.getInt(1));   e.setName(rs.getString(2));   e.setBirthday(rs.getTimestamp(3));   e.setSex(rs.getString(4));   e.setSchoolRecord(rs.getString(5));   e.setPhone(rs.getString(6));   e.setEmail(rs.getString(7));   e.setAddress(rs.getString(8));  }

      db.close(rs);  db.close(stmt);  db.close(conn);

      return e;

     }

     public List<Employee> getEmployees() throws Exception {  Connection conn = db.getConn();  String sql = "select * from employee2 order by id desc";

      List<Employee> employees = new ArrayList<Employee>();  Statement stmt = db.getStatement(conn);  ResultSet rs = db.executeQuery(stmt, sql);

      while (rs.next()) {   Employee e = new Employee();   e.setId(rs.getInt(1));   e.setName(rs.getString(2));   e.setBirthday(rs.getTimestamp(3));   e.setSex(rs.getString(4));   e.setSchoolRecord(rs.getString(5));   e.setPhone(rs.getString(6));   e.setEmail(rs.getString(7));   e.setAddress(rs.getString(8));   employees.add(e);  }

      db.close(rs);  db.close(stmt);  db.close(conn);

      return employees; }

     public void removeEmployee(Employee e) throws Exception {

      Connection conn = db.getConn();

      String sql = "delete from employee2 ";

      sql += "where id =" + e.getId();

      Statement stmt = db.getStatement(conn);

      db.executeUpate(stmt, sql);

      db.close(stmt);  db.close(conn);

     }

     public void updateEmployee(Employee e) throws Exception {  Connection conn = db.getConn();

      String sql = "update employee2 set ";  sql += "name='" + e.getName() + "'";  sql += ",birthday='"    + new SimpleDateFormat("yyyy-MM-dd").format(e.getBirthday())    + "'";  sql += ",sex='" + e.getSex() + "'";  sql += ",schoolrecord='" + e.getSchoolRecord() + "'";  sql += ",phone='" + e.getPhone() + "'";  sql += ",email='" + e.getEmail() + "'";  sql += ",addr='" + e.getAddress() + "'";  sql += "where id =" + e.getId();

      Statement stmt = db.getStatement(conn);

      db.executeUpate(stmt, sql);

      db.close(stmt);  db.close(conn);

     }

     public EmployeeSqLServerDB getDb() {  return db; }

     public void setDb(EmployeeSqLServerDB db) {  this.db = db; }

    }

     

    //封装的序列化传输类

    package com.zcsoft.test.employee;

    import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.io.Serializable;import java.net.HttpURLConnection;import java.net.URL;

    public class Transport implements Serializable {

     /**  *   */ private static final long serialVersionUID = 1L; private int role = 0; private boolean success = false; private Object transportObject = null; private String errorMessage = null;

     public int getRole() {  return role; }

     public void setRole(int role) {  this.role = role; }

     public boolean isSuccess() {  return success; }

     public void setSuccess(boolean success) {  this.success = success; }

     public Object getTransportObject() {  return transportObject; }

     public void setTransportObject(Object transportObject) {  this.transportObject = transportObject; }

     public String getErrorMessage() {  return errorMessage; }

     public void setErrorMessage(String errorMessage) {  this.errorMessage = errorMessage; }

     public static HttpURLConnection getUrlConnection(String url)   throws IOException {

      URL servletURL = new URL(url);  HttpURLConnection servletConnection = (HttpURLConnection) servletURL    .openConnection();  servletConnection.setRequestMethod("POST");  servletConnection.setDoOutput(true);  servletConnection.setDoInput(true);  servletConnection.setUseCaches(false);

      servletConnection.setRequestProperty("Content-type",    "application/octet-stream");  return servletConnection;

     }

     public static Transport loadFromInputStream(InputStream is)   throws IOException, ClassNotFoundException {  Transport t = new Transport();

      ObjectInputStream ois = new ObjectInputStream(is);  t = (Transport) ois.readObject();  ois.close();

      return t;

     }

     public static void sendToOutputstream(OutputStream os, Transport t)   throws IOException {  ObjectOutputStream oos = new ObjectOutputStream(os);  oos.writeObject(t);  oos.flush();  oos.close();

     }}

     

    // applet

     

    import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;

    import java.awt.event.ActionEvent;import java.awt.event.ActionListener;

    import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.IOException;

    import java.net.HttpURLConnection;

    import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import java.util.Vector;

    import javax.swing.JApplet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;

    import com.zcsoft.test.table.SortTableModel;

    public class EmployeeJApplet extends JApplet { /**  *   */

     public static int pageSize = 12; private static final long serialVersionUID = -863616962167228283L; private JTextField nameField; private JTextField birthdayField; private JComboBox sexBox; private JComboBox schoolRecordBox; private JTextField phoneField; private JTextField emailField; private JTextField addrField;

     private JTable mainTable;

     private JButton addButton; private JButton deleteButton; private JButton updateButton; private JButton refresh; private javax.swing.JLabel allCount; SortTableModel stableModel=null;

     private List<Employee> employees = new ArrayList<Employee>();

     public void launch() {  JLabel addrLabel;  JLabel allCountLabel;  JLabel birthdayLabel;  JLabel emailLabel;  JLabel phoneLabel;  JLabel sexLabel;  JLabel schoolRecordLabel;  JLabel nameLabel;  JLabel inforLabel=new JLabel("~友情提示~:双击表头可以自动排序         ");;  JPanel topPanel = new JPanel();  JScrollPane tablePane = new JScrollPane(mainTable);  JPanel bottomPanel = new JPanel();

      nameLabel = new JLabel();  schoolRecordLabel = new JLabel();  addrLabel = new JLabel();  birthdayLabel = new JLabel();  phoneLabel = new JLabel();  sexLabel = new JLabel();  emailLabel = new JLabel();  allCountLabel = new JLabel();  refresh=new JButton("刷新");

      nameField = new JTextField();  birthdayField = new JTextField();  phoneField = new JTextField();  emailField = new JTextField();  addrField = new JTextField();  sexBox = new JComboBox();  schoolRecordBox = new JComboBox(new String[] { "大专", "本科",    "硕士", "博士" });  mainTable = new JTable();  allCount = new JLabel();  addButton = new JButton();  updateButton = new JButton();  deleteButton = new JButton();

      nameLabel.setText("姓名:"); // NOI18N

      schoolRecordLabel.setText("学历:"); // NOI18N  schoolRecordLabel.setName("schoolRecordLabel"); // NOI18N

      addrLabel.setText("联系地址:"); // NOI18N  addrLabel.setName("addrLabel"); // NOI18N

      birthdayLabel.setText("生日:"); // NOI18N

      phoneLabel.setText("电话:"); // NOI18N

      sexLabel.setText("性别:"); // NOI18N

      emailLabel.setText("邮件:"); // NOI18N

      sexBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {    "男", "女" }));

      addButton.setText("添加"); // NOI18N  addButton.addActionListener(new OperateMonitor());

      updateButton.setText("修改"); // NOI18N  updateButton.addActionListener(new OperateMonitor());

      deleteButton.setText("删除"); // NOI18N  deleteButton.addActionListener(new OperateMonitor());

      mainTable.addMouseListener(new OperateMonitor());

      allCountLabel.setText("条记录");

      allCount.setForeground(new java.awt.Color(255, 0, 51));

      GridBagLayout gridBag = new GridBagLayout();  GridBagConstraints c = new GridBagConstraints();  topPanel.setLayout(gridBag);  c.fill = GridBagConstraints.BOTH;

      c.weightx = 1.0;  gridBag.setConstraints(nameLabel, c);  gridBag.setConstraints(birthdayLabel, c);  gridBag.setConstraints(sexLabel, c);

      c.weightx = 8.0;  gridBag.setConstraints(nameField, c);  gridBag.setConstraints(birthdayField, c);  c.gridwidth = GridBagConstraints.REMAINDER;  gridBag.setConstraints(sexBox, c);

      c.gridwidth = 1;  c.weightx = 1.0;  gridBag.setConstraints(schoolRecordLabel, c);  gridBag.setConstraints(phoneLabel, c);  gridBag.setConstraints(emailLabel, c);

      c.weightx = 8.0;  gridBag.setConstraints(schoolRecordBox, c);  gridBag.setConstraints(phoneField, c);  c.gridwidth = GridBagConstraints.REMAINDER;  gridBag.setConstraints(emailField, c);

      c.gridwidth = 1;  c.weightx = 1.0;  gridBag.setConstraints(addrLabel, c);  c.gridwidth = GridBagConstraints.REMAINDER;  gridBag.setConstraints(addrField, c);

      topPanel.add(nameLabel);  topPanel.add(nameField);  topPanel.add(birthdayLabel);  topPanel.add(birthdayField);  topPanel.add(sexLabel);  topPanel.add(sexBox);

      topPanel.add(schoolRecordLabel);  topPanel.add(schoolRecordBox);  topPanel.add(phoneLabel);  topPanel.add(phoneField);  topPanel.add(emailLabel);  topPanel.add(emailField);

      topPanel.add(addrLabel);  topPanel.add(addrField);

      tablePane.setViewportView(mainTable);

      FlowLayout flowLayout = new FlowLayout();  bottomPanel.setLayout(flowLayout);

        bottomPanel.add(inforLabel);  bottomPanel.add(allCount);  bottomPanel.add(allCountLabel);

      flowLayout.setAlignment(FlowLayout.RIGHT);

        refresh.addActionListener(new OperateMonitor());  bottomPanel.add(addButton);  bottomPanel.add(updateButton);  bottomPanel.add(deleteButton);  bottomPanel.add(refresh);

        mainTable.getTableHeader().addMouseListener(new MouseAdapter(){   @Override   public void mouseClicked(MouseEvent e) {    if(e.getClickCount()<2)     return;        int column=mainTable.getTableHeader().columnAtPoint(e.getPoint());    stableModel.sort(column);       }  });  this.setLayout(new BorderLayout());  this.add(topPanel, BorderLayout.NORTH);  this.add(tablePane, BorderLayout.CENTER);  this.add(bottomPanel, BorderLayout.SOUTH);

      this.setSize(new Dimension(600, 400));   }

     @Override public void init() {  // TODO 自动生成方法存根  super.init();  launch();

      load(); }

     private void load() {  loadEmployees();  loadTable();   }

     public void setAllCount(int count) {  allCount.setText(count + ""); }

     public int getAllCount() {  return Integer.parseInt(allCount.getText()); }

     public void deleteOperation(ActionEvent arg0) {  int row = mainTable.getSelectedRow();  if (row < 0) {   JOptionPane.showMessageDialog(null, "请先选择要删除的一行");  } else {   if (JOptionPane.showConfirmDialog(null, "真的要删除吗?", "请您确认",     JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) {

        try {     this.deleteEmployeeToRemotion(employees.get(row));    } catch (IOException e) {     // TODO Auto-generated catch block     e.printStackTrace();     JOptionPane.showMessageDialog(null,       "对不起出错啦!该错误可能是由不正常连接引起的!:" + e.getMessage(),       "出错啦!", JOptionPane.ERROR_MESSAGE);    } catch (Exception e) {     // TODO Auto-generated catch block     e.printStackTrace();     JOptionPane       .showMessageDialog(null, "对不起出错啦: "         + e.getMessage(), "出错啦!",         JOptionPane.ERROR_MESSAGE);    }    employees.remove(row);

        this.setAllCount(this.getAllCount() - 1);    this.loadTable();   }  } }

     public void updateOperation(ActionEvent arg0) {

      int row = mainTable.getSelectedRow();  if (row < 0) {   JOptionPane.showMessageDialog(null, "请先选择要修改的一行");  } else {   if (JOptionPane.showConfirmDialog(null, "真的要修改吗?", "请您确认",     JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) {

        try {     Employee e = employees.get(row);     loadEmployeeFromField(e);     this.updateEmployeeToRemotion(e);    } catch (IOException e1) {     // TODO Auto-generated catch block     e1.printStackTrace();     JOptionPane.showMessageDialog(null,       "对不起出错啦!该错误可能是由不正常连接引起的!:" + e1.getMessage(),       "出错啦!", JOptionPane.ERROR_MESSAGE);    } catch (Exception e1) {     // TODO Auto-generated catch block     e1.printStackTrace();     JOptionPane.showMessageDialog(null, "对不起出错啦: "       + e1.getMessage(), "出错啦!",       JOptionPane.ERROR_MESSAGE);     this.loadEmployees();    }

        this.loadTable();   }  } }

     public void addOperation(ActionEvent arg0) {  Employee e = new Employee();  if (loadEmployeeFromField(e)) {   try {    this.addEmployeeToRemotion(e);   } catch (IOException e1) {    // TODO Auto-generated catch block    e1.printStackTrace();    JOptionPane.showMessageDialog(null, "对不起出错啦!该错误可能是由不正常连接引起的!:"      + e1.getMessage(), "出错啦!", JOptionPane.ERROR_MESSAGE);   } catch (Exception e1) {    // TODO Auto-generated catch block    e1.printStackTrace();    JOptionPane.showMessageDialog(null, "对不起出错啦: "      + e1.getMessage(), "出错啦!", JOptionPane.ERROR_MESSAGE);   }   this.load();  } }

     public void mouseClickedTableOperation(MouseEvent arg0) {

      int currentRow = mainTable.getSelectedRow();

      System.out.println(currentRow);  if (currentRow < employees.size()) {   Employee e = employees.get(currentRow);   setEmployeeToField(e);

      } }

     private void loadTable() {

      Vector<Vector<String>> vs = new Vector<Vector<String>>();  for (Employee e : employees) {   Vector<String> v = new Vector<String>();   v.add(e.getName());   v.add(new SimpleDateFormat("yyyy-MM-dd").format(e.getBirthday()));   v.add(e.getSex());   v.add(e.getSchoolRecord());   v.add(e.getPhone());   v.add(e.getEmail());   v.add(e.getAddress());   vs.add(v);  }  Vector<String> header = new Vector<String>();  header.add("姓名");  header.add("出生日期");  header.add("性别");  header.add("文化程度");  header.add("联系电话");  header.add("电子邮件");  header.add("联系地址");

      DefaultTableModel tableModel = new DefaultTableModel(vs, header);  stableModel=new SortTableModel(tableModel);  mainTable.setModel(stableModel);

     }

     private void loadEmployees() {

      employees = new ArrayList<Employee>();

      try {   employees = this.loadEmployeesFromRemotion();   this.setAllCount(employees.size());  } catch (IOException e1) {   // TODO Auto-generated catch block   e1.printStackTrace();   JOptionPane.showMessageDialog(null, "对不起出错啦!该错误可能是由不正常连接引起的!:"     + e1.getMessage(), "出错啦!", JOptionPane.ERROR_MESSAGE);  } catch (Exception e1) {   // TODO Auto-generated catch block   e1.printStackTrace();   JOptionPane.showMessageDialog(null, "对不起出错啦: " + e1.getMessage(),     "出错啦!", JOptionPane.ERROR_MESSAGE);  }

     }

     private boolean setEmployeeToField(Employee e) {  this.nameField.setText(e.getName());  try {   this.birthdayField.setText(new SimpleDateFormat("yyyy-MM-dd")     .format(e.getBirthday()));  } catch (NumberFormatException ne) {   JOptionPane.showMessageDialog(null, "对不起,[" + e.getName()     + "] 信息加载失败!");   return false;  }  this.sexBox.setSelectedItem(e.getSex());  this.schoolRecordBox.setSelectedItem(e.getSchoolRecord());  this.phoneField.setText(e.getPhone());  this.emailField.setText(e.getEmail());  this.addrField.setText(e.getAddress());

      return true; }

     private boolean loadEmployeeFromField(Employee e) {  if (this.nameField.getText().trim().equals("")    || this.nameField.getText().trim().equals("")    || this.birthdayField.getText().trim().equals("")    || this.phoneField.getText().trim().equals("")    || this.emailField.getText().trim().equals("")    || this.addrField.getText().equals("")) {   JOptionPane.showMessageDialog(null, "对不起,请把信息填写完整!");   return false;  }  e.setName(this.nameField.getText());  try {   e.setBirthday(Timestamp.valueOf(birthdayField.getText()     + " 00:00:00"));  } catch (Exception ee) {   JOptionPane.showMessageDialog(null, "生日请用请用 yyyy-MM-dd格式!");   return false;  }  e.setSex((String) sexBox.getSelectedItem());  e.setSchoolRecord((String) schoolRecordBox.getSelectedItem());  e.setPhone(this.phoneField.getText());  e.setEmail(emailField.getText());  e.setAddress(addrField.getText());  return true; }

     private List<Employee> loadEmployeesFromRemotion() throws IOException,   ClassNotFoundException, Exception {  HttpURLConnection uc = Transport    .getUrlConnection("http://localhost:8080/test3/employee");  Transport t = new Transport();  t.setRole(1);  Transport.sendToOutputstream(uc.getOutputStream(), t);

      t = Transport.loadFromInputStream(uc.getInputStream());

      if (!t.isSuccess()) {   throw new Exception(t.getErrorMessage());  }

      else {   List<Employee> employees = (List<Employee>) t.getTransportObject();

       return employees;  }

     }

     private void addEmployeeToRemotion(Employee e) throws IOException,   ClassNotFoundException, Exception {  HttpURLConnection uc;

      uc = Transport.getUrlConnection("http://localhost:8080/test3/employee");  Transport t = new Transport();  t.setRole(2);  t.setTransportObject(e);

      Transport.sendToOutputstream(uc.getOutputStream(), t);

      t = Transport.loadFromInputStream(uc.getInputStream());

      if (!t.isSuccess()) {   throw new Exception(t.getErrorMessage());  }

     }

     private void updateEmployeeToRemotion(Employee e) throws IOException,   ClassNotFoundException, Exception {  HttpURLConnection uc;  uc = Transport.getUrlConnection("http://localhost:8080/test3/employee");  Transport t = new Transport();  t.setRole(3);  t.setTransportObject(e);

      Transport.sendToOutputstream(uc.getOutputStream(), t);

      t = Transport.loadFromInputStream(uc.getInputStream());

      if (!t.isSuccess()) {   throw new Exception(t.getErrorMessage());  }

     }

     private void deleteEmployeeToRemotion(Employee e) throws IOException,   ClassNotFoundException, Exception {  HttpURLConnection uc;  uc = Transport.getUrlConnection("http://localhost:8080/test3/employee");  Transport t = new Transport();  t.setRole(4);  t.setTransportObject(e);

      Transport.sendToOutputstream(uc.getOutputStream(), t);

      t = Transport.loadFromInputStream(uc.getInputStream());

      if (!t.isSuccess()) {   throw new Exception(t.getErrorMessage());  } }

     class OperateMonitor extends MouseAdapter implements ActionListener {  public void actionPerformed(ActionEvent e) {

       if (e.getSource() == addButton)    addOperation(e);   if (e.getSource() == updateButton)    updateOperation(e);   if (e.getSource() == deleteButton)    deleteOperation(e);   if (e.getSource() == refresh)   {    load();   }  }

      public void mouseClicked(MouseEvent arg0) {   mouseClickedTableOperation(arg0);  }

     }

    }

     

    //servlet

     

    import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

    public class EmployeeServlet extends HttpServlet {

     /**  *   */ private static final long serialVersionUID = 3649463966187564412L; /**  *   */ EmploySqlServerDAO mgr = EmploySqlServerDAO.newInstance(EmployeeSqLServerDB   .newInstance());

     public void service(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {

      response.setContentType("application/octet-stream");

      Transport t = null;  try {   t = (Transport) Transport.loadFromInputStream(request     .getInputStream());

       switch (t.getRole()) {   case 1: {    List<Employee> employees = mgr.getEmployees();    t.setTransportObject(employees);    t.setSuccess(true);    break;   }   case 2: {    Employee e = (Employee) t.getTransportObject();    mgr.addEmployee(e);    t.setTransportObject(null);    t.setSuccess(true);    break;   }   case 3:

       {    Employee e = (Employee) t.getTransportObject();    mgr.updateEmployee(e);    t.setTransportObject(null);    t.setSuccess(true);   }    break;   case 4: {    Employee e = (Employee) t.getTransportObject();    mgr.removeEmployee(e);    t.setTransportObject(null);    t.setSuccess(true);   }    break;

       default:    break;   }  } catch (Exception e) {   // TODO Auto-generated catch block   e.printStackTrace();   t.setSuccess(false);   t.setErrorMessage(e.getMessage());  }    Transport.sendToOutputstream(response.getOutputStream(), t);

     }

    }

     

    //自己定义的表格排序模板

     

    import java.util.Arrays;

    import javax.swing.table.AbstractTableModel;import javax.swing.table.TableModel;

    public class SortTableModel extends AbstractTableModel {

     /**  *   */ private static final long serialVersionUID = 1L;

     private TableModel model;

     public int sortColumn;

     private Row row[];

     public SortTableModel(TableModel model) {  super();  this.model = model;  row = new Row[model.getRowCount()];  for (int i = 0; i < row.length; i++) {   row[i] = new Row(i);  } }

     public int getColumnCount() {  // TODO 自动生成方法存根  return model.getColumnCount(); }

     public int getRowCount() {

      return model.getRowCount(); }

     public Object getValueAt(int r, int c) {

      return model.getValueAt(row[r].getIndex(), c); }

     @Override public boolean isCellEditable(int r, int c) {  // TODO 自动生成方法存根  return model.isCellEditable(r, c); }

     @Override public String getColumnName(int arg0) {  // TODO 自动生成方法存根  return model.getColumnName(arg0); }

     @Override public Class<?> getColumnClass(int c) {  // TODO 自动生成方法存根  return getValueAt(0, c).getClass(); }

     public void sort(int sortColumn) {  this.sortColumn = sortColumn;  Arrays.sort(row);

      this.fireTableDataChanged(); }

     private class Row implements Comparable<Row> {  private int index;

      public Row(int index) {   super();   this.index = index;  }

      public int compareTo(Row other) {   Object a = model.getValueAt(index, sortColumn);   Object b = model.getValueAt(other.getIndex(), sortColumn);

       if (a instanceof Comparable) {    return ((Comparable) a).compareTo(b);

       } else    return a.toString().compareTo(b.toString());  }

      public int getIndex() {   return index;  }

      public void setIndex(int index) {   this.index = index;  }

     }}

     

     


    最新回复(0)