5.2.3 JAVA APPLET客户方程序的实现
客户方的程序是一个JAVA APPLET ,以便于随着网页发布到各个用户那儿去。客户方要实现与用户的交互工作,要有一个友好的用户界面,并且方便用户的使用。JAVA APPLET 通过套接字(SOCKET)与服务程序进行通信,传递请求,传送规范的SQL语句给服务程序,并且接收SQL语句执行的结果,进行显示。
相应程序各个功能模块介绍如下:
1. 首先要进行用户界面的初始化工作,建立起一系列选择框以方
便用户的使用。
界面上的设备号一项的选择内容,其数据要求要从数据库中实时第取出,再放在面板上。
//定义界面上的各个对象
public class whApplet1 extends Applet {
boolean isStandalone = false;
Label label1 = new Label();
Label label2 = new Label();
Label label3 = new Label();
。。。。。。
//初始化界面
private void jbInit() throws Exception {
this.setFont(new Font("Dialog", 3, 12));
this.setSize(new Dimension(448, 348));
this.setBackground(new Color(178, 201, 232));
label1.setFont(new Font("Monospaced", 3, 30));
。。。。。。
label4.setText("设备号:");
。。。。。。
p1.add(label3, new XYConstraints(52, 105, -1, -1));
p1.add(choice1, new XYConstraints(97, 62, 64, -1));
。。。。。。
//为设备号一项实时添加内容:该项要从数据库中的数据中得出,故要做一个查询操作。首先建立套接字(SOCKET),为其指定要连接的主机名或主机的IP地址,并且指定端口号,以便于与服务器进行通信。此项内容实质上是在数据库中做一个查询,将不同的设备号都查出来,再显示在此处。
try{
//创建套接字,与服务程序建立连接
Socket socket=new Socket("202.119.199.74",4700);
//建立输入流对象,用于接收服务方传来的数据流
DataInputStream sin = new DataInputStream(socket.getInputStream());
String readline;
int j;
//通过SOCKET读入流中的数值型数据,放在变量j中
j = Integer.parseInt(sin.readLine());
System.out.println(""+j);
//通过SOCKET读入流中的字符串型数据,也就是查询的结果:不同的设备号,放在变量readline中
readline=(String)sin.readLine();
//依次将查询的结果放在选择框中,完成初始化工作
for (int i=1;i<=j;i++){
readline = (String)sin.readLine();
choice5.addItem(readline);
}
}catch(Exception ee){
System.out.println("error:"+ee);
}
}
2.下面是客户程序的主体部分,也就是形成SQL语句发送SQL请求的
一部分,系统要根据用户的一系列选择生成SQL语句,并且发送给服务程序。
void button1_actionPerformed(ActionEvent e) {
//创建套接字(SOCKET),与服务程序建立连接
try{
Socket socket=new Socket("202.119.199.74",4701);
//建立输出流,用来发送SQL语句给服务程序
PrintStream os= new PrintStream(socket.getOutputStream());
//从APPLET上取得数据以构成SQL语句的条件
String date1y = choice1.getSelectedItem().trim();
String date1m = choice3.getSelectedItem().trim();
String date1d = textField1.getText().trim();
String date2y =choice2.getSelectedItem().trim();
String date2m = choice4.getSelectedItem().trim();
String date2d = textField2.getText().trim();
String shebh = choice5.getSelectedItem().trim();
String banc = choice6.getSelectedItem().trim();
//通过一系列的判断语句来组合不同的客户选择条件下的查询语句
if ((shebh.equals("全部"))&&(banc.equals("全部"))){
sq = "SELECT SHEBH,RIQ,MEIYBH,SHUIF,BANC FROM SM_T_QUANSFCD WHERE RIQ >= '"+date1y+"-"+date1m+"-"+date1d+" 00:00:00"+"' and RIQ <= '"+date2y+"-"+date2m+"-"+date2d+" 00:00:00'";
m="no";
System.out.println(m);
os.println(m);
os.flush();
}else if (( shebh.equals("全部"))&&!(banc.equals("全部"))){
sq = "SELECT SHEBH,RIQ,MEIYBH,SHUIF,BANC FROM SM_T_QUANSFCD WHERE RIQ >= '"+date1y+"-"+date1m+"-"+date1d+" 00:00:00"+"' and RIQ <= '"+date2y+"-"+date2m+"-"+date2d+" 00:00:00' and banc = '";
if (banc.equals("早")){ m="morning";}
else if (banc.equals("中")) { m = "noon";}
else if (banc.equals("晚")) { m="evening";}
os.println(m);
os.flush();
}else if (!(shebh.equals("全部"))&&(banc.equals("全部"))){
sq = "SELECT SHEBH,RIQ,MEIYBH,SHUIF,BANC FROM SM_T_QUANSFCD WHERE RIQ >= '"+date1y+"-"+date1m+"-"+date1d+" 00:00:00"+"' and RIQ <= '"+date2y+"-"+date2m+"-"+date2d+" 00:00:00' and shebh = '"+shebh+"'";
m="no";
os.println(m);
os.flush();
}
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] 下一页