2013年3月23日星期六

怎样用本地的Java代码和服务端的Servlet进行通信

怎样用本地的Java代码和服务端的Servlet进行通信

分类: Android 402人阅读 评论(0) 收藏 举报
一,编写servlet类:

ReverseServlet类实现了将,客户端上传的String反转,并返回给客户端的功能。

  1. public class ReverseServlet extends HttpServlet  
  2. {  
  3.     private static String message = "Error during Servlet processing";  
  4.       
  5.     public void doPost(HttpServletRequest req, HttpServletResponse resp) {  
  6.         try {  
  7.             int len = req.getContentLength();  
  8.             byte[] input = new byte[len];  
  9.           
  10.             ServletInputStream sin = req.getInputStream();  
  11.             int c, count = 0 ;  
  12.             while ((c = sin.read(input, count, input.length-count)) != -1) {  
  13.                 count +=c;  
  14.             }  
  15.             sin.close();  
  16.           
  17.             String inString = new String(input);  
  18.             int index = inString.indexOf("=");  
  19.             if (index == -1) {  
  20.                 resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);  
  21.                 resp.getWriter().print(message);  
  22.                 resp.getWriter().close();  
  23.                 return;  
  24.             }  
  25.             String value = inString.substring(index + 1);  
  26.               
  27.             //decode application/x-www-form-urlencoded string  
  28.             String decodedString = URLDecoder.decode(value, "UTF-8");  
  29.               
  30.             //reverse the String  
  31.             String reverseStr = (new StringBuffer(decodedString)).reverse().toString();  
  32.               
  33.             // set the response code and write the response data  
  34.             resp.setStatus(HttpServletResponse.SC_OK);  
  35.             OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream());  
  36.               
  37.             writer.write(reverseStr);  
  38.             writer.flush();  
  39.             writer.close();  
  40.         } catch (IOException e) {  
  41.             try{  
  42.                 resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);  
  43.                 resp.getWriter().print(e.getMessage());  
  44.                 resp.getWriter().close();  
  45.             } catch (IOException ioe) {  
  46.             }  
  47.         }  
  48.           
  49.     }    
  50.           
  51. }  

二,编写web.xml文件:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  
  5.     version="2.4">  
  6.       <servlet>  
  7.         <servlet-name>ReverseServlet</servlet-name>  
  8.         <servlet-class>com.servlet.service.test.ReverseServlet</servlet-class>  
  9.      </servlet>  
  10.       
  11.     <servlet-mapping>  
  12.         <servlet-name>ReverseServlet</servlet-name>  
  13.         <url-pattern>/servlet/ReverseServlet</url-pattern>  
  14.     </servlet-mapping>  
  15. </web-app>  

三,分别部署.class文件和web.xml到WEB-INF/classes和WEB-INF/

四,编写客户端类:
  1. public class Reverse {  
  2.     public static void main(String[] args) throws Exception {  
  3.   
  4. //  if (args.length != 2) {  
  5. //      System.err.println("Usage:  java Reverse " +  
  6. //                               "http://<location of your servlet/script>" +   
  7. //                               " string_to_reverse");  
  8. //      System.exit(1);  
  9. //  }  
  10.   
  11.     String urlStr = "http://localhost:8080/myservicetest/servlet/ReverseServlet";  
  12.     String strStr = "hello word!";  
  13.     String stringToReverse = URLEncoder.encode(strStr, "UTF-8");  
  14.   
  15.     URL url = new URL(urlStr);  
  16.     URLConnection connection = url.openConnection();  
  17.     connection.setDoOutput(true);  
  18.   
  19.     OutputStreamWriter out = new OutputStreamWriter(  
  20.                               connection.getOutputStream());  
  21.     out.write("string=" + stringToReverse);  
  22.     out.close();  
  23.   
  24.     BufferedReader in = new BufferedReader(  
  25.                 new InputStreamReader(  
  26.                 connection.getInputStream()));  
  27.                   
  28.     String decodedString;  
  29.   
  30.     while ((decodedString = in.readLine()) != null) {  
  31.         System.out.println(decodedString);  
  32.     }  
  33.     in.close();  
  34.     }  
  35. }  

五,启动webserver 和本地java程序。

运行结果如下:!drow olleh


没有评论:

发表评论