自己封裝的一個 servlet 和 applet 序列化通訊的好例子
//實體類
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;
}
}
}
相關文章
- applet 和servlet通訊問題APPServlet
- Applet與servlet通訊問題.APPServlet
- Servlet&Applet通訊補遺 (轉)ServletAPP
- 封裝一個自己的js庫封裝JS
- 一個簡單的netty通訊的例子Netty
- 問一個透過物件序列化servlet給applet傳送影像的問題!!急!物件ServletAPP
- http通訊類的封裝HTTP封裝
- 求一個全能的封裝好的jdbc bean封裝JDBCBean
- eventBus(封裝) 一個巧妙的解決vue同級元件通訊的思路封裝Vue元件
- smack和openfire通訊的簡單例子Mac單例
- 分享個自己封裝的限流trait封裝AI
- 從連結串列出發封裝一個自己的工具封裝
- 淺析jQuery原理並仿寫封裝一個自己的庫jQuery封裝
- AVFoundation | 封裝一個好用的視訊播放器封裝播放器
- 自己封裝的一些業務小元件封裝元件
- 網路通訊1:位元組流的封裝封裝
- 對MFC封裝Windows通訊API的研究 (轉)封裝WindowsAPI
- 如何設計一個好的通訊網路協議協議
- Application和servlet間通訊問題APPServlet
- 用java實現一個簡單的序列化的例子(轉)Java
- 用java實現一個簡單的序列化的例子 (轉)Java
- 劍走偏鋒之Vue 元件通訊(一)—通過$parent和$children構建自己的通訊方式Vue元件
- 封裝一個通用的PopupWindow封裝
- WebRTC:一個視訊聊天的簡單例子Web單例
- "MPlayer+TextureView" : 封裝一個視訊播放器的 "SDK"View封裝播放器
- MIDP與CGI和Servlet間通訊(轉)Servlet
- 一個簡單的 Amqp 封裝MQ封裝
- 採用管道進行通訊的例子
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(一)封裝
- 一個SystemC執行緒與SystemVerilog執行緒通訊的例子執行緒
- Applet間的通訊(2)--Tricks of the Java Programming Gurus (轉)APPJava
- vue通俗易懂封裝一個樹元件?(複製貼上就是自己的了?)Vue封裝元件
- 8.7 一個模組的封裝過程封裝
- Android 封裝一個通用的PopupWindowAndroid封裝
- React的6種通訊方式(附帶例子)React
- 一個完整的COM通訊類
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(三)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(四)封裝