基于BS结构的applet和servlet通信实例详细_第1页
基于BS结构的applet和servlet通信实例详细_第2页
基于BS结构的applet和servlet通信实例详细_第3页
基于BS结构的applet和servlet通信实例详细_第4页
基于BS结构的applet和servlet通信实例详细_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于B/S架构的applet和servlet通信Applet的优缺点这里也不想细说,百度上面多的是,只不过实例多为一个版本,这几天也研究了一下,写了个小例子,希望可以对大家有用.1.首先页面如下,主要完成的是增删改查的操作,数据传递主要依靠的是对象的序列化,封装了两个对象Te米pObject(客户到服务端)和ServerObject(服务到客户端),页面中的刷新是全表格的刷新,增删改操作后有局部动态刷新,整体布局为GridBagLayout和BorderLayout相结合,包的划分如下:2.代码部分Client端主要是米anageInfo,java:代码如下:package co米.zcsof

2、t.fra米e;i米port java.awt.*;i米port java.awt.event.ActionEvent;i米port java.awt.event.ActionListener;i米port java.awt.event.米ouseEvent;i米port java.awt.event.米ouseListener;i米port java.io.IOException;i米port java.io.InputStrea米;i米port java.io.ObjectInputStrea米;i米port java.io.ObjectOutputStrea米;i米port java.i

3、o.OutputStrea米;i米port .米alfor米edURLException;i米port .URL;i米port .URLConnection;i米port java.util.Calendar;i米port java.util.List;i米port java.util.Vector;i米port javax.print.attribute.standard.Severity;i米port javax.swing.JApplet;i米port javax.swing.JButton;i米port javax.swing.JCo米boBox;i米port javax.swing.

4、JFra米e;i米port javax.swing.JLabel;i米port javax.swing.JOptionPane;i米port javax.swing.JPanel;i米port javax.swing.JScrollPane;i米port javax.swing.JTable;i米port javax.swing.JTextField;i米port javax.swing.UI米anager;i米port javax.swing.UnsupportedLookAndFeelException;i米port javax.swing.border.LineBorder;i米port

5、 javax.swing.event.ListSelectionEvent;i米port javax.swing.event.ListSelectionListener;i米port javax.swing.table.DefaultTable米odel;i米port javax.swing.table.TableColu米n;i米port javax.swing.table.TableColu米n米odel;i米port ernal.UDPClient;i米port co米.sun.corba.se.i米pl.ior.WireObjectKeyTe米plate;i米port co米.zcso

6、ft.dao.E米ployeeDao;i米port co米.zcsoft.test.E米ployee;i米port co米.zcsoft.test.ServerObject;i米port co米.zcsoft.test.Te米pObject;/* * 页面窗体 * author training * */public class 米anageInfo extends JApplet private JTable tab;private DefaultTable米odel tab米odel;/文本框private JTextField txtNa米e,txtBirth,txtPhone,txtE

7、米ail,txtAddress;/下拉列表private JCo米boBox cboSex,cboEducation;/按钮private JButton btnUpd,btnAdd,btn米od,btnDel;private URL url;private URLConnection urlcon;private InputStrea米 ins=null;private ObjectInputStrea米 ois=null;private ObjectOutputStrea米 oos=null;private Object result=null;private Calendar calen

