📄 controller.java
字号:
package com.tarena.abs.server;
import java.net.*;
import java.io.*;
import java.util.*;
import com.tarena.abs.dao.*;
import com.tarena.abs.model.*;
public class Controller {
private Socket s;
private ObjectInputStream ois;
private ObjectOutputStream oos;
private BranchDAO agentDao;
private FlightDAO flightDao;
private TicketOrderDAO ticketOrderDao;
private Set onlineAgent;
public Controller(Socket s){
this.s=s;
agentDao=ServerMainClass.agentDao;
flightDao=ServerMainClass.flightDao;
onlineAgent=ServerMainClass.allOnlineAgents;
ticketOrderDao=ServerMainClass.ticketOrderDao;
}
public void handle() throws Exception {
ois=new ObjectInputStream(s.getInputStream());
oos=new ObjectOutputStream(s.getOutputStream());
while(true){
Request req=(Request)ois.readObject(); //从客户端读取请求对象
String type=req.getType();
if(type.equals("login")){ // 登陆处理
loginHandle(req);
}else if(type.equals("flightSearch")){ //航班计划查询处理
flightSearchHandle(req);
}else if(type.equals("order")){ //订单处理
orderHandle();
}else if(type.equals("quit")){ //退出处理
quitHandle(req);
break;
}else if(type.equals("modifyPasswd")){
modifyPasswd(req);
}
}
}
private void loginHandle(Request req){
String userName=(String)req.getData("UserName");
String passwd=(String)req.getData("Password");
Object obj=agentDao.getBranch(userName,passwd); //获得包含请求信息的代理商
Branch user=(Branch)obj;
try {
Response res=new Response("login"); //创建应答对象
res.setData(user);
oos.writeObject(res); //写入客户端
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
if(user!=null){
ServerMainClass.allOnlineAgents.add(user);
}
}
private void flightSearchHandle(Request req){
String fromAddr=(String)req.getData("fromAddress");
String toAddr=(String)req.getData("toAddress");
String date=(String)req.getData("date");
System.out.println("读入的航班查询请求"+date+" "+fromAddr+" "+toAddr);
String[] st = date.split("-");
int year=Integer.parseInt(st[0]);
int month=Integer.parseInt(st[1]);
int day=Integer.parseInt(st[2]);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DATE, day);
//分隔????
HashSet hs=null;
try {
hs=(HashSet)(flightDao.getAllFlights(fromAddr,toAddr,cal));
Response res=new Response("flightSearch");
res.setData(hs);
oos.writeObject(res);
oos.flush();
System.out.println("服务器发的航班集合是"+hs);
} catch (Exception e) {
e.printStackTrace();
}
//航班查询模块
}
private void orderHandle(){
try {
Order od=(Order)ois.readObject(); //读发来的订单
//Boolean success=flightDao.order(od); //执行出票操作
Boolean success = ticketOrderDao.order(od);
System.out.println("出票的数据修改"+success);
/*if(success){
//服务器当前代理商对象删掉. 当前订单的代理商
agentDao.removeAgent(od.getUser().getName());
agentDao.addAgent(od.getUser());
}*/
oos.writeObject(success);
oos.flush();
} catch (Exception e) {
e.printStackTrace();
}
//出票模块
}
private void modifyPasswd(Request req){
String userName=(String)req.getData("userName");
String oldPasswd=(String)req.getData("oldPasswd");
String newPasswd=(String)req.getData("newPasswd");
boolean b=agentDao.modifyPassword(userName,oldPasswd,newPasswd);
try {
Response res=new Response("modifyPasswd");
res.setData(b);
oos.writeObject(res);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private void quitHandle(Request req){
String currentUserName=(String)req.getData("currentUser");
for(Object o:onlineAgent){
Branch a = (Branch)o;
if(a.getName().equals(currentUserName)){
onlineAgent.remove(a);
}
}
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -