【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

一、特殊名词介绍

二、接口/方法/对象源码——【FineReport V10 2018-07-30】

RequestCMDReceiver.java
package com.fr.stable.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by richie on 16/8/9.
 * 请求接收器
 */
public interface RequestCMDReceiver {

    /**
     * cmd参数值
     * @return cmd参数值
     */
    String getCMD();

    /**
     * 执行
     * @param req http请求
     * @param res http应答
     * @param sessionID 会话ID
     * @throws Exception 处理失败则抛出异常
     */
    void actionCMD(HttpServletRequest req, HttpServletResponse res,String sessionID) throws Exception;

    /**
     * 执行请求
     * @param req http请求
     * @param res http响应
     * @throws Exception 处理失败则抛出异常
     */
    void actionCMD(HttpServletRequest req, HttpServletResponse res) throws Exception;
}


三、接口/方法/对象说明

在早期的帆软报表产品中,所有的服务请求都是通过op和cmd参数来指定的。这个接口也就是基于这个设定产生的早期接口。不独立使用,常用来配合WebService接口实现web服务的申明。

String getCMD(); 方法指定了该请求具体绑定的cmd参数。需要注意的是,同一个op下的每一个cmd不能重复,一旦重复分发器先匹配到哪个cmd就执行哪个。

void actionCMD(HttpServletRequest req, HttpServletResponse res,String sessionID) 和 void actionCMD(HttpServletRequest req, HttpServletResponse res) 两个方法中并不是都要实现的,需要根据我们的场景选择其中一个实现

如果我们分发器使用的是WebActionsDispatcher.dealForActionNoSessionIDCMD则我们直接实现RequestCMDReceiver派生的NoSessionActionCMD即可,只用实现其中的void actionCMD(HttpServletRequest req, HttpServletResponse res) 即可。

否则选择实现void actionCMD(HttpServletRequest req, HttpServletResponse res,String sessionID)

四、常用链接

demo地址:demo-web-service

com.fr.web.core.ActionNoSessionCMD

com.fr.stable.fun.RequestInterceptor

com.fr.web.core.WebActionsDispatcher

五、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。


  • No labels