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

📄 controller.java

📁 航空定票系统:户端功能模块:用户登录模块
💻 JAVA
字号:
package com.tarena.abs.controller;
import java.io.*;
import java.net.Socket;
import com.tarena.abs.model.Request;
import com.tarena.abs.dao.DAOInterface;
import com.tarena.abs.model.*;
/**
 * Controller类用来描述一个控制器,该类的实例可以作为一个线程运行。
 * 该类的实例得到客户端的请求,并分派这些请求给不同的处理方法。
 * @author tony tang
 *
 */
public class Controller extends Thread{
	/**
	 * 此Controller使用的DAO
	 */
	private DAOInterface dao;
	/**
	 * 此Controller得到的Socket
	 */
	private Socket s;
	/**
	 * 通过指定Socket和DAO来构造此Controller
	 * @param s  指定此Controller关联的Socket
	 * @param dao  指定此Controller关联的DAO
	 */
	public Controller(Socket s,DAOInterface dao){
		this.s=s;
		this.dao=dao;
	}
	
	/**
	 * 多线程的运行方法,该方法不停的读取客户端发送的Request对象,
	 * 然后调用dispatch(Request request)方法去处理。
	 */
	public void run(){
		try {
			InputStream is=s.getInputStream();
			ObjectInputStream ois=new ObjectInputStream(is);
			while(true){
				Request req=(Request)ois.readObject();
				dispatch(req);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {s.close();} catch (IOException e) {}
		}
	}
	/**
	 * 此方法用来分派不同的请求。根据不同的请求头信息
	 * 来分派不同的方法处理这个请求
	 * @param request  得到的请求
	 */
	public void dispatch(Request request){
		String head=request.getHead();
		if(head.equals("user_login")){
			userLogin(request);
			return;
		}
		if(head.equals("user_register")){
			userRegister(request);
			return;
		}
		if(head.equals("flight_query")){
			flightQuery(request);
			return;
		}
	}
	
	/**
	 * 该方法用来处理用户的登录请求。
	 * @param request
	 */
	private void userLogin(Request request){
		try {
			OutputStream os=s.getOutputStream();
			ObjectOutputStream oos=new ObjectOutputStream(os);
			User user=dao.getUser(request.getParameter("UserName"),request.getParameter("Password"));
			oos.writeObject(user);
			oos.flush();
			oos.close();
			os.close();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 该方法用来处理用户的注册请求。
	 * @param request
	 */
	private void userRegister(Request request){
		
	}
	
	/**
	 * 该方法用来处理航班查询请求。
	 * @param request
	 */
	private void flightQuery(Request request){
		
	}

}

⌨️ 快捷键说明

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