您好,登录后才能下订单哦!
这篇文章将为大家详细讲解有关Swing客户端的知识有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
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的请求,并接受打印响应,你需要这样写代码:
URL url = new URL("http://myserver/project/list.do"); URLConnection conn = url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); }
一般来讲你通常需要在请求的同时发送一些数据--就像提交表单那样。这些数据需要在你读取响应前发送过去。
URL url = new URL("http://myserver/project/list.do"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); conn.setRequestProperty("user-agent","SWING"); BufferedWriter out = 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客户端的知识有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。