接口项目servlet的一种处理方式,将异常返回给调用者【我】

接口项目servlet的一种处理方式,其他层有异常全部网上抛,抛到servlet层,将异常返回给调用者:

Servlet层:

private void processRequest(HttpServletRequest httpRequest,
            HttpServletResponse httpResponse) throws ServletException, IOException {

        InputStream inStream =null;
        BufferedReader br =null;
        String reJson="";
        String rtJson="";
        String tranId="";

        //返回报文字段
        String resultCode = "1";
        String resultMsg = "失败";
        try {
            httpRequest.setCharacterEncoding("UTF-8");
            inStream = httpRequest.getInputStream();
            String reqUrl= httpRequest.getRequestURI();
            syslogger.info(reqUrl);
            String[] method = reqUrl.split("/", 0);
            Map headMap = this.getHeaderMap(httpRequest);
            Map params = this.getParameterMap(httpRequest);
            syslogger.info(params);
             br = new BufferedReader(new InputStreamReader(inStream,"UTF-8"));
             String str=br.readLine();
             StringBuffer json = new StringBuffer();
             while (str != null) {
                try {
                    json.append(str);
                    str =  br.readLine();
                } catch (Exception blExc) {
                    System.out.println("请求参数获取出错------------str:"+str);
                    throw new CommonRunException(blExc.getMessage(), blExc, "");
                }
            }
             reJson=json.toString();
             syslogger.info("resultlog 请求------------"+json);
//             String httpMethod = httpRequest.getMethod().toUpperCase();
             System.out.println("resultlog 请求------------"+json);
             //调用相关的程序逻辑
             tranId=RequestUtil.getMapValue(headMap,"X-CTG-Request-Id");
            if("".equals(tranId)){
                tranId=RequestUtil.getMapValue(headMap,"X-CTG-Request-ID");
            }
            //调用实现类参数
             String param = "";
            try {
                //逐层解析报文获取请求参数
                JSONObject jsobRst1 = JSONObject.fromObject(json.toString());
                syslogger.info("jsobRst1 请求------------"+jsobRst1);
//                String svcCont = jsobRst1.getString("svcCont");
//                JSONObject requestObject = JSONObject.fromObject(svcCont);
//                param = requestObject.get("requestObject").toString();
                param = jsobRst1.toString();
            } catch (Exception e) {
                System.out.println("请求参数解析出错------------str:"+json);
                syslogger.info("解析报文出错  请求------------"+e);
                throw new Exception("解析报文出错  请求------------"+e);
            }
            //逻辑处理类 参考 GETcustCRMProCustationGetImagesAPI
            GETcustSyncSaleAPI logic = new GETcustSyncSaleAPI();
            //绑定参数
             logic.injectDepObject(param);
             //实现类执行请求
             logic.process();
             //调用实现类返回值处理
             Map implRtn = new HashMap();
             implRtn = (Map)logic.getReturnObject();

             if (implRtn.containsKey("error")) {
                 resultCode = "1";
                  resultMsg = implRtn.get("error").toString();
            }else {
                resultCode = "0";
                if (implRtn.containsKey("msg")) {
                    resultMsg = implRtn.get("msg").toString();
                }else {
                    resultMsg = "成功";
                }

            }

            httpResponse.setCharacterEncoding("UTF-8");
            httpResponse.setHeader("Content-type", "application/json;charset=UTF-8");
            //返回接口调用的处理结果
             OutputStreamWriter objOutputStrm = new OutputStreamWriter(httpResponse.getOutputStream(),"UTF-8");
             try {
//                Map respMap = new HashMap();
                JSONObject SvcCont = new JSONObject();
                SvcCont.put("resultCode", resultCode);
                SvcCont.put("resultMsg", resultMsg);
//                respMap.put("svcCont", SvcCont);
//                JSONObject resObject = JSONObject.fromObject(respMap);
//                syslogger.info("resultlog 返回------------"+respMap);
//                objOutputStrm.write(resObject.toString());
//                rtJson=resObject.toString();
                objOutputStrm.write(SvcCont.toString());
                rtJson=SvcCont.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                objOutputStrm.flush();
                objOutputStrm.close();
            }

         } catch (Exception e) {
             syslogger.info(e.toString());
                syslogger.fatal(e.getMessage(), e);
                throw new ServletException(e.getMessage());
         }finally{
                try {
                    if (br != null){
                        br.close();
                        br = null;
                    }
                    if (inStream != null){
                        inStream.close();
                        inStream = null;
                }
                } catch (IOException e) {
                    e.printStackTrace();
                }finally{
//                    setInsertSoapMsgHistory( reJson,  rtJson,
//                            "0", tranId,"CustSyncSale");
                }
            }
    }
    

service层:

