跳至主要內容

响应请求

大约 3 分钟

响应请求

FastChar 用来响应Request请求的类:FastOut

介绍

FastOut是FastChar核心类之一,用作响应Response输出

显式调用

通过FastAction提供的response系列方法,开发者可以显式调用response相关方法响应请求,如下:

public class TestAction extends FastAction {
    /**省略其他代码**/
    
    public void login() {
        responseText("登录成功!");
    }
}

请求访问到 login 方法后,方法内部响应了 content-typetext/plain 的文本内容。

警告

当方法内部显式的调用了response相关方法后,程序将立即中断方法执行。如下:

    public void login() {
        responseText("登录成功!");
        //以下代码程序不会执行
        String name=getParam("name");
    }

 



或者内嵌调用方法,如下

    public void userInfo() {
        login();
        //以下代码程序不会执行
        String userId=getParam("userId");
    }

 



方法返回内容

进入FastAction方法后,开发者可以通过方法返回值用做响应请求。如下:

public class TestAction extends FastAction {
    /**省略其他代码**/
    
    @AFastResponse(FastOut.Type.TEXT)
    public String login() {
        return "登录成功!";
    }
}

我们可以发现方法 login 多了一个注解 AFastResponse ,此注解的作用是告诉系统方法返回的内容使用 content-typetext/plain 来响应内容。

也就是类型为FastOut.Type.TEXT 对应FastOut类为 FastOutText

方法返回类型

进入FastAction方法后,开发者可以通过方法返回响应的类型用做响应请求。如下:

public class TestAction extends FastAction {
    /**省略其他代码**/
    
    public Object login() {
        return new FastOutText().setData("登录成功!");
    }
}

默认提供的响应类型

以下默认响应类型,在包 com.fastchar.out

FastOutText

  • 响应文本格式(text/plain)
  • 注解类型:FastOut.Type.TEXT
  • 显式调用示例: responseText("文本");

FastOutHtml

  • 响应网页格式(text/html)
  • 注解类型:FastOut.Type.HTML
  • 显式调用示例: responseHtml("<h1>网页内容</h1>");

FastOutJson

  • 响应Json格式(application/json)
  • 注解类型:FastOut.Type.JSON
  • 显式调用示例: responseJson("json数据");
  • 需要引用json工具包,点击查看

FastOutFile

  • 响应File文件(application/octet-stream)
  • 注解类型:FastOut.Type.FILE
  • 显式调用示例: responseFile(new File("文件路径"));

FastOutJsp

  • 响应Jsp
  • 注解类型:FastOut.Type.JSP
  • 显式调用示例: responseJsp("jsp路径");

FastOutXml

  • 响应Xml格式(text/xml)
  • 注解类型:FastOut.Type.XML
  • 显式调用示例: responseXml("<root>xml内容</root>");

FastOutFreemarker

FastOutVelocity

FastOutThymeleaf

FastOutCaptcha

  • 响应验证码图片(image/jpeg)
  • 注解类型:无
  • 显式调用示例: responseCaptcha();

FastOutParamError

  • 响应参数错误。IFastValidator验证器使用此类型响应
  • 注解类型:无
  • 显式调用示例: responseParamError("参数名", "错误信息");

FastOutStatus

  • 响应状态,例如404、500等
  • 注解类型:FastOut.Type.STATUS
  • 显式调用示例: responseStatus(404);

FastOutForward

  • 转发请求
  • 注解类型:FastOut.Type.FORWARD
  • 显式调用示例: forward("路径");

FastOutRedirect

  • 重定向请求
  • 注解类型:FastOut.Type.REDIRECT
  • 显式调用示例: redirect("路径");

自定义响应类型

如果FastChar默认的响应类型无法满足业务需求,也可以自定义响应类型,如下自定义的FastOut:

public class TestOut extends FastOut<TestOut> {
    /**
     * 响应数据
     * @param action
     */
    @Override
    public void response(FastAction action) throws Exception {
        // 变量 data 继承自 FastOut 
        action.getResponse().getWriter().write(String.valueOf(data));
    }
}

然后在FastAction使用response响应即可,如下代码:

public void test() {
    response(new TestOut().setData("登录成功!"));
}