org.nutz.mvc.HttpAdaptor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nutz Show documentation
Show all versions of nutz Show documentation
Nutz, which is a collections of lightweight frameworks, each of them can be used independently
package org.nutz.mvc;
import java.lang.reflect.Method;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 这是一个处理 HTTP 请求的扩展点。通过它,你可以用任何你想要的方式来为你的入口函数准备参数。 默认的,框架为你提供了三个实现:
*
* - UploadAdaptor // 处理多文件上传
*
- JsonAdaptor // 处理 Json 字节流
*
- PairAdaptor // 按传统的名值对方式处理
*
* 你可以通过注解 '@AdaptBy' 来声明你的入口函数具体将采用哪个适配器,默认的 框架将采用 PairHttpAdaptor
* 来适配参数。当然,你也可以声明你自己的适配方法
*
* 你还需要知道的是:你每一个入口函数,框架都会为你建立一个新的适配器的实例。
*
* 注意:
*
* - 如果你要写自己的实现类,这个类必须有一个public 的默认构造函数,如果你的构造函数需要参数,则必须是 String 类型的。参数的值由 注解
* '@AdaptBy.args' 来填充,它的默认值为 长度为0的空字符串数组。
*
- 适配器对于一个 URL只会有一份实例。
*
- 容器假定你的适配器不会占有什么不可释放的资源,必要的时候,它会允许垃圾回收器回收你的适配器实例
*
*
* @author zozoh([email protected])
*
* @see org.nutz.mvc.annotation.AdaptBy
*/
public interface HttpAdaptor {
/**
* 这个函数将在你的适配器生命周期内,这个函数将只被调用一次。它用来告诉你的适配器,你需要适配什么方法。
*
* @param method
* 你需要适配的方法
*/
void init(Method method);
/**
* 你的适配器需要根据传入的 request 和 response 生成函数的调用参数
*
* @param sc
* Servlet 上下文对象
* @param req
* 请求对象
* @param resp
* 响应对象
* @param pathArgs
* 字符串数组,路径参数。详情请参看 路径参数
*
* @return 调用参数数组
*
*/
Object[] adapt( ServletContext sc,
HttpServletRequest req,
HttpServletResponse resp,
String[] pathArgs);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy