
基于bs结构的applet和servlet通信实例.doc
32页基于 B/S 架构的 applet 和 servlet 通信Applet 的优缺点这里也不想细说,百度上面多的是,只不过实例多为一个版本,这几 天也研究了一下,写了个小例子,希望可以对大家有用. 1.首先页面如下,主要完成的是增删改查的操作,数据传递主要依靠的是对象的序列化, 封装了两个对象 TempObject(客户到服务端)和 ServerObject(服务到客户端),页面中的刷新是 全表格的刷新,增删改操作后有局部动态刷新,整体布局为 GridBagLayout 和 BorderLayout 相结合,包的划分如下:2.代码部分 Client 端主要是 ManageInfo,java:代码如下: package com.zcsoft.frame;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import .MalformedURLException; import .URL; import .URLConnection; import java.util.Calendar; import java.util.List; import java.util.Vector;import javax.print.attribute.standard.Severity; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; 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.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.LineBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel;import sun.security.krb5.internal.UDPClient;import com.sun.corba.se.impl.ior.WireObjectKeyTemplate; import com.zcsoft.dao.EmployeeDao; import com.zcsoft.test.Employee; import com.zcsoft.test.ServerObject; import com.zcsoft.test.TempObject;/*** 页面窗体* @author training**/ public class ManageInfo extends JApplet { private JTable tab; private DefaultTableModel tabModel;//文本框 private JTextField txtName,txtBirth,txtPhone,txtEmail,txtAddress; //下拉列表 private JComboBox cboSex,cboEducation; //按钮 private JButton btnUpd,btnAdd,btnMod,btnDel; private URL url; private URLConnection urlcon;private InputStream ins=null; private ObjectInputStream ois=null; private ObjectOutputStream oos=null; private Object result=null;private Calendar calendar; public ManageInfo() { setBounds(200, 200, 900, 700); setLayout(new BorderLayout()); //组件初始化 componentInit(); //校验服务端 if(checkServer()) { //数据初始化 InitData(); } //绑定监听器 bindListener(); //cboEducation.addActionListener() /*tabModel.addRow(rowData); tabModel.setValueAt(aValue, row, column); tabModel.removeRow();*/ //tab.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ //@Override//public void valueChanged(ListSelectionEvent e) { // //} //}); }/*** 组件初始化*/ private void componentInit() { //用于 BorderLayout 布局的上中下面板 JPanel pnlTop,pnlFoot; JScrollPane spnlTab;//实例化文本框 txtName=new JTextField(10); txtBirth=new JTextField(10); txtPhone=new JTextField(10); txtEmail=new JTextField(10); txtAddress=new JTextField(40);//实例化下拉列表 cboEducation=new JComboBox(new String[]{“博士“,“硕士“,“本科“,“专科“,“高中“}); cboSex=new JComboBox(new String[]{“男“,“女“});//实例化按钮 btnUpd=new JButton(“刷新“); btnAdd=new JButton(“添加“); btnDel=new JButton(“删除“); btnMod=new JButton(“修改“);//主体部分 pnlTop=new JPanel(new GridBagLayout()); pnlTop.setBorder(new LineBorder(Color.red,1)); //底部 pnlFoot=new JPanel();pnlFoot.add(btnUpd); pnlFoot.add(btnAdd); pnlFoot.add(btnMod); pnlFoot.add(btnDel);//实例化表格String[] columns=new String[]{“编号“,“姓名“,“出生年月“,“性别“,“文化程度“,“联系 “,“电子邮件“,“通讯地址“}; Object[][] data=null;tabModel=new DefaultTableModel(data,columns); tab=new JTable(tabModel);//禁止拖动 tab.getTableHeader().setReorderingAllowed(false);//实例化滚动面板,将表格加入其中 spnlTab=new JScrollPane(tab);//将组件添加至 pnlTop 中 GridBagConstraints gbc=new GridBagConstraints(); gbc.insets=new Insets(10,10,10,20); gbc.gridy=0; gbc.anchor=GridBagConstraints.NORTHWEST; pnlTop.add(new JLabel(“姓名“),gbc); pnlTop.add(txtName,gbc); pnlTop.add(new JLabel(“出生日期“),gbc); pnlTop.add(txtBirth,gbc); pnlTop.add(new JLabel(“性别“),gbc); pnlTop.add(cboSex,gbc);gbc.gridy=1; pnlTop.add(new JLabel(“文化程度“),gbc); pnlTop.add(cboEducation,gbc); pnlTop.add(new JLabel(“联系“),gbc); pnlTop.add(txtPhone,gbc); pnlTop.add(new JLabel(“电子邮件“),gbc); pnlTop.add(txtEmail,gbc);gbc.gridy=2; pnlTop.add(new JLabel(“通讯地址“),gbc); gbc.gridwidth=5; pnlTop.add(txtAddress,gbc);gbc.gridy=3; gbc.gridwidth=6; gbc.fill=GridBagConstraints.HORIZONTAL;this.add(pnlTop,BorderLayout.NORTH);this.add(spnlTab,BorderLayout.CENTER); this.add(pnlFoot,BorderLayout.SOUTH);} /*** 绑定监听器*/ private void bindListener() { btnUpd.addActionListener(new btnClick()); btnAdd.addActionListener(new btnClick()); btnDel.addActionListener(new btnClick()); btnMod.addActionListener(new btnClick()); tab.getSelectionModel().addListSelectionListener(new tabSelectedChange()); } /*** 表格变更行监听实现类* @author training**/ private class tabSelectedChange implements ListSelectionListener {@Override public void valueChanged(ListSelectionEvent e) { //获取选中的行的对象 if(tab.getSelectedRow()==-1) { return; } if(!。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






