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

📄 busqueryservlet.java

📁 J2ME程序设计实例教程的源码
💻 JAVA
字号:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class BusQueryServlet extends HttpServlet {
    private Map busMap;
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        ServletContext context = this.getServletContext();
        InputStream is = context.getResourceAsStream("/WEB-INF/Lines.txt");
        busMap = readBuses(is);     //读取公共汽车线路数据
        System.out.println("OK!!!");
    }
    
    public void doPost(HttpServletRequest req, HttpServletResponse res) 
                            throws ServletException, IOException {
        //
        //创建数据输入流
        DataInputStream dis = new DataInputStream(req.getInputStream());
        
        //读取客户端发送的查询数据
        int mode = dis.readInt();   //查询方式
        String condition = dis.readUTF();   //查询条件
        
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        int code = query(mode, condition, dos);  //查询
        
        //设置响应头属性
        res.setContentType("application/octet-stream");
        byte[] buf = baos.toByteArray();    //响应数据
        res.setContentLength(buf.length);
        
        //获得响应输出流,写出响应数据。
        ServletOutputStream sos = res.getOutputStream();
        DataOutputStream os = new DataOutputStream(sos);
        System.out.println(code);
        os.writeInt(code);
        os.write(buf);
        os.close();
    }
    
    private Map readBuses(InputStream is) {
        HashMap bMap = new HashMap(100);
        BufferedReader bufReader = new BufferedReader(new InputStreamReader(is));
        String line = null;
        String num = null;
        String stations = null;
        int index = -1;
        try {
            while((line = bufReader.readLine()) != null) {
                index = line.indexOf("-");
                num = line.substring(0, index);
                stations = line.substring(index+1);
                bMap.put(num, stations);
            }
        }
        catch(IOException ioe) {
            //
        }
        return bMap;
    }
    
    //查询
    private int query(int mode, String condition, DataOutputStream dos) throws IOException {
        System.out.println("mode = " + mode + "; condition=" + condition);
        int count = 0;  
        switch(mode) {
            case QueryMode.BUS: //按照公共汽车线路进行查询
                String stations = (String)busMap.get(condition);
                if(stations != null) {
                    count = 1;
                    dos.writeUTF(condition);
                    dos.writeUTF(stations);
                }
                break;
            case QueryMode.STATION: //按照公共汽车站点名进行查询
                Iterator lines = busMap.keySet().iterator();
                String num = null;
                String sta = null;
                int index = -1;
                while(lines.hasNext()) {
                    num = (String)lines.next();
                    sta = (String)busMap.get(num);
                    index = sta.indexOf(condition);
                    if(index != -1) {
                        count++;
                        dos.writeUTF(num);
                        dos.writeUTF(sta);
                    }
                }
                break;
            default:    //请求序号错误!
                count = -1;
        }
        dos.writeUTF("END.");
        dos.flush();
        return count;
    }
}

⌨️ 快捷键说明

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