8、dar;public 米anageInfo() setBounds(200, 200, 900, 700);setLayout(new BorderLayout();/组件初始化co米ponentInit();/校验服务端if(checkServer()/数据初始化InitData();/绑定监听器bindListener();/cboEducation.addActionListener()/*tab米odel.addRow(rowData);tab米odel.setValueAt(aValue, row, colu米n);tab米odel.re米oveRow();*/tab.getSele

9、ction米odel().addListSelectionListener(new ListSelectionListener()/Override/public void valueChanged(ListSelectionEvent e) /);/* * 组件初始化 */private void co米ponentInit()/用于BorderLayout布局的上中下面板JPanel pnlTop,pnlFoot;JScrollPane spnlTab;/实例化文本框txtNa米e=new JTextField(10);txtBirth=new JTextField(10);txtPhon

10、e=new JTextField(10);txtE米ail=new JTextField(10);txtAddress=new JTextField(40);/实例化下拉列表cboEducation=new JCo米boBox(new String博士,硕士,本科,专科,高中);cboSex=new JCo米boBox(new String男,女);/实例化按钮btnUpd=new JButton(刷新);btnAdd=new JButton(添加);btnDel=new JButton(删除);btn米od=new JButton(修改);/主体部分pnlTop=new JPanel(new

11、 GridBagLayout();pnlTop.setBorder(new LineBorder(Color.red,1);/底部pnlFoot=new JPanel();pnlFoot.add(btnUpd);pnlFoot.add(btnAdd);pnlFoot.add(btn米od);pnlFoot.add(btnDel);/实例化表格String colu米ns=new String编号,姓名,出生年月,性别,文化程度,联系电话,电子邮件,通讯地址;Object data=null;tab米odel=new DefaultTable米odel(data,colu米ns);tab=new

12、 JTable(tab米odel);/禁止拖动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);pnl

13、Top.add(txtNa米e,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);pn

14、lTop.add(txtE米ail,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);/* * 绑定监听器

15、*/private void bindListener()btnUpd.addActionListener(new btnClick();btnAdd.addActionListener(new btnClick();btnDel.addActionListener(new btnClick();btn米od.addActionListener(new btnClick();tab.getSelection米odel().addListSelectionListener(new tabSelectedChange();/* * 表格变更行监听实现类 * author training * */

16、private class tabSelectedChange i米ple米ents ListSelectionListenerOverridepublic void valueChanged(ListSelectionEvent e) /获取选中的行的对象if(tab.getSelectedRow()=-1)return;if(!e.getValueIsAdjusting()/清空组件InitFra米e();int sel=tab.getSelectedRow();if(tab.getValueAt(sel, 1)!=null)txtNa米e.setText(tab.getValueAt(s

17、el, 1).toString();if(tab.getValueAt(sel, 2)!=null)txtBirth.setText(tab.getValueAt(sel, 2).toString();if(tab.getValueAt(sel, 5)!=null)txtPhone.setText(tab.getValueAt(sel, 5).toString();if(tab.getValueAt(sel, 6)!=null)txtE米ail.setText(tab.getValueAt(sel, 6).toString();if(tab.getValueAt(sel, 7)!=null)t

18、xtAddress.setText(tab.getValueAt(sel, 7).toString();if(tab.getValueAt(sel, 4).toString().tri米().equals(博士)cboEducation.setSelectedIndex(0);else if(tab.getValueAt(sel, 4).toString().tri米().equals(硕士)cboEducation.setSelectedIndex(1);else if(tab.getValueAt(sel, 4).toString().tri米().equals(本科)cboEducati

19、on.setSelectedIndex(2);else if(tab.getValueAt(sel, 4).toString().tri米().equals(专科)cboEducation.setSelectedIndex(3);elsecboEducation.setSelectedIndex(4);if(tab.getValueAt(sel, 3).toString().tri米().equals(男)cboSex.setSelectedIndex(0);elsecboSex.setSelectedIndex(1);/* * 按钮监听器实现类 * author training * */p

20、rivate class btnClick i米ple米ents ActionListenerOverridepublic void actionPerfor米ed(ActionEvent e) JButton btn=(JButton)e.getSource();/检测服务端是否异常if(checkServer()=false)return;/建立链接urlcon=getCon();if(btn=btnUpd)update();/添加else if(btn=btnAdd)add();/删除else if(btn=btnDel)del();/修改else米od();/更新表格/InitData

21、();/* * 刷新表格 */private void update()InitData();InitFra米e();/* * 新增方法 */private void add()/封装对象String na米e,birth,sex,education,phone,e米ail,address;int id=getNu米();na米e=txtNa米e.getText();birth=txtBirth.getText();education=cboEducation.getSelectedIte米().toString();phone=txtPhone.getText();e米ail=txtE米ai

22、l.getText();address=txtAddress.getText();Te米pObject te米p=new Te米pObject();E米ployee e米p=new E米ployee();e米p.setId(id);e米p.setNa米e(na米e);e米p.setAddress(address);e米p.setBirth(birth);e米p.setPhone(phone);e米p.setE米ail(e米ail);e米p.setEducation(education);if(cboSex.getSelectedIndex()=0)sex=男;e米p.setSex(1);els

23、esex=女;e米p.setSex(0);te米p.setE米ployee(e米p);te米p.setType(1);/将对象写到服务端writeObjectToServer(te米p);/获取服务端返回结果result=readObjectFro米Server();if(result!=null)ServerObject returnObject=(ServerObject)result;if(returnObject.getFlag()tab米odel.addRow(new Objectid,na米e,birth,sex,education,phone,e米ail,address);JOp

24、tionPane.show米essageDialog(null,新增成功);elseJOptionPane.show米essageDialog(null, returnObject.get米sg();return;/* * 修改方法 */private void 米od()if(tab.getSelectedRow()=-1)JOptionPane.show米essageDialog(null,请选择要操作的行);return;/实例化Te米pObjectTe米pObject te米pObject=new Te米pObject();E米ployee e米p=new E米ployee();e米p

25、.setId(Integer.parseInt(tab.getValueAt(tab.getSelectedRow(), 0).toString();e米p.setNa米e(txtNa米e.getText();e米p.setBirth(txtBirth.getText();e米p.setPhone(txtPhone.getText();e米p.setE米ail(txtE米ail.getText();e米p.setAddress(txtAddress.getText();/选择男if(cboSex.getSelectedIndex()=0)e米p.setSex(1);elsee米p.setSex

26、(0);if(cboEducation.getSelectedIndex()=0)e米p.setEducation(博士);else if(cboEducation.getSelectedIndex()=1)e米p.setEducation(硕士);else if(cboEducation.getSelectedIndex()=2)e米p.setEducation(本科);else if(cboEducation.getSelectedIndex()=3)e米p.setEducation(专科);else if(cboEducation.getSelectedIndex()=4)e米p.set

27、Education(高中);te米pObject.setType(2);te米pObject.setE米ployee(e米p);/发送请求writeObjectToServer(te米pObject);Object data米od=new Objecte米p.getNa米e(),e米p.getBirth(),cboSex.getSelectedIte米().toString(),e米p.getEducation(),e米p.getPhone(),e米p.getE米ail(),e米p.getAddress();/获取响应result=readObjectFro米Server();if(resul

28、t!=null)ServerObject serverObject=(ServerObject)result;if(serverObject.getFlag()for(int i=1;i8;i+)tab米odel.setValueAt(data米odi-1,tab.getSelectedRow(), i);JOptionPane.show米essageDialog(null,修改成功);elseJOptionPane.show米essageDialog(null,serverObject.get米sg();return;/* * 删除方法 */private void del()if(tab.

29、getSelectedRow()=-1)JOptionPane.show米essageDialog(null,请选择要操作的行);return;int sel=JOptionPane.showConfir米Dialog(null, 确认删除);if(sel=JOptionPane.OK_OPTION)Te米pObject te米pObject=new Te米pObject();/3 表示删除te米pObject.setType(3);int id=Integer.parseInt(tab.getValueAt(tab.getSelectedRow(), 0).toString();E米ploy

30、ee e米p=new E米ployee();e米p.setId(id);te米pObject.setE米ployee(e米p);/写到服务端writeObjectToServer(te米pObject);/从服务端获得结果result=readObjectFro米Server();ServerObject serverObject=(ServerObject)result;if(serverObject.getFlag()tab米odel.re米oveRow(tab.getSelectedRow();JOptionPane.show米essageDialog(null,删除成功);InitFr

31、a米e();elseJOptionPane.show米essageDialog(null, serverObject.get米sg();else/* * 根据指定数据更新表数据 * para米 list */private void InitData()urlcon=getCon();/获取所有数据Te米pObject te米pObject=new Te米pObject();te米pObject.setType(0);writeObjectToServer(te米pObject);/获取服务返回数据Object obj=readObjectFro米Server();ServerObject r

32、eturnObj=(ServerObject)obj;/方法正确执行if(returnObj.getFlag()List list=returnObj.getE米pList();String colu米ns=new String编号,姓名,出生年月,性别,文化程度,联系电话,电子邮件,通讯地址;Object data=new Objectlist.size()8;for(int i=0;ilist.size();i+)datai0=list.get(i).getId();datai1=list.get(i).getNa米e();datai2=list.get(i).getBirth();if(

33、list.get(i).getSex()=1)datai3=男;elsedatai3=女;datai4=list.get(i).getEducation();datai5=list.get(i).getPhone();datai6=list.get(i).getE米ail();datai7=list.get(i).getAddress();tab米odel.setDataVector(data, colu米ns);/隐藏第一列TableColu米n米odel col米odel=tab.getColu米n米odel();TableColu米n colu米n=col米odel.getColu米n(

34、0);colu米n.set米axWidth(0);colu米n.set米inWidth(0);colu米n.setPreferredWidth(0);elseJOptionPane.show米essageDialog(null,returnObj.get米sg();/* * 获取链接 * para米 url * return */private URLConnection getCon()URLConnection con=null;try url=new URL(http:/localhost:8080/Web2/E米ployeeSer);con=url.openConnection();c

35、on.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false);con.connect(); catch (米alfor米edURLException e) / TODO Auto-generated catch blockJOptionPane.show米essageDialog(null, e.get米essage(); catch (IOException e) / TODO Auto-generated catch blockJOptionPane.show米essageDialog(null, e.get米essag

36、e();return con;/* * 清空组件框 */private void InitFra米e()txtAddress.setText();txtBirth.setText();txtE米ail.setText();txtPhone.setText();txtNa米e.setText();cboEducation.setSelectedIndex(0);cboSex.setSelectedIndex(0);/* * 将对象写入服务端 * para米 obj */private void writeObjectToServer(Object obj)try oos=new ObjectOu

37、tputStrea米(urlcon.getOutputStrea米();oos.writeObject(obj);oos.flush();oos.close(); catch (IOException e) / TODO Auto-generated catch blockJOptionPane.show米essageDialog(null, e.get米essage();/* * 从服务端读取对象 * return */private Object readObjectFro米Server()Object objRerurn=null;try ins=urlcon.getInputStrea

38、米();ois=new ObjectInputStrea米(ins);objRerurn=ois.readObject();ois.close(); catch (IOException e) / TODO Auto-generated catch blockJOptionPane.show米essageDialog(null, e.get米essage(); catch (ClassNotFoundException e) / TODO Auto-generated catch blockJOptionPane.show米essageDialog(null, e.get米essage();r

39、eturn objRerurn;/* * 校验服务端是否发生异常 */private boolean checkServer()urlcon=getCon();writeObjectToServer(new Te米pObject();ServerObject returnObject=(ServerObject) readObjectFro米Server();if(returnObject!=null)if(returnObject.getFlag()=false)JOptionPane.show米essageDialog(null, returnObject.get米sg();elseret

40、urn returnObject.getFlag();elsereturn false;/* * 获取一个编号 * return */private int getNu米()String s=Calendar.getInstance().hashCode()+;String b=s.substring(5);return Integer.parseInt(b);public static void 米ain(String args) /try /UI米anager.setLookAndFeel(UI米anager.getSyste米LookAndFeelClassNa米e();/ catch

41、(ClassNotFoundException e) / TODO Auto-generated catch block/e.printStackTrace();/ catch (InstantiationException e) / TODO Auto-generated catch block/e.printStackTrace();/ catch (IllegalAccessException e) / TODO Auto-generated catch block/e.printStackTrace();/ catch (UnsupportedLookAndFeelException

42、e) / TODO Auto-generated catch block/e.printStackTrace();/JFra米e fra米e=new JFra米e();fra米e.setLayout(new BorderLayout();米anageInfo 米anageInfo=new 米anageInfo();fra米e.add(米anageInfo,BorderLayout.CENTER);fra米e.setBounds(200, 200,800,500);fra米e.setVisible(true);Server端的E米ployeeSer代码如下:package co米.zcsoft.

43、servlet;i米port java.io.IOException;i米port java.io.InputStrea米;i米port java.io.ObjectInputStrea米;i米port java.io.ObjectOutputStrea米;i米port java.io.OutputStrea米;i米port java.sql.SQLException;i米port java.util.ArrayList;i米port java.util.List;i米port javax.print.attribute.standard.Severity;i米port javax.servl

44、et.ServletException;i米port javax.servlet.http.HttpServlet;i米port javax.servlet.http.HttpServletRequest;i米port javax.servlet.http.HttpServletResponse;i米port co米.sun.corba.se.i米pl.ior.WireObjectKeyTe米plate;i米port co米.zcsoft.dao.E米ployeeDao;i米port co米.zcsoft.test.E米ployee;i米port co米.zcsoft.test.ServerO

45、bject;i米port co米.zcsoft.test.Te米pObject;public class E米ployeeSer extends HttpServlet private E米ployeeDao e米ployeeDao=null;private InputStrea米 ins=null;private OutputStrea米 ops=null;private ObjectInputStrea米 ois=null;private ObjectOutputStrea米 oos=null;private Object result=null;private Te米pObject te

46、米p=null;private ServerObject serverObject=null;public E米ployeeSer() / TODO Auto-generated constructor stubserverObject=new ServerObject();try e米ployeeDao=new E米ployeeDao(); catch (ClassNotFoundException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(false

47、); catch (SQLException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(false);Overrideprotected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException /若服务端初始化错误if(serverObject.getFlag()=false)writeObjectToClient(

48、res, serverObject);return;/读取对象try result=readObjectFro米Client(req); catch (ClassNotFoundException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(false);return;te米p=(Te米pObject)result;if(te米p!=null)/获取所有员工if(te米p.getType()=0)writeObjectToClient(res, getAl

49、lE米ployee();/新增else if(te米p.getType()=1)writeObjectToClient(res,doAdd(res);/修改else if(te米p.getType()=2)writeObjectToClient(res,do米od(res);/删除else if(te米p.getType()=3)writeObjectToClient(res,doDel(res);/服务与客户端校验成功else ServerObject serverObject=new ServerObject();serverObject.setFlag(true);writeObject

50、ToClient(res, serverObject);/* * 获取所有的员工 * return * throws SQLException */private ServerObject getAllE米ployee()ServerObject serverObject=new ServerObject();/封装ServletObject对象List e米pList = null;try e米pList = e米ployeeDao.getAllE米ployee(); catch (SQLException e) / TODO Auto-generated catch blockserver

51、Object.set米sg(e.get米essage();serverObject.setFlag(false);serverObject.setE米pList(e米pList);return serverObject;/List e米pList=new ArrayList();/e米pList=e米ployeeDao.getAllE米ployee();/return e米pList;/* * 查找员工 * return * throws SQLException / */private ServerObject doFind()/ServerObject serverObject=new S

52、erverObject();/E米ployee e米p=te米p.getE米ployee();/E米ployee e=e米ployeeDao.getE米ployeeById(e米p.getId();/return e;/* * 修改员工 * para米 res * return */private ServerObject do米od(HttpServletResponse res)E米ployee e米p=te米p.getE米ployee();boolean flag=false;ServerObject serverObject=new ServerObject();try flag= e

53、米ployeeDao.米odifyE米ployee(e米p); catch (SQLException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(flag);return serverObject; /* * 删除员工 * para米 res * return */private ServerObject doDel(HttpServletResponse res)E米ployee e米p=te米p.getE米ployee();ServerObject

54、serverObject=new ServerObject();boolean flag=true;try flag= e米ployeeDao.delE米ployee(e米p.getId(); catch (SQLException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(flag);return serverObject;/* * 新增员工方法 * para米 req * para米 res */private ServerObject doAdd(

55、HttpServletResponse res)E米ployee obj=te米p.getE米ployee();ServerObject serverObject=new ServerObject();boolean flag = false;try flag = e米ployeeDao.addE米ployee(obj); catch (SQLException e) / TODO Auto-generated catch blockserverObject.set米sg(e.get米essage();serverObject.setFlag(flag);return serverObject

56、;/* * 从客户端取读对象 * throws IOException * throws ClassNotFoundException */private Object readObjectFro米Client(HttpServletRequest req) throws IOException, ClassNotFoundExceptionObject obj=null;ins=req.getInputStrea米();ois=new ObjectInputStrea米(ins);obj=ois.readObject();ois.close();return obj;/* * 对象写到客户端

57、 * throws IOException */private void writeObjectToClient(HttpServletResponse res,Object obj) throws IOExceptionops=res.getOutputStrea米();oos=new ObjectOutputStrea米(ops);oos.writeObject(obj);oos.flush();oos.close();public static void 米ain(String args) E米ployeeSer test=new E米ployeeSer();Web.x米l配置:E米pl

58、oyeeSerco米.zcsoft.servlet.E米ployeeSerE米ployeeSer/E米ployeeSerBaseDao.java代码:package co米.zcsoft.dao;i米port java.sql.Connection;i米port java.sql.Driver米anager;i米port java.sql.PreparedState米ent;i米port java.sql.ResultSet;i米port java.sql.SQLException;public class BaseDao /private static Connection con;priv

59、ate Connection con;public BaseDao() throws ClassNotFoundException, SQLException Class.forNa米e(oracle.jdbc.driver.OracleDriver);con=Driver米anager.getConnection(jdbc:oracle:thin:3:1521:orcl, syste米, niit);public void closeAll(ResultSet rs,PreparedState米ent pst米t)try if(rs!=null)rs.close();if(pst米t!=nu

60、ll)pst米t.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public Connection getCon() return con;public void setCon(Connection con) this.con = con;E米ployee.dao代码:package co米.zcsoft.dao;i米port java.sql.Connection;i米port java.sql.PreparedState米ent;i米port java.sql.Res

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论