package server_HTTP; public class ServletServer { } // //import java.awt.image.BufferedImage; //import java.io.BufferedInputStream; //import java.io.BufferedOutputStream; //import java.io.File; //import java.io.FileInputStream; //import java.io.FileOutputStream; //import java.io.IOException; //import java.io.InputStream; //import java.io.OutputStream; //import java.util.Iterator; //import java.util.List; // //import javax.servlet.ServletContext; //import javax.servlet.ServletException; //import javax.servlet.http.HttpServlet; //import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; // //import org.apache.commons.fileupload.FileItem; //import org.apache.commons.fileupload.FileItemFactory; //import org.apache.commons.fileupload.FileUploadException; //import org.apache.commons.fileupload.disk.DiskFileItemFactory; //import org.apache.commons.fileupload.servlet.ServletFileUpload; //import org.apache.log4j.PropertyConfigurator; // //import com.sun.image.codec.jpeg.JPEGCodec; //import com.sun.image.codec.jpeg.JPEGImageDecoder; //import com.sun.image.codec.jpeg.JPEGImageEncoder; // //import server.Server; //import tools.DataTypeTranslater; //import tools.Debug; // //public class ServletServer extends HttpServlet { // private static final String GIF = "image/gif;charset=GB2312";// 设定输出的类型 // private static final String JPG = "image/jpeg;charset=GB2312"; // // public static final String SOURCE_PATH = "D:/Program/MiniWeChat-Server/Source"; // public static final String CLIENT_PATH = SOURCE_PATH + "/FromClient/"; // public static final String SERVER_PATH = SOURCE_PATH + "/FromServer/"; // // public Server minaServer; // // @Override // public void init() { // System.out.println("I am be run!"); // String path = getServletContext().getRealPath("/"); // String configFile = path + getInitParameter("configFile"); // PropertyConfigurator.configure(configFile); //// try { //// minaServer = new Server(); //// } catch (IOException e) { //// Debug.log(Debug.LogType.FAULT, "ServletServer", "Start Mina Server Fail!\n" + e.toString()); //// System.err.println("ServletServer : 服务器启动失败"); //// e.printStackTrace(); //// } // // 初始化 //// if (Server.instance != null){ //// Server.instance.init(); //// Debug.log("ServletServer", "Initiate Mina Server Successful!"); //// } //// else { //// Debug.log(Debug.LogType.FAULT, "ServletServer", "Start Mina Server Fail!"); //// } // } // // @Override // public void destroy() { // System.err.println("Oh Noooooooooooooooooo!!!!"); // minaServer.onDestroy(); // } // // // 用于处理客户端发送的GET请求    // public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // System.err.println("doGet"); // // // String type = request.getParameter("type"); // // String imageName = request.getParameter("imageName"); // // // request.getInputStream(); // // // // System.out.println("type : " + type); // // System.out.println("imageName : " + imageName); // // // // if (type != null) { // // // 网客户端发图片 // // if (type.equals("Image")) { // // String imagePath = CLIENT_PATH + imageName; // // sendImageStr(response, imagePath); // // System.out.println("发送图片完毕!"); // // } // // // // // 从客户端接收图片 // // if (type.equals("UpdateImage")) { // // // String imageStr = request.getParameter("file"); // // // System.out.println("File : " + imageStr); // // // createImageFile(imageName, imageStr); // // // // createImageFile(SERVER_PATH + imageName, request); // // System.out.println("接收图片完毕!"); // // } // // } // // // 监测request中是否包含文件 // // boolean isMultipart = ServletFileUpload.isMultipartContent(request); // if (isMultipart) { // System.out.println("包含文件"); // } else { // System.out.println("不包含文件"); // } // // // Create a factory for disk-based file items // FileItemFactory factory = new DiskFileItemFactory(); // // 获取文件需要上传到的路径 // // String path = request.getRealPath("/upload"); // String path = request.getSession().getServletContext().getRealPath("upload"); // // // 如果没以下两行设置的话,上传大的 文件 会占用 很多内存, // // 设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同 // /** // * // * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, // * // * 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的 // * // * 然后再将其真正写到 对应目录的硬盘上 // */ // // factory.setRepository(new File(path)); // // // 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 // // factory.setSizeThreshold(1024*1024) ; // // // Create a new file upload handler // ServletFileUpload upload = new ServletFileUpload(factory); // // // Parse the request // List items = null; // try { // items = upload.parseRequest(request); // } catch (FileUploadException e) { // e.printStackTrace(); // } // // // Process the uploaded items // Iterator iter = items.iterator(); // // while (iter.hasNext()) { // FileItem item = (FileItem) iter.next(); // // if (item.isFormField()) {// 如果是普通表单控件 // // //获取表单的属性名字 // String name = item.getFieldName(); // // 获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的 // String value = item.getString(); // // request.setAttribute(name, value); // System.out.println("name:" + name); // System.out.println("value:" + value); // } else {// 如果是文件 // // 也叫name是为了和上面保持一致,方便显示页面 // String name = item.getFieldName(); // String fileName = item.getName(); // String contentType = item.getContentType(); // boolean isInMemory = item.isInMemory(); // long sizeInBytes = item.getSize(); // // System.out.println("表单文件控件名:" + name); // // // 绝对路径的 // System.out.println("上传文件名:" + fileName); // System.out.println("文件类型:" + contentType); // System.out.println("是否保存在内存中:" + isInMemory); // System.out.println("大小:" + sizeInBytes); // // // 上传文件 // // 获取文件名 // String f_name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); // request.setAttribute(name, f_name); // // // 进行文件上传 // File uploadedFile = new File(path, f_name); // try { // item.write(uploadedFile); // } catch (Exception e) { // e.printStackTrace(); // } // // /* // * OutputStream out = new FileOutputStream(new // * File(path,filename)); InputStream in = item.getInputStream(); // * // * int length = 0 ; byte [] buf = new byte[1024] ; // * System.out.println("获取上传文件的总共的容量:"+item.getSize()); // * // * // in.read(buf) 每次读到的数据存放在 buf 数组中 while( (length = // * in.read(buf) ) != -1) { //在 buf 数组中 取出数据 写到 (输出流)磁盘上 // * out.write(buf, 0, length); } in.close(); // */ // // } // // } // // } // // // 用于处理客户端发送的POST请求 // // public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // doGet(request, response);// 这条语句的作用是,当客户端发送POST请求时,调用doGet()方法进行处理    // } // // /** // * 往客户端发图片 // * // * @author Feng // */ // public void sendImageStr(HttpServletResponse response, String imagePath) throws IOException { // OutputStream output = response.getOutputStream();// 得到输出流 // if (imagePath.toLowerCase().endsWith(".jpg"))// 使用编码处理文件流的情况: // { // response.setContentType(JPG);// 设定输出的类型 // // 得到图片的真实路径 // // imagePath = getServletContext().getRealPath(imagePath); // // 得到图片的文件流 // InputStream imageIn = new FileInputStream(new File(imagePath)); // // 得到输入的编码器,将文件流进行jpg格式编码 // JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn); // // 得到编码后的图片对象 // BufferedImage image = decoder.decodeAsBufferedImage(); // // 得到输出的编码器 // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output); // encoder.encode(image);// 对图片进行输出编码 // imageIn.close();// 关闭文件流 // } // if (imagePath.toLowerCase().endsWith(".gif"))// 不使用编码处理文件流的情况: // { // response.setContentType(GIF); // ServletContext context = getServletContext();// 得到背景对象 // InputStream imageIn = context.getResourceAsStream(imagePath);// 文件流 // BufferedInputStream bis = new BufferedInputStream(imageIn);// 输入缓冲流 // BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流 // byte data[] = new byte[4096];// 缓冲字节数 // int size = 0; // size = bis.read(data); // while (size != -1) { // bos.write(data, 0, size); // size = bis.read(data); // } // bis.close(); // bos.flush();// 清空输出缓冲流 // bos.close(); // } // output.close(); // } // // /** // * 往客户端发图片 // * // * @author Feng // * @throws IOException // */ // public void sendImageBytes(HttpServletResponse response, String imagePath) throws IOException { // // FileInputStream inputStream = new FileInputStream(imagePath); // // ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1000); // // byte[] buffer = new byte[1000]; // // // // int n ; // // // // while ((n = inputStream.read(buffer)) != -1) // // outputStream.write(buffer, 0, n); // // // // inputStream.close(); // // outputStream.close(); // // // byte[] imageBytes = outputStream.toByteArray(); // response.getOutputStream().write(DataTypeTranslater.fileToByte(imagePath)); // } // // /** // * 转码并保存图片 // * // * @throws IOException // * @author Feng // */ // public void createImageFile(String imageName, String imageStr) throws IOException { // byte[] bytes = new sun.misc.BASE64Decoder().decodeBuffer(imageStr); // FileOutputStream fileOutputStream = new FileOutputStream("D:/FromClient/" + imageName); // fileOutputStream.write(bytes); // fileOutputStream.close(); // // // byte[] bytes = new byte[fileForInput.available()]; // // fileForInput.read(bytes); // // content = new sun.misc.BASE64Encoder().encode(bytes); // 具体的编码方法 // // fileForInput.close(); // } // // /** // * 保存来自客户端的图片 // * // * @throws IOException // * @author Feng // */ // public void createImageFile(String address, HttpServletRequest request) throws IOException { // System.out.println(address); // File file = new File(address); // FileOutputStream outputStream = new FileOutputStream(file); // // InputStream inputStream = request.getInputStream(); // // byte[] buffer = new byte[4096]; // int readLength = -1; // while ((readLength = inputStream.read(buffer)) != -1) { // outputStream.write(buffer); // } // outputStream.flush(); // outputStream.close(); // inputStream.close(); // } //}