怎样用本地的Java代码和服务端的Servlet进行通信
一,编写servlet类:ReverseServlet类实现了将,客户端上传的String反转,并返回给客户端的功能。
- public class ReverseServlet extends HttpServlet
- {
- private static String message = "Error during Servlet processing";
- public void doPost(HttpServletRequest req, HttpServletResponse resp) {
- try {
- int len = req.getContentLength();
- byte[] input = new byte[len];
- ServletInputStream sin = req.getInputStream();
- int c, count = 0 ;
- while ((c = sin.read(input, count, input.length-count)) != -1) {
- count +=c;
- }
- sin.close();
- String inString = new String(input);
- int index = inString.indexOf("=");
- if (index == -1) {
- resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
- resp.getWriter().print(message);
- resp.getWriter().close();
- return;
- }
- String value = inString.substring(index + 1);
- //decode application/x-www-form-urlencoded string
- String decodedString = URLDecoder.decode(value, "UTF-8");
- //reverse the String
- String reverseStr = (new StringBuffer(decodedString)).reverse().toString();
- // set the response code and write the response data
- resp.setStatus(HttpServletResponse.SC_OK);
- OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream());
- writer.write(reverseStr);
- writer.flush();
- writer.close();
- } catch (IOException e) {
- try{
- resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
- resp.getWriter().print(e.getMessage());
- resp.getWriter().close();
- } catch (IOException ioe) {
- }
- }
- }
- }
二,编写web.xml文件:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <servlet>
- <servlet-name>ReverseServlet</servlet-name>
- <servlet-class>com.servlet.service.test.ReverseServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ReverseServlet</servlet-name>
- <url-pattern>/servlet/ReverseServlet</url-pattern>
- </servlet-mapping>
- </web-app>
三,分别部署.class文件和web.xml到WEB-INF/classes和WEB-INF/
四,编写客户端类:
- public class Reverse {
- public static void main(String[] args) throws Exception {
- // if (args.length != 2) {
- // System.err.println("Usage: java Reverse " +
- // "http://<location of your servlet/script>" +
- // " string_to_reverse");
- // System.exit(1);
- // }
- String urlStr = "http://localhost:8080/myservicetest/servlet/ReverseServlet";
- String strStr = "hello word!";
- String stringToReverse = URLEncoder.encode(strStr, "UTF-8");
- URL url = new URL(urlStr);
- URLConnection connection = url.openConnection();
- connection.setDoOutput(true);
- OutputStreamWriter out = new OutputStreamWriter(
- connection.getOutputStream());
- out.write("string=" + stringToReverse);
- out.close();
- BufferedReader in = new BufferedReader(
- new InputStreamReader(
- connection.getInputStream()));
- String decodedString;
- while ((decodedString = in.readLine()) != null) {
- System.out.println(decodedString);
- }
- in.close();
- }
- }
五,启动webserver 和本地java程序。
运行结果如下:!drow olleh
没有评论:
发表评论