hession的入门级使用方法

来源:互联网 发布:谷歌人工智能产品 编辑:程序博客网 时间:2024/05/29 12:02

        本文章介绍的是hession最基本的使用方法,由于本人是第一次接触,肯定有很多地方不足,结合从网上搜的资料自己写了一个小的练习程序。个人的理解hession能够做到在服务器端写好接口和实现,可以在客户端通过url访问接口来调用服务端的实现类,客户端可以是任意的,包括手机,flex,java程序等等,只要知道url的值就可以访问,并能够接受服务端实现类的处理结果和返回的数据,这样的好处就是客户端不用考虑具体的实现,这只是个人的一个小小的看法,hession肯定还有很多更强大的功能等着我们去发现和运用。下面就来介绍下这个程序的编写过程。

         首先该程序分为服务器端和客户端两部分,可以将服务端项目部署在tomcat服务器或者其他web服务器上面,用的开发工具是myeclipse6.5。两个工程的结构如下图所示:

     

步骤:

一:服务端

   1.建立一个名为EasyHession的web工程,在WEB-INF目录下的lib文件夹中加入hession的jar包(点击下载jar包)。

   2.在src目录下按上图的结构(结构可以自定义)新建如下的接口和类。

接口:BasicAPI.java


package app.demo;


import app.demo.bean.User;


public interface BasicAPI {
public void setGreeting(String greeting);
public String hello();
public User getUser();
public boolean login(String username,String password);
}


接口实现类:BasicService.java


package app.demo.impl;


import app.demo.BasicAPI;
import app.demo.bean.User;


public class BasicService implements BasicAPI {

private String strGreeting = "I'm not change!"; 


@Override
public void setGreeting(String greeting) {
strGreeting = greeting;
System.out.println("set greeting success:" + greeting); 
}


@Override
public String hello() {
return strGreeting;
}


@Override
public User getUser() {
return new User("prance", "meshow");
}


@Override
public boolean login(String username, String password) {
// TODO Auto-generated method stub
System.out.println("username : " + username + " , password : " + password);
if ("zl".equals(username)&&"123".equals(password)) {
return true;
}
return false;
}

}


实体(pojo)类:User.java


package app.demo.bean;


import java.io.Serializable;


public class User implements Serializable {


private static final long serialVersionUID = 1L;

private String userName; 
private String password;

public User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}


public String getUserName() {
return userName;
}


public void setUserName(String userName) {
this.userName = userName;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;


@Override
public String toString() {
return "User:[ userName: "+userName+", password: "+password+" ]";
}
}


3.配置web.xml

在<web-app>下面加入如下hession的servlet配置,servlet的名字可以随意取,也不一定要和url-pattern一致,下面只是一个例子,但是servlet-class的配置必须和下面相同。

<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>app.demo.impl.BasicService</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
到此服务端已经完成。为了测试可以写一个test.jsp来测试服务器是否正确。

<%@ page language="java" pageEncoding="UTF-8" import="com.caucho.hessian.client.HessianProxyFactory,app.demo.BasicAPI"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>


<body>
<%
HessianProxyFactory factory = new HessianProxyFactory();
String url = ("http://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/hello");
out.println(url);
%><br><% 
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class,url);
out.println("Hello: " + basic.hello());
%><br><%
out.println("Hello: " + basic.getUser() .getUserName() );
%><br><%
out.println("Hello: " + basic.getUser().getPassword() );
%> 
</body>

将项目部署到tomcat上面,启动服务器,在浏览器中访问http://localhost:8080/EasyHession/test.jsp将得到如下结果:

http://localhost:8080/EasyHession/hello
Hello: I'm not change!
Hello: prance
Hello: meshow 


二:客户端

1.新建一个名为EasyHessionClient的java工程,导入和服务器相同版本的hession的jar包

2.将服务器端的接口BasicAPI.java和实体类User.java按照上面工程图的包结构复制到客户端工程中。

3.编写一个客户端访问类BasicClient.java

package client.demo;


import java.net.MalformedURLException;


import com.caucho.hessian.client.HessianProxyFactory;


public class BasicClient {


public static void main(String[] args) {
try {
String url = "http://localhost:8080/EasyHession/hello";
HessianProxyFactory factory = new HessianProxyFactory();
BasicAPI basic;
basic = (BasicAPI) factory.create(BasicAPI.class,url);
System.out.println("Hello:" + basic.hello());
System.out.println("userName:" + basic.getUser());
basic.setGreeting("changed!");
System.out.println("Hello:" + basic.hello());
if(basic.login("zl", "123")) {
System.out.println("登录成功!");
}else {
System.out.println("登录失败!");
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

}

运行该类之后将得到如下结果:

Hello:I'm not change!
userName:User:[ userName: prance, password: meshow ]
Hello:changed!
登录成功!


原创粉丝点击