本文将为大家详细讲解有关Swing客户端的知识,文章内容质量较高,所以边肖将与大家分享以供参考,希望大家看完本文后对相关知识有一定的了解。
1.简介
Jakarta Struts是一个基于MVC模式创建servlet应用程序的框架。大多数Struts应用程序使用浏览器作为客户端。事实上,Struts足够开放,可以使用其他客户端模式。在这里,我将把我的文章“编写第二个Jakarta Struts应用程序”中的一个浏览器应用程序示例更改为Swing客户端模式,只需稍加修改代码。
本文主要介绍如何使用Swing客户端连接现有的Servlet应用程序。如果你计划开发一个java应用程序,你可以使用浏览器作为客户端,也可以使用Swing作为客户端,你需要根据你的程序需求灵活选择架构,比如EJB或者web service,它们提供简单的接口。
2.Struts结构
在我们开始之前,让我们来看看浏览器是如何与Struts应用程序通信的。这些将反映在我们的Swing应用程序中。
Struts应用通过servlet接收GET或POST请求启动。
servlet决定调用哪个‘动作’,并从URL获取信息。
实现Action的java类在struts-config.xml中配置
struts的输出由jsp显示,jsp的名称也在struts-config.xml文件中指定。
所以* * *非浏览器应用程序需要能够向servlet发送请求,并从jsp页面获得响应。
3.The URLConnection class
使用URLConnection类可以很容易地用java编写servlet请求代码。这门课很有趣,因为它有一些奇怪的设计。如果你想看它的实现,我建议你读一下‘避开隐藏在URL连接类中的陷阱’。
如果您想发送带有“list”操作的请求并接受打印响应,您需要编写如下代码:
urlURl=NewURl(' http://my server/project/list . do ');URL connectionConn=URL . OpenConnection();BufferedReaderin=new bufferedreader(new inputstreamreader(conn . getinputstream()));Stringlinewhile((line=in.readLine())!=null){System.out.println(第行);一般来说,您通常需要在请求的同时发送一些数据——就像提交表单一样。这些数据需要在您阅读回复之前发送。
urlURl=NewURl(' http://my server/project/list . do ');URL connectionConn=URL . OpenConnection();conn . setdooutput(true);conn . setrequestproperty(' user-agent ',' SWING ');BufferedWriterout=
nbsp; new BufferedWriter(new OutputStreamWriter(conn.getOutputStream())); out.write("name1=value1&name2=value2"); out.flush(); out.close(); String c = conn.getHeaderField("Set-Cookie"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); }
这个例子同时也显示了如何读写HTTP头信息。
***个例子使用GET方法与HTTP通信,而第二个例子使用POST方法通信。你同样可以使用GET方法来给servlet传送数据,但是就必须要把数据加到URL里,像这样:
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类设置的跳转信息。
String client = (String)request.getHeader("user-agent"); // Forward control to the list page if (client.equals("SWING")) return (mapping.findForward("swinglist")); else return (mapping.findForward("list"));
关于Swing客户端的知识有哪些就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151902.html