<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    HelloWorld 善戰(zhàn)者,求之于勢,不責于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

    src cod down  http://m.tkk7.com/Files/zhaochengming/servletInvoke.rar
    <1>先定義一些解析的方法,這里是處理接到請求后的處理

    package com.invoke.process;

    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;

    @Retention(RetentionPolicy.RUNTIME)
    public @interface InvokeAnno {
    /**
       * 調用的函數名稱
       */
    String methodName();

    /**
       * 調用的類
       */
    Class invodeClass();

    /**
       * 調用的參數類型
       */
    Class[] paramClass();

    /**
       * 返回類型
       */
    Class returnClass() default Object.class;
    }

    package com.invoke.process;

    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.util.List;

    public class InvokeBussiness {
    public static Object query(InvokeEnum enu,Object obj) {
       try {
        Field field = InvokeEnum.class.getField(enu.toString());
        InvokeAnno sa = field.getAnnotation(InvokeAnno.class);
        Class[] cs = sa.paramClass();
        Class invodeClass = sa.invodeClass();
        Method method = invodeClass.getMethod(sa.methodName(),cs);
        if (cs.length == 1) {
          obj = method.invoke(invodeClass.newInstance(), obj);     
        } else if (cs.length == 0) {
         obj = method.invoke(invodeClass.newInstance());
        } else {    
         obj = method.invoke(invodeClass.newInstance(), ((List)obj).toArray());
        }
       } catch (Exception e) {
        e.printStackTrace();
       }
       return obj;
    }
    }

    package com.invoke.process;

    import java.util.List;

    import com.invoke.bussiness.ValidateUser;

    public enum InvokeEnum {
    /**
       * 驗證用戶名密碼
       */
    @InvokeAnno(invodeClass=ValidateUser.class, methodName="isRightUser",
        paramClass={String.class,String.class},returnClass = boolean.class)
    ValidateUser,

    @InvokeAnno(invodeClass=ValidateUser.class, methodName="queryAllUser",
        paramClass={},returnClass = List.class)
    GetAllUser,
    }

    <2>服務端的業(yè)務

    package com.invoke.bussiness;

    import java.util.ArrayList;
    import java.util.List;

    /**
    * 驗證用戶信息
    * @author
    *
    */
    public class ValidateUser {
    public boolean isRightUser(String name, String pwd) {
       //經過驗證,這里假設一個
       if (name.equals("admin") && pwd.equals("123456"))
        return true;
       return false;
    }

    /**
       * 返回字符串
       * 用戶名,密碼,角色,部門,電話
       * @return
       */
    public List queryAllUser() {
       //假設查詢的用戶列表
       List<String> list = new ArrayList<String>();
       list.add("admin1,123456,組織管理員,技術,13917811682");
       list.add("admin2,123456,組織管理員,技術,13917811682");
       list.add("admin3,123456,組織管理員,技術,13917811682");
       list.add("admin4,123456,組織管理員,技術,13917811682");
       list.add("admin5,123456,組織管理員,技術,13917811682");
       return list;
    }
    }

    <3>服務端的Servlet
    package com.invoke;

    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.invoke.process.InvokeBussiness;
    import com.invoke.process.InvokeEnum;

    public class InvokeServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void service(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
       ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
       response.setContentType("application/octest-stream");
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       ObjectOutputStream out = new ObjectOutputStream(baos);
       List reqList;
       try {
        reqList = (List) ois.readObject();
        // 開始分析傳入的List
        String enu = (String) reqList.get(1);
        Object params = reqList.get(2);
        out.writeObject(InvokeBussiness.query(InvokeEnum.valueOf(enu), params));
       } catch (Exception e) {
        e.printStackTrace();
       }
       byte buf[] = baos.toByteArray();
       response.setContentLength(buf.length);
       ServletOutputStream servletout = response.getOutputStream();
       servletout.write(buf);
       servletout.close();
    }

    }

    <4>客戶端

    package com.client;

    import java.util.List;

    public interface IRemote {
    /**
       * 調用遠處的Servlet
       * @param listObj 傳入的參數對象
       * 其中 listObj.get(0) 為 Servlet地址url 如 : http://192.168.253.254:8080/ibm/IbmServlet
       * listObj.get(1)為參數命令 ,如 GetAllUser,ValidateUser等,為事先約定好的命令
       * listObj.get(2)為調用的參數集合,是一個List對象
       * @return Object
       * @throws Exception
       */
    public Object inokeServlet(List listObj) throws Exception;
    }

    package com.client;

    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.List;

    public class Client implements IRemote {

    public Object inokeServlet(List listObj) throws Exception {
       URL url = new URL((String)listObj.get(0));
       URLConnection con = url.openConnection();
       con.setUseCaches(true);
       con.setDoOutput(true);
       con.setDoInput(true);
       con.setRequestProperty("Content-type", "application/octest-stream");
       con.setRequestProperty("Content-length", "" + -1);
       ObjectOutputStream dataout = new ObjectOutputStream(con
       .getOutputStream());
       dataout.writeObject(listObj);
       dataout.flush();
       dataout.close();
       ObjectInputStream in = new ObjectInputStream(con.getInputStream());
       Object obj = in.readObject();
       in.close();
       return obj;
    }

    public boolean validateUser(String userName, String pwd) {
       List<Object> list = new ArrayList<Object>();
       list.add("http://localhost:8080/servletInvoke/InvokeServlet");
       list.add("ValidateUser");
       List<String> param = new ArrayList<String>();
       param.add(userName);
       param.add(pwd);
       list.add(param);
       try {
        Boolean bol = (Boolean)inokeServlet(list);
        if (bol)
         System.out.println("驗證成功!");
        else
         System.out.println("驗證失敗,清檢查你的用戶名密碼!");
        return bol;
       } catch (Exception e) {
        e.printStackTrace();
        System.out.println("調用服務器失敗!");
       }
       return false;
    }

    public List getAllUser() {
       List<Object> list = new ArrayList<Object>();
       list.add("http://localhost:8080/servletInvoke/InvokeServlet");
       list.add("GetAllUser");
       List<String> param = new ArrayList<String>();
       list.add(param);
       try {
        List res = (List)inokeServlet(list);
        return res;
       } catch (Exception e) {
        e.printStackTrace();
        System.out.println("獲得用戶列表時候,調用服務器失敗!");
       }
       return null;
    }


    public static void main(String args[]) {
       Client client = new Client();
       client.validateUser("admin", "123456");
       List list = client.getAllUser();
       for (int i = 0; i < list.size(); i++)
        System.out.println(list.get(i));
    }
    }



    </script>

    posted on 2007-08-13 18:45 helloworld2008 閱讀(2854) 評論(1)  編輯  收藏 所屬分類: java

    評論

    # re: java客戶端調用Servlet 2012-07-06 15:42 謝謝啊
    哥們,謝謝,啊
    你好強。  回復  更多評論
      

    主站蜘蛛池模板: 不卡一卡二卡三亚洲| 亚洲日本香蕉视频| 99国产精品免费观看视频| 亚洲卡一卡二卡乱码新区| 亚洲国产精品无码久久青草| 久久精品一本到99热免费| 亚洲精品无码mⅴ在线观看| 久久久无码精品亚洲日韩软件| 美女内射无套日韩免费播放 | 久久久久亚洲av无码尤物| xxxx日本免费| 一级毛片大全免费播放下载 | 99热在线日韩精品免费| ass亚洲**毛茸茸pics| 国产精品日本亚洲777| 青春禁区视频在线观看直播免费| 偷自拍亚洲视频在线观看99| 久久久久亚洲AV成人无码网站| 女性无套免费网站在线看| 久久香蕉国产线看免费| 污污的视频在线免费观看| 亚洲欧洲国产成人精品| 久久久久亚洲精品天堂久久久久久| 亚洲高清中文字幕免费| 两个人的视频www免费| 99亚洲男女激情在线观看| 一区二区三区亚洲| 99re热精品视频国产免费| 一级特黄a大片免费| 2017亚洲男人天堂一| 亚洲AV日韩精品久久久久久| 亚洲国产午夜中文字幕精品黄网站 | 黄色免费网址大全| 久久久久亚洲AV无码专区网站| 日本成年免费网站| 无码日韩精品一区二区三区免费| 暖暖免费中文在线日本| 亚洲色www永久网站| 亚洲日韩乱码中文无码蜜桃臀| 亚洲AV无码乱码在线观看富二代| 亚洲欧洲国产成人综合在线观看|