成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Swing客戶端知識

開發 后端
本文主要介紹如何使用Swing客戶端去連接已經存在的Servlet應用。以及介紹Struts結構和The URLConnection class等。

1.簡介

Jakarta Struts是基于MVC模式創建servlet應用程序的框架。大部分的Struts應用程序都是使用瀏覽器作為客戶端,實際上Struts足夠的開放,它可以使用其它的客戶端模式。在這里我將在我 "Coding your second Jakarta Struts Application"這篇文章里的一個瀏覽器應用實例改成Swing客戶端模式,只需要修改一點代碼。

這篇文章主要介紹如何使用Swing客戶端去連接已經存在的Servlet應用。如果你打算開發一個java應用程序,既能夠使用瀏覽器做客戶端也可以用Swing做客戶端,你就需要根據你程序的需要靈活的選擇構架,如EJB或web service,他們提供了簡單的接口。

2.Struts結構

在我們開始之前,先看看瀏覽器如何和Struts應用通信的。這些將在我們的Swing應用程序中體現。
◆Struts應用程序是由servlet接受到GET或POST請求開始的。
◆servlet決定調用哪個"action",是從URL中獲得信息的。
◆實現了Action的java類是在struts-config.xml中配置的。
◆ Struts的輸出由jsp來顯示,jsp的名字也在struts-config.xml文件中指定。
所以***個非瀏覽器應用需要能夠給servlet發送一個請求,并且能從jsp頁面得到響應。

3.The URLConnection class

使用URLConnection類能夠很簡單的使用java編寫servlet請求代碼。這個類很有趣,因為它有一些奇怪的設計。如果你想看看它的實現,我建議你讀一讀"Dodge the traps hiding in the URLConnection class".
如果想發送一個帶有"list"action的請求,并接受打印響應,你需要這樣寫代碼:

  1. URL url = new URL("http://myserver/project/list.do");    
  2.  URLConnection conn = url.openConnection();    
  3.         
  4.   BufferedReader in =     
  5.    new BufferedReader(new InputStreamReader(conn.getInputStream()));  
  6. String line;      
  7.   while ((line = in.readLine()) != null) {    
  8.  System.out.println(line);    
  9. }   

一般來講你通常需要在請求的同時發送一些數據--就像提交表單那樣。這些數據需要在你讀取響應前發送過去。

  1. URL url = new URL("http://myserver/project/list.do");    
  2.     URLConnection conn = url.openConnection();    
  3.     conn.setDoOutput(true);    
  4.     conn.setRequestProperty("user-agent","SWING");      
  5.         
  6.     BufferedWriter out =    
  7.        new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));    
  8.     out.write("name1=value1&name2=value2");    
  9.     out.flush();    
  10.    out.close();    
  11.        
  12.    String c = conn.getHeaderField("Set-Cookie");    
  13.    BufferedReader in =     
  14.       new BufferedReader(new InputStreamReader(conn.getInputStream()));    
  15.   String line;      
  16.   while ((line = in.readLine()) != null) {    
  17.      System.out.println(line);    
  18.   }   

這個例子同時也顯示了如何讀寫HTTP頭信息。
***個例子使用GET方法與HTTP通信,而第二個例子使用POST方法通信。你同樣可以使用GET方法來給servlet傳送數據,但是就必須要把數據加到URL里,像這樣:

  1. URL url = new URL("http://myserver/project/list.do?name1=value1&name2=value2"); 

4.Identifying the client

現在我們知道怎么發送和請求數據了,但是我們怎么接受數據呢?如果響應是給瀏覽器的,那響應里就包含了HTML或者還有JavaScript和樣式。對于我們的Swing客戶端,我們只需要數據。這將帶來一個新問題:Struts應用程序如何能識別出客戶端是一個瀏覽器,是個Swing還是其它什么呢?
一種解決辦法是在每個請求里添加參數時其能間鑒別出是哪種客戶端。我在第二個例子里已經使用了user-agent這個頭信息來使其識別出是個Swing客戶端。
當Struts應用程序準備好給客戶端返回數據時,它就會檢測user-agent的值,然后選擇適合客戶端的jsp頁面。這將會替代Struts Action類設置的跳轉信息。

  1. String client = (String)request.getHeader("user-agent");    
  2.    // Forward control to the list page    
  3.    if (client.equals("SWING"))     
  4.     return (mapping.findForward("swinglist"));    
  5.    else return (mapping.findForward("list"));   

【編輯推薦】

  1. Swing線程解決方案
  2. 淺析Swing項目的開發
  3. 全面比較AWT和Swing
  4. 淺談Swing繪畫的處理過程
  5. 概述JSci.swing包的核心
責任編輯:佚名 來源: 機械工業出版社
相關推薦

2011-08-25 13:42:57

IP隧道IPIPGRE

2010-02-24 16:39:27

WCF客戶端處理

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 15:36:41

服務端與客戶端

2009-10-15 10:46:03

PPC客戶端程序VB.NET創建

2009-08-21 17:48:43

C#網絡編程

2009-08-21 17:53:25

C#網絡編程客戶端程序

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2011-08-17 10:10:59

2010-05-31 10:11:32

瘦客戶端

2011-03-24 13:00:31

配置nagios客戶端

2010-12-21 11:03:15

獲取客戶端證書

2011-03-02 14:36:24

Filezilla客戶端

2011-10-26 13:17:05

2009-08-21 16:37:54

C#客戶端程序

2011-03-21 14:53:36

Nagios監控Linux

2011-04-06 14:24:20

Nagios監控Linux

2013-05-09 09:33:59

2009-03-04 10:27:50

客戶端組件桌面虛擬化Xendesktop

2012-05-07 13:55:41

JavaJava Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人干人人干人人 | 免费成人高清在线视频 | 免费成人高清在线视频 | 玖玖久久 | 91视频国产区 | 人人爱干| 国产98色在线 | 日韩 | 亚洲欧美日韩精品久久亚洲区 | 蜜臀av日日欢夜夜爽一区 | 成人福利影院 | 亚洲国产欧美日韩 | 欧洲一区在线观看 | 日本三级黄视频 | 国产精久久久久久 | 国产成人一区二 | 久久精品a级毛片 | 天天插天天操 | 视频二区国产 | 国产剧情一区二区三区 | 欧美性久久 | 欧美a级成人淫片免费看 | 日韩精品av一区二区三区 | 国产激情视频在线观看 | 亚洲午夜小视频 | 午夜免费精品视频 | 日本精品视频在线观看 | 色姑娘av| 成人二区 | 国产精品日韩高清伦字幕搜索 | 亚洲第一女人av | 玖玖综合在线 | 亚洲九九 | 一级做受毛片免费大片 | 91亚洲国产成人久久精品网站 | 91精品久久久久久综合五月天 | 99视频在线| 国产无套一区二区三区久久 | 欧美激情一区二区三区 | 国产一区二区高清在线 | 中文字幕一区二区三区四区 | 狠狠热视频 |