Jboot,专为大型分布式项目和微服务而生。 github 主页 参考文档 请参考JFinal的文档
-
1.新建maven项目
-
2 添加jboot依赖
io.jboot jboot 1.6.3刷新依赖 mvn clean install
-
3 查看参考文档 编码
- 在Jboot应用中,所有的控制器都应该继承至JbootController
- 在 Controller 之中定义的 public 方法称为 Action。Action 是请求的最小单位。 Action 方法 必须在 Controller 中定义,且必须是 public 可见性。 每个Action对应一个URL地址的映射
- getModel 用来接收页面表单域传递过来的 model 对象
渲染器,负责把内容输出到浏览器,在Controller中,提供了如下一些列render方法 -- 视图
render(”test.html”) 渲染名为 test.html 的视图,该视图的全路径为”/path/test.html”
renderTemplate(”test.html”) 渲染名为 test.html 的视图,该视图的全路径为”/other_path/test.html”,
即当参数以”/”开头时将采用绝对路径。
renderFreeMarker(”test.html”) 渲 染 名 为 test.html 的视图 , 且 视图类型为FreeMarker。
renderJsp(”test.jsp”) 渲染名为 test.jsp 的视图,且视图类型为 Jsp。
renderVelocity(“test.html”) 渲染名为 test.html 的视图,且视图类型为 Velocity。
-- json
renderJson() 将所有通过 Controller.setAttr(String, Object)设置的变量转换成 json 数据并渲染。
renderJson(“users”, userList) 以”users”为根,仅将 userList 中的数据转换成 json数据并渲染。
renderJson(user) 将 user 对象转换成 json 数据并渲染。
renderJson(“{\”age\”:18}” ) 直接渲染 json 字符串。
renderJson(new String[]{“user”, “blog”}) 仅将 setAttr(“user”, user)与 setAttr(“blog”, blog)设置的属性转换成 json 并渲染。使用 setAttr 设置的其它属性并不转换为 json。
-- 其他
renderFile(“test.zip”); 渲染名为 test.zip 的文件,一般用于文件下载
renderText(“Hello Jboot”) 渲染纯文本内容”Hello Jboot”。
renderHtml(“Hello Html”) 渲染 Html 内容”Hello Html”。
renderError (404 , “test.html”) 渲染名为 test.html 的文件,且状态为 404。
renderError (500 , “test.html”) 渲染名为 test.html 的文件,且状态为 500。
renderNull() 不渲染,即不向客户端返回数据。
render(new MyRender()) 使用自定义渲染器 MyRender 来渲染。
-- session 与 分布式session
在Jboot的设计中,分布式的session是依赖分布式缓存的,jboot中,分布式缓存提供了3种方式
所以,在使用jboot的分布式session之前,需要在jboot.properties配置上jboot分布式的缓存。
例如:
jboot.cache.type=redis
jboot.cache.redis.host = 127.0.0.1
jboot.cache.redis.password = 123456
jboot.cache.redis.database = 1
配置好缓存后,直接在Controller里调用getSessionAttr(key) 或 setSessionAttr(key,value) 即可。
- 在Jboot中,默认提供了4个注解进行流量管控。4个注解代表着四个不同的流量管控方案,他们分别是
指令 描述
EnableConcurrencyLimit 限制当前Action的并发量
EnablePerIpLimit 限制每个IP的每秒访问量
EnablePerUserLimit 限制每个用户的访问量
EnableRequestLimit 限制总体每秒钟可以通过的访问量
- 使用示例:
@RequestMapping("/limitation")
public class LimitationDemo extends JbootController {
public static void main(String[] args) {
Jboot.setBootArg("jboot.limitation.webPath","/limitation/view");
Jboot.run(args);
}
@EnableRequestLimit(rate = 1)//所有的请求,每1秒钟只能访问一次
@EnableConcurrencyLimit(rate = 1)//所有的请求,并发量为1个
@EnablePerIpLimit(rate = 0.2)//每个IP地址,每5秒钟只能访问一次
//所有的请求,每1秒钟只能访问一次;被限制的请求,自动跳转到 /limitation/request2
@EnableRequestLimit(rate = 1, renderType = LimitRenderType.REDIRECT, renderContent = "/limitation/request2")
@EnablePerUserLimit(rate = 0.2, renderType = LimitRenderType.TEXT, renderContent = "被限制啦")//每个用户,每5秒钟只能访问一次
public void request() {
renderText("request() render ok");
}
- 使用Jboot在线流量管理,首先配置上流量管理的URL地址,例如:
jboot.limitation.webPath = /jboot/limitation
在使用websocket之前,需要在jboot.properties文件上配置启动websocket,例如:
jboot.web.websocketEnable = true
jboot.web.websocketBufferPoolSize = 100 #默認值
--shiro 配置
在Jboot中使用shiro非常简单,只需要在resources目录下配置上您的shiro.ini文件即可。在shiro.ini文件里,需要在自行扩展realm等信息。
參考: ShiroController
在客户端使用JWT的场景一般是用于非浏览器的第三方进行认证,例如:APP客户端,前后端分离的AJAX请求等。
例如,在登录后,服务器Server会通过 setJwtAttr() 设置上用户数据,
客户端可以去获取 HTTP 响应头中的 Jwt,就可以获取 服务器渲染的 Jwt 信息,
此时,应该把 Jwt 的信息保存下来,比如保存到 cookie 或 保存在storage等,
在客户每次请求服务器 API 的时候,应该把 Jwt 设置在请求的 http 头中的 Jwt(注意,第一个字母大写),
服务器就可以获取到具体是哪个 “用户” 进行请求了。
关于JWT的方法:
方法调用 描述
setJwtAttr() 设置 jwt 的 key 和 value
setJwtMap() 把整个 map的key和value 设置到 jwt
getJwtAttr() 获取 已经设置进去的 jwt 信息
getJwtAttrs() 获取 所有已经设置进去的 jwt 信息
getJwtPara() 获取客户端传进来的 jwt 信息,若 jwt 超时或者不被信任,那么获取到的内容为null
參考 JWTController