类 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 状态码- 另请参阅:
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明booleancheckAcl(HtmlControl ht, RestfulResult<Object> result) 检查访问控制列表(ACL)。booleancheckHtRunError(HtmlControl ht, RestfulResult<Object> result) 检查 HtmlControl 执行过程中是否发生错误(系统错误、异常或 SQL 错误),并设置合适的 HTTP 状态码ewaRestfulHandler(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) 核心处理函数:根据请求路径和方法处理 RESTful 请求 返回值说明: - 返回 null:表示已经直接通过 response 输出(例如二进制文件),无需再写入字符串 - 返回 JSON 字符串:由调用者通过 outContent 输出voidhandleDownload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result) 处理文件下载请求(Content-Disposition: attachment) 通过 HtmlControl 获取文件路径并将文件写入 responsevoidhandleImage(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result) 处理图片及内联展示(Content-Disposition inline),支持 resize 参数voidhandleUpload(ConfRestful conf, RequestValue rv, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, RestfulResult<Object> result) 处理上传逻辑:解析 multipart 请求并调用 Upload 组件完成文件保存voidinitUploadParameters(ConfRestful conf, RequestValue rv, RestfulResult<Object> result) 初始化上传所需的参数并进行 ACL 校验。static voidmapUploadParametersToRv(ConfRestful conf, Upload up, RequestValue rv) 将上传文件元数据映射到 RequestValue,使 Item Action SQL 可引用 @字段名, @字段名_EXT 等参数。voidoutContent(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String cnt) 输出内容到 response,封装 GZip 支持voidservice(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.ServletExceptionIOException
-
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.ServletExceptionIOException
-
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.ServletExceptionIOException
-
checkAcl
检查访问控制列表(ACL)。如果未通过则设置 result 为 401 并返回 false -
checkHtRunError
检查 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
-