java 通過HttpURLConnection與servlet通訊

來源:互聯網
上載者:User

標籤:

研究了一天才搞清楚,其實挺簡單的,在這裡記錄下,以便以後參考。

一、建立一個servlet項目

 

主要包括(WEB-INF)裡面有classes檔案夾、lib檔案夾、web.xml檔案。

將寫好的servlet類編譯成的.class放到項目中的classes檔案夾下(我的是helloServlet.class)

1、在web.xml中配置

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   version="2.5">     <servlet>        <servlet-name>HelloServlet</servlet-name>        <servlet-class>helloServlet</servlet-class><!-路徑加名稱,如果是在classes中的myclass中則用:myclass/helloServlet。如果是lib中的.jar包則用com.gis.arcgisengine.ServiceContext的形式->    </servlet>         <servlet-mapping>        <servlet-name>HelloServlet</servlet-name>        <url-pattern>/hello</url-pattern><!-通過url訪問的別名,實際上就是對helloServlet.class的訪問,前面的/不能少->    </servlet-mapping>    </web-app>

2、helloServlet檔案(是servlet類)

import java.io.IOException;import java.io.PrintWriter;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class helloServlet extends HttpServlet {    private static final long serialVersionUID = 1L;     public helloServlet() {        super();    }    public void destroy() {        super.destroy(); // Just puts "destroy" string in log        // Put your code here    }    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request,response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        //overwrite                String[] myName = null;        response.setContentType("application/octet-stream");        try {            ObjectInputStream ois = new ObjectInputStream(request.getInputStream());            Object obj = ois.readObject();//讀取輸入對象(傳過來的流對象)            ois.close();            myName = (String[])obj;            for(int i=0;i<myName.length;i++){                System.out.println(myName[i]);            }                    } catch (Exception e) {            e.printStackTrace();        }        String name = request.getParameter("name");        ServletOutputStream out = response.getOutputStream();        ObjectOutputStream oos = new ObjectOutputStream(out);        oos.writeObject(name);//寫入輸出對象(返回給調用函數)        oos.close();        out.close();                /*String name = request.getParameter("name");        if(name != null){            name = new String(name.getBytes("ISO-8859-1"),"GB2312");        }else{            name = "預設值";        }        response.setContentType("text/html;charset=GB2312");        PrintWriter out = response.getWriter();        out.println("<HTML>");        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");        out.println("  <BODY>");        out.println("<h1>"+name+":你好</h1>");        out.println("  </BODY>");        out.println("</HTML>");        System.out.println(name);        out.flush();        out.close();*/    }    public void init() throws ServletException {        // Put your code here    }}

 

二、建立普通項目並調用servlet項目中的helloServlet.class中的方法

1、項目中建立普通類

import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.HttpURLConnection;import java.net.URL;public class webtest {     public static void myFun(){         try{         String[] arr = {"aaa","bbb","ccc","ddd"};              String tempGisEngineUrl = "http://sun:8080/helloapp/hello?name=中國";//hello是在servlet項目中web.xml中配置的url訪問別名。         URL imsServerURL = new URL(tempGisEngineUrl);         HttpURLConnection imsConnection = (HttpURLConnection) imsServerURL                    .openConnection();         imsConnection.setDoInput(true);         imsConnection.setDoOutput(true);         imsConnection.setUseCaches(false);         imsConnection.setDefaultUseCaches(false);         imsConnection.setRequestProperty("Content-Type",                    "application/octet-stream");         ObjectOutputStream oos = new ObjectOutputStream(imsConnection                    .getOutputStream());         oos.writeObject(arr);//寫入輸出對象         oos.flush();         oos.close();         ObjectInputStream ois = new ObjectInputStream(imsConnection                    .getInputStream());         String oResult = (String)ois.readObject();//讀取輸入對象         ois.close();         imsConnection.disconnect();         System.out.println("from servlet:"+oResult);//將讀取到的輸入對象進行轉換後列印到後台         }catch(Exception ex){             System.out.println(ex.getMessage());         }     }          public static void main(String[] args){         myFun();     }}

 

三、運行結果:

1、在servlet端輸出:

aaa  

bbb

ccc

ddd

2、在調用端輸出:from servlet:中國

java 通過HttpURLConnection與servlet通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.