public void processLogic() {
        //返回map
        respMap = new HashMap();
            syslogger.info("processLogic start");
            syslogger.info("paraMap start"+respMap);
            eimServiceHolder = DBServiceHolderFactory.getDBServiceHolder(IDBServiceHolderConsts.JTCRM_APP);
            //返回map
            JSONObject SvcCont = new JSONObject();

            Map<Object, Object> map = new HashMap<Object, Object>();
            String statusCD = null;  //接口标识
            String type = "";
            Map list = new HashMap();
            JSONObject jsonObject = null;
            if(paraMap == null || paraMap.equals("")){
                syslogger.info("GETcustxxxx.processLogic............................请求报文接受异常!");
                return;
            }else{
                jsonObject = JSONObject.fromObject(paraMap);
                map = (Map)jsonObject;
            }
            System.out.println("入参:"+paraMap);
            String result = paraMap;
            statusCD = CSUtil.o2s(map.get("statusCD"));

            try {
                if("1200".equals(statusCD) || "1000".equals(statusCD)){  //新建送审/审核通过
                    Object rtn = eimServiceHolder.execute(service, "insertRel", new Object[]{result});
                    respMap.put("msg", rtn.toString());
                }else if ("1100".equals(statusCD)) {//审核不通过/删除
                    Object rtn = eimServiceHolder.execute(service, "deleteRel", new Object[]{result});
                    respMap.put("msg", rtn.toString());
                    System.out.println("删除(更新)成功");
                }else {
                    System.out.println("入参中statusCD异常,statusCD:"+statusCD);
                    throw new Exception("入参中statusCD异常,statusCD:"+statusCD);
                }
                syslogger.info("respMap start"+respMap);
            } catch (Exception e) {
                e.printStackTrace();
                respMap.put("error", e.toString());
            }

            syslogger.info("processLogic end");
            return;
    }

原文地址:https://www.cnblogs.com/libin6505/p/11956062.html

时间: 2024-08-30 12:28:17

接口项目servlet的一种处理方式,将异常返回给调用者【我】的相关文章

servlet的两种配置方式

在Servlet2.5规范之前,JavaWeb应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过Annotation来配置管理Web组件,因此web.xml文件可以变得更加简洁,这也是Servlet3.0的重要简化. 两种方式 (1),通过web.xml配置 [html] view plain copy      <servlet>           <servlet-name>GetApplication</servlet-name>

Servlet的三种实现方式

A: 实现Servlet接口 B: 继承GenericServlet C: 继承HttpServlet,它是对Http协议进行了封装

06.实现servlet的几种方式,以及接口或者类之间的关系

接口:Servlet.ServletConfig.ServletRequest.ServletResponse.HttpServletRequest.HttpServletResponse.ServletContext 类:HttpServlet(抽象类).GenericServlet(抽象类) 来张关系图 ServletContext: ServletContext的对象是application是在项目初始化时被创建的.故servletContext随着应用初始化而被创建,随着应用的结束而被销

在web项目中获取ApplicationContext上下文的3种主要方式及适用情况

最近在做web项目,需要写一些工具方法,涉及到通过Java代码来获取spring中配置的bean,并对该bean进行操作的情形.而最关键的一步就是获取ApplicationContext,过程中纠结和错误了很久,总结一下获取ApplicationContext的三种方式: 方式一:实现ApplicationContextAware接口 对于实现ApplicationContextAware接口的类,spring容器在初始化的时候会扫描他,并把容器的context环境注入给它.如下: 1 publ

实现servlet的三种方式

实现servlet的三种方式 01,实现servlet接口 02,继承GenericServlet 03,继承HttpServlet 常用的 注:Httpservlet=====extends====>GenericServlet=====implements====>Servlet接口

Servlet三种实现方式

Servlet三种实现方式:实现Servlet接口,继承GenericServlet ,继承HttpServlet. 1.实现Servlet接口: import javax.servlet.*; import java.io.*; public class Hello implements Servlet{ //执行条件:reload,关闭tomcat,关机 public void destroy() { // TODO Auto-generated method stub System.out

Java多线程的两种实现方式:继承Thread类 &amp; 实现Runable接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! 创建和启动线程的两种传统方式: Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法.

项目团队中4种组员类型的相应管理方式

在我们的实际软件项目中,管理团队其实比写代码或者实现一个客户的需求更为的有挑战性.因为编程实际上是和机器打交道,而和机器打交道,只要你符合机器预定的逻辑, 一步步迈向解决问题的道路上一点都不难,但是人确实动态变化的,因为人时时刻刻受到各种外部因素的影响.总之,我们可以把组内的人分成四种类型: 1.有意愿有能力 2.有意愿无能力 3.无意愿有能力 4.无意愿无能力 那么对这四种类型的团队成员如何进行管理呢? 1.对于第1种人,授权,充分的授权.比如让其协助管理团队里面的一些事情. 2.对于第2种人

Storm 系列(六)—— Storm 项目三种打包方式对比分析

一.简介 在将 Storm Topology 提交到服务器集群运行时,需要先将项目进行打包.本文主要对比分析各种打包方式,并将打包过程中需要注意的事项进行说明.主要打包方式有以下三种: 第一种:不加任何插件,直接使用 mvn package 打包: 第二种:使用 maven-assembly-plugin 插件进行打包: 第三种:使用 maven-shade-plugin 进行打包. 以下分别进行详细的说明. 二.mvn package 2.1 mvn package的局限 不在 POM 中配置