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格式返回
- java webservice 开发方法(REST方式)---续(父类写法及使用)
- java webservice 开发方法(REST方式)
- java webservice 开发方法(REST方式)---续(JSON标准输入输出)
- WebService(4):CXF Spring开发WebService,基于SOAP和REST方式
- WebService的使用方式RPC/SOA/Rest
- java实现REST方式的webService
- 使用javax.ws.rs实现Restlet开发REST方式的webservice
- webService-REST方式
- rest注解说明及使用示例(java)
- CXF Spring开发WebService,基于SOAP和REST方式
- CXF Spring开发WebService,基于SOAP和REST方式
- CXF Spring开发WebService,基于SOAP和REST方式
- 利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- MyEclipse rest webservice 使用
- 【WebService】使用JDK开发WebService(二)
- 【WebService】使用CXF开发WebService(四)
- js 传值
- 使用Statement对数据库进行增删改查
- 开发板与主机NFS网络文件系统搭建
- mybatis与spring整合(方式一)
- java截屏代码
- java webservice 开发方法(REST方式)---续(父类写法及使用)
- hibernate 老版本在存dateTime时,报value为空
- vim 字符编码设置 及 修改编码
- codeforces 467-C. George and Job(前缀和+dp)
- 简单介绍结构体重载
- Maven 国内镜像很慢解决的方法
- PCAP文件结构
- deep learning 学习资料
- spring DelegatingFilterProxy 过滤器 的原理及运用