📄 controller.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 + -