⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.java

📁 一个很详细的航空售票系统开发的例子
💻 JAVA
字号:
package com.tarena.abs.server;
import java.net.*;
import java.io.*;
import java.util.*;

import com.tarena.abs.client.ClientMainClass;
import com.tarena.abs.dao.*;
import com.tarena.abs.model.*;

public class Controller {
	private Socket s;
	private ObjectInputStream ois;
	private ObjectOutputStream oos;
	private AgentDAO agentDao;
	private FlightDAO flightDao;
	
	public Controller(Socket s){
		this.s=s;
		agentDao=ServerMainClass.agentDao;
		flightDao=ServerMainClass.flightDao;
	}
	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("changePasswd")){
				changePasswdHandle(req);
			}
			else if(type.equals("order")){
				orderHandle();
			}else if(type.equals("quit")){
				//quitHandle();
				break;
			}
		}
	}
	
	private void loginHandle(Request req){
		String userName=(String)req.getData("UserName");
		String passwd=(String)req.getData("Password");
		Object obj=agentDao.getAgent(userName,passwd);
		Agent user=(Agent)obj;
		if(user != null){
			ServerMainClass.allOnlineAgents.add(user);
		}
		try {
			Response res=new Response("login");
			res.setData(user);
			oos.writeObject(res);
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void changePasswdHandle(Request req){
		String userName=(String)req.getData("UserName");
		String passwd=(String)req.getData("Password");
		String newPasswd=(String)req.getData("NewPasswd");
		boolean is=agentDao.modifyPassword(userName,passwd,newPasswd);
		Agent user=null;
		if(is){
			try {
				user=agentDao.getAgent(userName,newPasswd);
				Response res=new Response("changePasswd");
				res.setData(user);
				oos.writeObject(res);
				oos.flush();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		}
	private void flightSearchHandle(Request req){
		String fromAddr=(String)req.getData("fromAddress");
		String toAddr=(String)req.getData("toAddress");
		String date=(String)req.getData("date");
		
		MyDate theDate=MyDate.getDateFromStr(date,"-");
//		HashSet hs=new HashSet();
		try {
			HashSet hs=(HashSet)(ServerMainClass.flightDao.getAllFlights(fromAddr,toAddr,theDate));
//			System.out.println(hs);
			Response res=new Response("flightSearch");
			res.setData(hs);
//			System.out.println(res.getData());
			oos.writeObject(res);
			oos.flush();

			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		//航班查询模块
	}

	private void orderHandle(){
		try {
			Object obj = new Object();
			synchronized(obj){
				Order od=(Order)ois.readObject();
				boolean success=flightDao.order(od);
				Agent agent = null;
				if(success){
					agent = agentDao.updateScore(od.getUser().getName(), od.getItems().size()*100);
					ServerMainClass.orders.add(od);
				}
				oos.writeObject(agent);
				oos.flush();
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		//出票模块
	}
	private void quitHandle(){
		try {
			s.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -