02:[后台框架] 请求的处理和Action的使用
2019-07-22 本文已影响0人
M_SRC
这篇讲讲Action, Action是接收并返回数据的请求, 它可以自动填充请求参数, 过滤请求.
首先, 你可以先从git上下载该项目
Git地址:https://github.com/huhuanan/m
创建Action类
action类内容如下:
//Action注释, 该类所在的包需要配置到config/mconfig.properties文件中
@ActionMeta(name="testRequestTest",title="请求测试",description="最基础的Action测试, 继承m.common.action.Action")
public class RequestTestAction extends Action {
//定义Action接收参数, 并生成get,set方法.
private String name;
private Date date;
private Map<String,String> params;
@DocumentMeta(//接口注释, 有接口注释的方法会在后台的开发指南的接口中显示, 方便测试
method=@DocumentMethodMeta(title="测试API",description="一个简单的接口测试",permission=false,
result="返回json串"),//result返回结构示例,自行编写
params={
@DocumentParamMeta(name="name",description="名字",type=FieldType.STRING,length=20,notnull=true)
}
)
public JSONMessage testMethod(){//Action可访问的方法没有参数, 返回类型最常用的是JSONMessage
JSONMessage result=new JSONMessage();//框架自写的一个用于返回前台数据的json
try {
result.push("name", "接收到的name:"+name);
result.push("code", 0);
result.push("msg", "测试成功");
} catch (Exception e) {
result.push("code", 1);
result.push("msg", e.getMessage());
}
return result;
}
.....get, set 方法
- action的访问是以action/开头的, http://127.0.0.1/action/
action注解的name
/无参的方法名
, 例如, http://127.0.0.1/action/testRequestTest/testMethod
注: 我部署项目的时候都是修改tomcat的 conf/server.xml, 所以访问是没有项目名
在<Host ...>
标签块内增加以下代码
<Context path="" docBase="D:/Workspaces/m/web" debug="0" reloadable="false"></Context>
- action的方法执行前, 会过滤该url, 不允许访问时返回空, 配置文件 config/urlmarker.xml
- 首先按照
<authorization>
的配置, 如果符合配置, 则不进行下面的过滤, 但需要在Action中判断权限, 该设置适合app调用. - 判断请求开始是否已配置到
<redirect>
和<enable>
, /action/默认已加入<enable>
中, 所以无需配置. - 判断 主机地址和Request Header的Referer属性是否一致,
- 过滤Request Header的Referer属性, 除了配置的, 默认允许127.0.0.1
启动项目
打开项目地址http://127.0.0.1/admin
默认用户名密码 admin 123456
进入开发指南的Action接口
点该接口的测试按钮
也可查看控制台打印的信息
这样一个简单的action接口就创建完成了.
除了以/action/开始的的请求, 还有以/page/开始的请求, 对应classes/page目录,
jsp页面不用写后缀,action也可以返回jsp页面 (现在已经过时了, 如果是需要使用后台数据的动态页面, 可以使用,)
除了jsp页面, 其他的内容都可以通过/page/开头访问.
访问路径: http://127.0.0.1/page/test.html
请求和action就讲这些了, 其他使用方式需要在以后的实例中说明, 如果有什么问题或者bug, 可以简信我.