java webservice 开发方法(REST方式)---续(父类写法及使用)

来源:互联网 发布:观察者模式js 编辑:程序博客网 时间:2024/06/04 18:21

目标:父类处理数据库连接及操作,并且将返回值Json标准化

1.父类

package com.fivesuo.zkapp.webservice;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;


import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


import com.fivesuo.zkapp.Constant;
import com.fivesuo.zkapp.entity.CommonEntity;


public class BaseWebservice extends Constant{


private boolean onOff=false;//only if onOff is true, other method can be called 
    Connection conn = null;
    DataSource ds = null;
    ResultSet rs  =null;
    Statement stmt = null;
    CommonEntity ret=null;
Logger log = null;
List<Object> list=new ArrayList<Object>();
String sql;

public BaseWebservice(){
    log=Logger.getLogger(this.getClass().getName());
}
/**
* initial the webservice
* @return
* ERCODE:when error
* NORMAL:when normal
*/
    public CommonEntity init(){
   
    ret=new CommonEntity();
    ret.setResult(NORMAL);
   
        try{
            javax.naming.Context initCtx = new InitialContext();
            ds =(DataSource)initCtx.lookup(POOL);
            conn = ds.getConnection();
            stmt = conn.createStatement();
            onOff=true;
            }catch(NamingException e){
            ret.setResult(ERCODE);
            log.severe(e.getMessage());
            }catch(SQLException e){
            ret.setResult(ERCODE);
            log.severe(e.getMessage());
            }
    return ret;
    }
    
    public String getSql(){
    return sql;
    }
    public void execute(){
    if(!onOff)return;
    try{
    stmt.execute(sql);
    ret.setResult(NORMAL);
    }catch(SQLException e){
    close();
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    }
    public void executeLargeUpdate(){
    long num;
    if(!onOff)return;
    try{
    num=stmt.executeLargeUpdate(sql);
    ret.setResult(Long.toString(num));
    }catch(SQLException e){
    close();
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    }
    public void executeUpdate(){
    int num;
    if(!onOff)return;
    try{
    num=stmt.executeUpdate(sql);
    ret.setResult(Integer.toString(num));
    }catch(SQLException e){
    close();
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    }
    public void executeQuery(){
    if(!onOff)return;
    try{
    rs=stmt.executeQuery(sql);
    ret.setResult(NORMAL);
    }catch(SQLException e){
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    }
    /**
     * get the max rows
     * @return
     * -1 means no result
     */
    public int getMaxRows(){
    if(!onOff)return -1;
    try{
    ret.setResult(NORMAL);
    return stmt.getMaxRows();
    }catch(SQLException e){
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    return -1;
    }
    /**
     * get the max rows
     * @return
     * -1 means no result
     */
    public long getLargeMaxRows(){
    if(!onOff)return -1;
    try{
    ret.setResult(NORMAL);
    return stmt.getLargeMaxRows();
    }catch(SQLException e){
    ret.setResult(ERCODE);
log.severe(e.getMessage());
close();
    }
    return -1L;
    }
    public void SetSql(String sql){
    this.sql=sql;
    }
    /**
     * get the connection from the connection pool
     * @return
     */
    public Connection getConnection(){
    return conn;
    }
    public void setConnection(Connection conn){
    this.conn=conn;
    }
    /**
     * get statement from the connection
     * @return
     */
    public Statement getStatement(){
    return stmt;
    }
    public void setStatement(Statement stmt){
    this.stmt=stmt;
    }
    /**
     * get the Logger
     * @return
     */
    public Logger retLog(){
    return log;
    }
    public void setLog(Logger log){
    this.log=log;
    }
    public void close(){
    if(!onOff)return;
   
    log.info(this.getClass().getName()+":"+sql);


    if(null!=rs){
    try{
    rs.close();
    }catch (SQLException e) {
log.severe(e.getMessage());
}
    rs=null;
    }


    if(null!=stmt){
    try{
    stmt.close();
    }catch (SQLException e) {
log.severe(e.getMessage());
}
    stmt=null;
    }


if(null!=conn){
try{
conn.close();
}catch (SQLException e){
log.severe(e.getMessage());
}
conn=null;
}


    return;
    }
}

2.Constant 类

package com.fivesuo.zkapp;




public class Constant {
static protected final String ERCODE = "-1";
static protected final String NORMAL = "0";
static protected final String POOL="java:comp/env/jdbc/zkapp";


}

3.entity类

package com.fivesuo.zkapp.entity;


public class CommonEntity {


private String Result;

public String getResult(){
return Result;
}
public void setResult(String Result){
this.Result=Result;
}
}

4.使用方法

@Path("/CheckLoginNamePassword")
public class CheckLoginNamePassWord extends BaseWebservice{
@Context
    HttpServletRequest request;
@Context
    HttpServletResponse response;


    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Object getResult(@QueryParam("userId") String userId){
    UserInfoEntity user;


    log.info("weifaqiang:"+"started............");
    init();
        if(ret.getResult()==ERCODE){
        close();
        return ret;
        }


        sql ="select * from weian where userid="+userId;
        executeQuery();
        if(ret.getResult()==ERCODE){
        close();
        return ret;
        }


        try{
        while(rs.next()){
        user=new UserInfoEntity();
        user.setUserId(rs.getString("userid"));
        user.setPassword(rs.getString("password"));
        user.setName(rs.getString("name"));
        list.add(user);
        }
       }catch(SQLException e){
      ret.setResult(ERCODE);
       }
        
       if(ret.getResult()==ERCODE){
      close();
      return ret;
       }
       return list;
    }

5.简单说明

5.1.新建webservice类时,需要继承BaseWebservice

5.2.进行webservice初始化:init()

5.3.对execute cluster方法也进行了封装

5.4功能:

5.4.1.sql是父类变量,可以设定sql文

5.4.2.当有例外出现,父类ret类型返回值可以直接作为结果返回

5.4.3.将程序执行结果存入list,就可以标准Json格式返回

阅读全文
0 0
原创粉丝点击