📄 mainservlet.java
字号:
package com.ch6.post;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MainServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置响应的Content-Type response.setContentType("application/octet-stream"); ModelFacade facade = new ModelFacade(); try{ int contentLength = handleCall(facade, response.getOutputStream(), request.getInputStream()); response.setContentLength(contentLength); }catch(ApplicationException ex){ ex.printStackTrace(); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } private int handleCall(ModelFacade facade,OutputStream os,InputStream is) throws IOException,ApplicationException{ DataInputStream dis = new DataInputStream(is); DataOutputStream result = new DataOutputStream(os); try{ ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); //读取客户端发送的第一个字节、代表客户端要进行的操作 byte op = dis.readByte(); System.out.println(op); switch(op){ case MessageConstants.OP_POST_ARTICLE:{ postArticle(facade,dis,dos); break; } case 100:{ print(facade,dis,dos); break; } case 101:{ result.writeUTF("192.168.0.3"); result.writeInt(1290); break; } default:{ result.writeInt(MessageConstants.UNKNOWN_OP); } } dos.flush(); //操作成功,首先把ERROR_NONE写入到输出流其次是数据 byte[] data = baos.toByteArray(); result.writeInt(MessageConstants.ERROR_NONE); result.write(data, 0, data.length); }catch(ModelException ex){ //抛出异常,将ERROR_MODEL_EXCEPTION和异常写入输出流 result.writeInt(MessageConstants.ERROR_MODEL_EXCEPTION); ex.serialize(result); } return result.size(); } //发表文章 private void postArticle(ModelFacade facade,DataInputStream dis,DataOutputStream dos) throws IOException,ApplicationException,ModelException{ Article article = Article.deserialize(dis); facade.postArticle(article); return; } private void print(ModelFacade facade,DataInputStream dis,DataOutputStream dos) throws IOException,ApplicationException,ModelException{ System.out.println(dis.readUTF()); System.out.println(dis.readInt()); return; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -