<%@ page contentType="text/html; charset=gb2312"%> 使用Buffalo集成Spring写的一个登录实例
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
使用Buffalo集成Spring写的一个登录实例
     发布者: 发布时间:2006-07-17

buffalo是国内的michal chen所写的一个AJAX远程调用框架,目前版本是1.2.2。知道这东西是从我开始收集有关AJAX的相关资料时从JAVAEYE上看到了推荐,再怎么说也是国产架构,看demo感觉很不错,就下来了开始学学。 
Buffalo使用burlap协议。因此Buffalo解析大数据量可能会比较慢,然而可以适用于多种服务器端和客户端,并且burlap协议的完整性和支持的数据类型更加丰富 
Buffalo基于prototype,如果你的AJAX应用也是基于prototype,那么可以减少重复加载prototype的带宽,并且获得相当一致的编程概念,而且易学易用。 
以上是javaeye给出的推荐理由,我这两天的接触也证明burlap协议确实封装的很好。至于prototype.js,因我对于JS的使用经验有限,不敢妄谈。目前版本的buffalo可以集成spring,这一开始就很吸引我,我们可以搭建一个控制器放在客户端的应用了?(我称它为消失的“控制器”)我们可以把所有的业务逻辑封装在spring组合起来的业务层中,暴露需要远程调用的“服务”给客户端,我们不再需要什么控制器,我们的AJAX引擎起到了同样的作用。那就试试吧, let's go!

 

1。login.jsp,简单的登陆界面
 



var springEndPoint="<%=request.getContextPath()%>/remoting/Spring-buffalo";
var buffalo = new Buffalo(springEndPoint);

function doSubmit() {
        var name=Buffalo.getElementById("name").value;
        var password=Buffalo.getElementById("password").value;
 buffalo.remoteCall("userService.login", [name,password], function(reply){
  $("form_infomsg").innerHTML=reply.getResult();
 })
}



Form demos






  Username
  
  
  Password
  
  
 
 
 



这里的重要代码片段是:

buffalo.remoteCall("userService.login", [name,password], function(reply){
  $("form_infomsg").innerHTML=reply.getResult();
 })
此处调用暴露的远程服务userService.login,参数是name,password,返回结果显示在form_inforsg上

 

 

2。我们在哪里注册我们的远程服务?首先buffalo与spring的集成
 

//web.xml




  Rhinoceros Blog

    
 contextConfigLocation
 
  /WEB-INF/applicationContext.xml
 

    

    
     context
 org.springframework.web.context.ContextLoaderServlet
 1
    


   
 remoting
 org.springframework.web.servlet.DispatcherServlet
  4
   

   
  service
  net.buffalo.server.BuffaloServiceServlet
  
   debug
   true
  

   

   
 remoting
 /remoting/*
   


  
       service
 /BUFFALO
  




请注意,我们把所有/remoting/*形式的URL全部交给DispatcherServlet处理,它负责如何进行远程调用,在login.jsp中我们看到了springEndPoint="<%=request.getContextPath()%>/remoting/Spring-buffalo";
//remoting-servlet.xml






 
  
            
                 
                    
                
            

        
 
 

你可以把remoting-servlet.xml理解成一个映射文件,客户端通过这来寻找所需要的服务,我们已经在这里注册了服务userService,引用到的javabean的ID为userService

最后一个配置文件:spring的applicationContext.xml




  
     
     
     
     
  
  
      
  
  
   
            
                
                    
                
            

        
    


应用所有用到的业务对象都在这里进行组装.

 

 

3.JavaBean AND service
 

接下来,让我们看看UserService这个类,它实现了一个远程调用服务,为了获得HttpSession,它必须继承自BuffaloService(从这个角度看,想实现干净的,完全脱离servlet的框架很难).

/*
 * 创建日期 2006-3-23
 *
 *
 *
 */
package com.denny_blue.rhino.service;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

import net.buffalo.server.BuffaloService;

import com.denny_blue.rhino.bean.UserBean;

/**
 * @author dennis
 *
 *
 *
 */
public class UserService extends BuffaloService{
 DataSource dataSource;
 public void setDataSource(DataSource dataSource){
  this.dataSource=dataSource;
 }
 public DataSource getDataSource(){
  return dataSource;
 }
 private UserBean getUser(String name){
        final UserBean user=new UserBean();
     JdbcTemplate jt=new JdbcTemplate(dataSource);
  jt.query("select * from rh_user where name=\'"+name+"\'",
      new RowCallbackHandler(){
            public void processRow(ResultSet rs)throws SQLException{
             user.setId(rs.getInt("id"));
             user.setName(rs.getString("name"));
             user.setPassword(rs.getString("password"));

                }
             }
   );
 // System.out.println(user.getName()+user.getPassword());
  return user;


 }
 public String login(String name,String password){
  UserBean user=getUser(name);
  if(user.getName()==null||user.getName().equals(""))
    return "用户名错误!!!";
  System.out.println(user.getName()+"     "+name);
  HttpServletRequest request=(HttpServletRequest)getRequest();
  HttpSession session=request.getSession();
  if(user.getName()!=null&&user.getPassword()!=null&&
    !user.getName().equals("")&&!user.getPassword().equals("")){
     if((user.getName()).equals(name)&&(user.getPassword()).equals(password)){
   session.setAttribute(Constants.USER_KEY,user);
   System.out.println("Session Binding.....");
   session.setMaxInactiveInterval(100);
      return "登陆成功!!";
     }
     else
     return "密码错误,登陆失败!!";
  }

  return "登陆失败";
 }
}

UserBean.java

/*
 * 创建日期 2006-3-21
 *
 *
 *
 */
package com.denny_blue.rhino.bean;

/**
 * @author dennis
 *
 *
 *
 */
public class UserBean {
 private int id;
 private String name;
 private String password;

 //constructor
 public UserBean(){}
 public UserBean(int id,String name,String password){
  this.id=id;
  this.name=name;
  this.password=password;
 }

 //getter setter
 public void setId(int id){
  this.id=id;
 }
 public int getId(){
  return id;
 }
 public void setName(String name){
  this.name=name;
 }
 public String getName(){
  return name;
 }
    public void setPassword(String password){
     this.password=password;
    }
    public String getPassword(){
     return password;
    }

}

业务逻辑很简单,查询数据库,进行密码核对,返回登陆成功或者失败的字符串给客户端,登陆成功记录session.要想运行这个例子,必须建立数据库(你可以根据spring配置文件进行相应修改).

看到了吗?我们只需要spring提供服务接口,然后在客户端利用buffalo进行调用,这中间的一切buffalo已经为我们省略了.

 

在做这个简单例子的时候也遇到过两个问题,不知道是不是版本更迭导致的.一个是如果想使用spring,我的页面只能引入buffalo-1.1.js,新版的好象路径有错误.UserService继承BuffaloService,是旧版本server包中的,我使用1.2的新版本反而不能成功,不知道为何,待我看看源代码再谈.
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
WEB2.0 中 AJAX 技术应用的详细探讨
AJAX技术之如何处理书签和翻页按扭
Ajax令网络更顺滑 微软出招何时
用AJAX+J2EE实现一个网上会议室系统
AJAX技巧:如何处理书签和后退按钮
ajax的小例子
 
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号