类 ServletRestful

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
com.gdxsoft.easyweb.script.servlets.ServletRestful
所有已实现的接口:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class ServletRestful extends javax.servlet.http.HttpServlet
ServletRestful

提供基于配置的 RESTful API 入口,统一处理 GET/POST/PUT/PATCH/DELETE 等方法。 具体的行为由 ConfRestful 配置文件定义,并通过 HtmlControl 执行相应的操作。

主要职责: - 解析请求(包括 multipart 上传) - 根据请求路径和方法查找 ConfRestful - 根据 ConfRestful 执行对应逻辑(上传/下载/图片/数据操作) - 封装统一的 JSON 响应格式(RestfulResult)并设置 HTTP 状态码
另请参阅:
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    boolean
    检查访问控制列表(ACL)。
    boolean
    检查 HtmlControl 执行过程中是否发生错误(系统错误、异常或 SQL 错误),并设置合适的 HTTP 状态码
    ewaRestfulHandler(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    核心处理函数:根据请求路径和方法处理 RESTful 请求 返回值说明: - 返回 null:表示已经直接通过 response 输出(例如二进制文件),无需再写入字符串 - 返回 JSON 字符串:由调用者通过 outContent 输出
    void
    handleDownload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
    处理文件下载请求(Content-Disposition: attachment) 通过 HtmlControl 获取文件路径并将文件写入 response
    void
    handleImage(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
    处理图片及内联展示(Content-Disposition inline),支持 resize 参数
    void
    handleUpload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
    处理上传逻辑:解析 multipart 请求并调用 Upload 组件完成文件保存
    void
    初始化上传所需的参数并进行 ACL 校验。
    static void
    将上传文件元数据映射到 RequestValue,使 Item Action SQL 可引用 @字段名, @字段名_EXT 等参数。
    void
    outContent(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String cnt)
    输出内容到 response,封装 GZip 支持
    void
    service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
    重写 service 方法,统一捕获异常并返回 500 错误 1.

    从类继承的方法 javax.servlet.http.HttpServlet

    doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service

    从类继承的方法 javax.servlet.GenericServlet

    destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
  • 构造器详细资料

    • ServletRestful

      public ServletRestful()
  • 方法详细资料

    • service

      public void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, IOException
      重写 service 方法,统一捕获异常并返回 500 错误 1. 调用 ewaRestfulHandler 处理请求 2. 使用 outContent 输出结果(支持 GZip)
      覆盖:
      service 在类中 javax.servlet.http.HttpServlet
      抛出:
      javax.servlet.ServletException
      IOException
    • outContent

      public void outContent(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String cnt) throws javax.servlet.ServletException, IOException
      输出内容到 response,封装 GZip 支持
      抛出:
      javax.servlet.ServletException
      IOException
    • ewaRestfulHandler

      public String ewaRestfulHandler(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException
      核心处理函数:根据请求路径和方法处理 RESTful 请求 返回值说明: - 返回 null:表示已经直接通过 response 输出(例如二进制文件),无需再写入字符串 - 返回 JSON 字符串:由调用者通过 outContent 输出
      抛出:
      javax.servlet.ServletException
      IOException
    • checkAcl

      public boolean checkAcl(HtmlControl ht, RestfulResult<Object> result)
      检查访问控制列表(ACL)。如果未通过则设置 result 为 401 并返回 false
    • checkHtRunError

      public boolean checkHtRunError(HtmlControl ht, RestfulResult<Object> result)
      检查 HtmlControl 执行过程中是否发生错误(系统错误、异常或 SQL 错误),并设置合适的 HTTP 状态码
    • handleDownload

      public void handleDownload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
      处理文件下载请求(Content-Disposition: attachment) 通过 HtmlControl 获取文件路径并将文件写入 response
    • handleImage

      public void handleImage(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
      处理图片及内联展示(Content-Disposition inline),支持 resize 参数
    • initUploadParameters

      public void initUploadParameters(ConfRestful conf, RequestValue rv, RestfulResult<Object> result) throws Exception
      初始化上传所需的参数并进行 ACL 校验。 直接从 UserConfig 加载 ACL 类进行轻量校验,不创建 HtmlControl, 避免与后续 handleConf 重复执行重量级的 HtmlCreator.init()。
      抛出:
      Exception
    • handleUpload

      public void handleUpload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result)
      处理上传逻辑:解析 multipart 请求并调用 Upload 组件完成文件保存
    • mapUploadParametersToRv

      public static void mapUploadParametersToRv(ConfRestful conf, Upload up, RequestValue rv) throws Exception
      将上传文件元数据映射到 RequestValue,使 Item Action SQL 可引用 @字段名, @字段名_EXT 等参数。 参照 ActionFrame.createUploadPara() 的逻辑。
      参数:
      conf - RESTful 配置
      up - 已完成 upload() 的 Upload 实例
      rv - 请求参数对象
      抛出:
      Exception