欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

介绍JSP HTTP服务器实现的以下特性

来源: javaer 分享于  点击 28763 次 点评:149

介绍JSP HTTP服务器实现的以下特性


JSP HTTP服务器对常规请求的支持

这里的常规请求是指请求的资源为文件类型,不需要进行解释,编译,执行等处理。例如:文本文件*.TXT),超文本文件*.HTM,*.HTML),脚本文件*.JS,*.VBS等),图片文件*.JPG,*.PNG,*.GIF,*.BMP)。

处理基于文件流的请求较为简单。只需要读取本地的文件资源,再发送给客户端即可。

1.JSP HTTP服务器文件流请求的处理示例代码

  1. //Create client socket output stream   
  2. m_sout = new PrintWriter(m_s.getOutputStream(), true);  
  3. m_soutx = null;  
  4. m_sout.println("HTTP/1.0 200 OK\nMIME-Version:1.0\nContent-Type:text/html\n\n");  
  5. File file = new File(fileName);  
  6. if(file.exists() == true)  
  7. {  
  8. //Create local file input stream   
  9. BufferedReader fin = new BufferedReader(new FileReader(file) );  
  10. String line = null;  
  11. String response = "";  
  12. //Read file by lines   
  13. while( (line = fin.readLine() ) != null)  
  14. {  
  15. responseresponse = response + line + "\n";  
  16. }  
  17. //Send the content to client socket   
  18. m_sout.println(response);  
  19. //Close local file handle   
  20. fin.close();  
  21. }  

以上是处理基于文本流的请求,以下是处理基于二进制流的请求实例代码。

2.JSP HTTP服务器二进制流文件的处理示例代码

  1. //Create client socket output stream   
  2. m_sm_soutx = m_s.getOutputStream();  
  3. m_sout = null;  
  4. String header = "HTTP/1.0 200 OK\nMIME-Version:1.0\n";  
  5. //Send content to client socket   
  6. m_soutx.write(header.getBytes() );  
  7. String mime = "";  
  8. //Get MIME by file type   
  9. switch(typeFlag)  
  10. {  
  11. case TYPE_JPEG: //jpeg file   
  12. {  
  13. mime = "image/jpeg";  
  14. break;  
  15. }  
  16. case TYPE_GIF: //gif file   
  17. {  
  18. mime = "image/gif";  
  19. break;  
  20. }  
  21. case TYPE_BMP: //bmp file   
  22. {  
  23. mime = "image/bmp";  
  24. break;  
  25. }  
  26. case TYPE_PNG: //png file   
  27. {  
  28. mime = "image/png";  
  29. break;  
  30. }  
  31. }  
  32. mime = "Content-Type:" + mime + "\n\n";  
  33. m_soutx.write(mime.getBytes() );  
  34. File file = new File(fileName);  
  35. if(file.exists() == true) //Read image files and send to client socket   
  36. {  
  37. //Create local file input stream   
  38. RandomAccessFile fin = new RandomAccessFile(fileName, "r");  
  39. final long size = fin.length();  
  40. byte [] buffer = new byte[(int)size];  
  41. fin.readFully(buffer);  
  42. fin.close();  
  43. //Send data to client socket   
  44. m_soutx.write(buffer);  
  45. }  
  46. //Close client socket output stream   
  47. m_soutx.close();  

从以上代码可以看出,处理文本流和二进制流的请求的方式是不相同的,文本流的文件是按照行进行处理,而二进制流的文件是以批量读取。

其中关键的是,对于不同的文件类型,发送数据给客户端时必须指明服务器端应答的媒体类型,即MIMEMultipurpose Internet Mail Extensions),这样应答给客户端的资源才能被客户端浏览器所识别,并调用相应的应用程序对资源进行读取。
文件类型 扩展名 MIME
文本文件 .TXT text/plain
HTMLHyperText Markup Language)文件 .HTML,.HTM text/html
JPEGJoint Photographic Experts Group)文件 .JPG,.JPEG image/jpeg
PNGPortable Network Graphic Format)文件 .PNG image/png
BMPBitmap)文件 .BMP application/x-MS-bmp
GIFGraphics Interchange Format)文件 .GIF image/gif
XMLEXtensible Markup Language)文件 .XML text/xml

常用类型文件的MIME

  1. 在JSP中获取数据库连接
  2. 介绍JSP Action的使用
  3. 简化JSP表达式中代码
  4. 详解JSP向Servlet转换
  5. 简单介绍JSP元素教程

相关栏目:

用户点评