关闭

浅谈J2EE中的Service(二)

426人阅读 评论(0) 收藏 举报

文章在我的QQ空间里面

http://43990246.qzone.qq.com/?url=http%3A//imgcache.qq.com/qzone/blog/blog.html%23blogId%3D94936

  第一步建立Service,先建立一个WEB工程名字叫excel,然后在建立一个叫testservice的servelet
servelet中的代码如下:




package serverlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URI;

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

public class testservice extends HttpServlet {
public testservice() {
super();
}
public void destroy() {
super.destroy();
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setCharacterEncoding("UTF-8");
InputStream in=request.getInputStream();  ///读取客户端请求的字节流
String sp ="";
byte[] b1=null;

while(in.read(b1 = new byte[1]) != -1 )
{
sp += new String(b1,"UTF-8");

}

System.out.println("Service中接收到的客户端请求"+sp+"========");///以上是打印在TOMCAT中的。
in.close();
///////以上的代码实际应用中可以用DOM4J等方法解析这个XML然后可以做如判断用户身份,
/////和得知用户请求的类型和条件。
OutputStream Out=response.getOutputStream();
String strxml="" +
               "<?xml version=/"1.0/" encoding=/"UTF-8/" ?>"+
                 "<Response>"+
            "<ResponseHotel>"+
            "<Country Code=/"China/" />"+
            "<City Code=/"Shanghai/" />"+
                "<Hotels>"+
                 "<Hotel>金茂凯悦</Hotel><Hotel>喜来登</Hotel>"+
                 "</Hotels>"+
            "</ResponseHotel>"+
                "</Response>";
byte[] b=strxml.getBytes("UTF-8");
Out.write(b);
///////以上的代码实际应用中根据解析用户请求的XML到数据库中拿需要的数据再组装成XML返回给用户

}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    doGet(request,response);
}
public void init() throws ServletException {}

}


      第二步建立客户端,建立一个叫TestUrl的CLASS
TestUrl中的代码如下:

package Test;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

public class TestUrl {

public static String strURL = "http://localhost:8080/excel/testservce";
////strURL 中http://localhost:8080/是服务器的地址excel是应用的名字
         ////testservce是具体实现Service的servlet名字


 public static void main(String[] args)throw* **ception{ 
 String strxml="" +
     "<?xml version=/"1.0/" encoding=/"UTF-8/" ?>"+
                 "<Request>"+
                 "<Source>"+
                 "<RequestorID userid=/"shtour/"  password=/"962020/" />"+
                 "</Source>"+
                 "<SearchHotel>"+
                 "<Country Code=/"中国/" />"+
                 "<City Code=/"上海/" />"+
                 "</SearchHotel>"+
                 "</Request>";
URL uConn= new URL(strURL);
URLConnection uc = uConn.openConnection();
uc.setDoOutput(true);
uc.setDoInput(true);
byte[] b=strxml.getBytes("UTF-8");
OutputStream oso = null;
oso = uc.getOutputStream();
oso.write(b);
///以上代码是建立和Service的连接并且将请求的XML提交给Service。
////以上的代码实际应用中可以用DOM4J等方法根据自己的需求生成XML。
InputStream iso = null;
iso = uc.getInputStream();
String sp ="";
byte[] b1=null;
while(iso.read(b1 = new byte[1]) != -1 )
{
sp += new String(b1,"UTF-8");

}
   System.out.println("客户接收到Service的返回信息"+sp+"====");
  ///以上是打印在控制台的。
      iso.close();
///以上代码是接收Service 返回 的XML
         ////以上的代码实际应用中可以用DOM4J等方法解析这个XML然后格式化的显示在HTML或jsp,asp
         ///页面上或防如数据库中。
     } 
}


     第三步把WEB工程部署到象TOMCAT这样的服务器上,然后运行服务器,这样一个Service就建立了。

      第四步执行TestUrl的MAIN方法看看结果吧。 
如果想这样执行的话注意客户端和Service端打印是在不同的地方。
好了一个Service就这样建立好了。当然用.net平台下的程序也可以来访问这个Service。
具体代码我就不写了。写的不好,如果你要写类似的东西而又没写过的话,可以参考一下ǒ
顺便设想一下EJB中的某写功能是不是也可以用这个代替,如SESSION,RMI 。
 
本blog所发表的[原创]文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者和出处。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1991次
    • 积分:42
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档