百度推广需要备案的网站吗,html代码查看,电子商务查询网站,怎么用记事本做网站在 Solon Mvc 里#xff0c;Mapping 注解一般是配合 Controller 和 Remoting#xff0c;作请求路径映射用的。且#xff0c;只支持加在 public 函数 或 类上。
1、注解属性
属性说明备注value路径与 path 互为别名path路径与 value 互为别名method请求方式限定(defall)可用…在 Solon Mvc 里Mapping 注解一般是配合 Controller 和 Remoting作请求路径映射用的。且只支持加在 public 函数 或 类上。
1、注解属性
属性说明备注value路径与 path 互为别名path路径与 value 互为别名method请求方式限定(defall)可用 Post、Get 等注解替代此属性consumes指定处理请求的提交内容类型可用 Consumes 注解替代此属性produces指定返回的内容类型可用 Produces 注解替代此属性multipart申明支持多分片请求(deffalse)如果为false则自动识别
当 methodall即不限定请求方式
2、支持的路径映射表达式
符号说明示例**任意字符、不限段数** 或 /user/***任意字符/user/*?可有可无/user/?/路径片段开始符和间隔符/ 或 /user{name}路径变量申明/user/{name}
路径组合控制器映射与动作映射及应用示例
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;Mapping(/user) //或 user开头自动会补/
Controller
public void DemoController{Mapping() ///userpublic void home(){ }Mapping(/) ///user/与上面是有区别的注意下。public void home2(){ }Mapping(/?) ///user/ 或者 /user与上面是有区别的注意下。public void home3(){ }Mapping(list) ///user/list 间隔自动会补/public void getList(){ }Mapping(/{id}) ///user/{id}public void getOne(long id){ }Mapping(/ajax/**) ///user/ajax/**public void ajax(){ }
}提醒一个 Mapping 函数不支持多个路径的映射
3、参数注入
非请求参数的可注入对象
类型说明Context请求上下文org.noear.solon.core.handle.ContextLocale请求的地域信息国际化时需要ModelAndView模型与视图对象org.noear.solon.core.handle.ModelAndView
支持请求参数自动转换注入
当变量名有对应的请求参数时即有名字可对上的请求参数 会直接尝试对请求参数值进行类型转换 当变量名没有对应的请求参数时 当变量为实体时会尝试所有请求参数做为属性注入否则注入 null
支持多种形式的请求参数直接注入
queryStringform-datax-www-form-urlencodedpathjson body
其中 queryString, form-data, x-www-form-urlencoded, path 参数支持 ctx.param() 接口统一获取。
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.ModelAndView;
import org.noear.solon.core.handle.UploadedFile;
import java.util.Locale;Mapping(/user)
Controller
public void DemoController{//非请求参数的可注入对象Mapping(case1)public void case1(Context ctx, Locale locale , ModelAndView mv){ }//请求参数可以是散装的支持 queryString, formjson或支持的其它序列化格式Mapping(case2)public void case2(String userName, String nickName, long[] ids, ListString names){ }//请求参数可以是整装的结构体支持 queryString, formjson或支持的其它序列化格式MappingMapping(case3)public void case3(UserModel user){ }//也可以是混搭的Mapping(case4)public void case4(Context ctx, UserModel user, String userName){ }//文件上传 //注意与 input typefile namefile1 / 名字对上Mapping(case5)public void case5(UploadedFile file1, UploadedFile file2){ } //同名多文件上传Mapping(case6)public void case6(UploadedFile[] file){ }
}提醒 ?user[name]1ip[0]aip[1]border.id1 风格的参数注入需要引入插件solon-serialization-properties
4、带注解的参数注入
注解
注解说明Param注入请求参数包括query-string、form。起到指定名字、默认值等作用Header注入请求 headerCookie注入请求 cookiePath注入请求 path 变量因为框架会自动处理所以这个只是标识下方便文档生成用Body注入请求体一般会自动处理。仅在主体的 String, InputSteam, Map 时才需要
注解相关属性:
属性说明适用注解value参数名字Param, Header, Cookie, Pathname参数名字与 value 互为别名Param, Header, Cookie, Pathrequired必须的Param, Header, Cookie, BodydefaultValue默认值Param, Header, Cookie, Body
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.annotation.Header;
import org.noear.solon.annotation.Body;
import org.noear.solon.annotation.Path;Mapping(/user)
Controller
public void DemoController{Mapping(case1)public void case1(Body String bodyStr){ }Mapping(case2)public void case2(Body MapString,String paramMap, Header(Token) String token){ }Mapping(case3)public void case3(Body InputStream stream, Cookie(Token) token){ }//这个用例加不加 Body 效果一样Mapping(case4)public void case4(Body UserModel user){ } Mapping(case5/{id})public void case5(String id){ }//如果名字不同才有必要用 Path //否则是自动处理如上Mapping(case5_2/{id})public void case5_2(Path(id) String name){ } Mapping(case6)public void case6(String name){ }//如果名字不同才有必要用 Param //否则是自动处理如上Mapping(case6_2)public void case6_2(Param(id) String name){ } //如果要默认值才有必要用 ParamMapping(case6_3)public void case6_3(Param(defaultValueworld) String name){ }Mapping(case7)public void case7(Header String token){ }Mapping(case7_2)public void case7_2(Header String[] user){ } //v2.4.0 后支持
}5、请求方式限定
可以1个或多个加个 Mppaing 注解上用于限定请求方式不限则支持全部请求方式
请求方式限定注解说明Get限定为 Http Get 请求方式Post限定为 Http Post 请求方式Put限定为 Http Put 请求方式Delete限定为 Http Delete 请求方式Patch限定为 Http Patch 请求方式Head限定为 Http Head 请求方式Options限定为 Http Options 请求方式Trace限定为 Http Trace 请求方式Http限定为 Http 所有请求方式Message限定为 Message 请求方式To标注转发目标WebSokcet限定为 WebSokcet 请求方式Sokcet限定为 Sokcet 请求方式All允许所有请求方式默认
其它限定注解说明Produces申明输出内容类型Consumes申明输入内容类型当输出内容类型未包函 Consumes则响应为 415 状态码Multipart显式申明支持 Multipart 输入
例
import org.noear.solon.boot.web.MimeType;Mapping(/user)
Controller
public void DemoController{GetMapping(case1)public void case1(Context ctx, Locale locale , ModelAndView mv){ }//也可以直接使用 Mapping 的属性进行限定。。。但是没使用注解的好看Mapping(path case1_2, method MethodType.GET)public void case1_2(Context ctx, Locale locale , ModelAndView mv){ }PutMessageMapping(case2)public void case2(String userName, String nickName){ }//如果没有输出申明侧 string 输出默认为 text/plainProduces(MimeType.APPLICATION_JSON_VALUE)Mapping(case3)public String case3(){return {code:1};}也可以直接使用 Mapping 的属性进行限定。。。但是没使用注解的好看Mapping(path case3_2, producesMimeType.APPLICATION_JSON_VALUE))public String case3_2(){return {code:1};}//如果没有输出申明侧 object 输出默认为 application/jsonMapping(case3_3)public User case3_3(){return new User();}}6、输出类型
Mapping(/user)
Controller
public void DemoController{//输出视图与模型经后端渲染后输出最终格式Maping(case1)public ModelAndView case1(){ModelAndView mv new ModelAndView();mv.put(name, world);mv.view(hello.ftl);return mv;}//输出结构体默认会采用josn格式渲染后输出Maping(case2)public UserModel case2(){return new UserModel();}//输出下载文件Maping(case3)public Object case3(){return new File(...); //或者 return new DownloadedFile(...);}
}7、父类继承支持
Mapping(user)
public void UserController extends CrudControllerBaseUser{}public class CrudControllerBaseT{PostMapping(add)public void add(T t){...}DeleteMapping(remove)public void remove(T t){...}
}