use of org.nutz.mvc.annotation.At in project nutzboot by nutzam.
the class UserModule method login.
@Ok("json")
@Fail("http:500")
@POST
@At("/login")
public boolean login(@Param("username") String username, @Param("password") String password, HttpSession session) {
User user = dao.fetch(User.class, username);
if (user == null)
return false;
Sha256Hash hash = new Sha256Hash(password, user.getSalt());
if (!hash.toHex().equals(user.getPassword())) {
return false;
}
Subject subject = SecurityUtils.getSubject();
subject.login(new SimpleShiroToken(user.getId()));
return true;
}
use of org.nutz.mvc.annotation.At in project nutzboot by nutzam.
the class MainLauncher method index.
@At({ "/", "/index" })
@Ok("vm:/index.vm")
public NutMap index() {
NutMap obj = new NutMap();
obj.setv("name", "牛牪犇").setv("age", 18);
return obj;
}
use of org.nutz.mvc.annotation.At in project nutzcloud by nutzam.
the class UserModule method apitest.
/**
* 这是演示api调用的入口,会顺序调用一堆请求,请关注日志
*/
@Ok("raw")
@At
public String apitest() {
List<User> users = userService.list();
log.info("users=" + Json.toJson(users));
User haoqoo = userService.add("haoqoo", 19);
User wendal = userService.add("wendal", 28);
users = userService.list();
log.info("users=" + Json.toJson(users));
userService.delete(haoqoo.getId());
userService.delete(wendal.getId());
users = userService.list();
log.info("users=" + Json.toJson(users));
return "done";
}
use of org.nutz.mvc.annotation.At in project nutzcloud by nutzam.
the class UserModule method benchmark.
@Ok("raw")
@At
public String benchmark() {
// 先确保service能访问
userService.ping();
String NL = "\r\n";
StringBuilder sb = new StringBuilder();
sb.append("预热1k次").append(NL);
Stopwatch sw = Stopwatch.begin();
for (int i = 0; i < 1000; i++) {
userService.ping();
}
sw.stop();
sb.append("预热耗时: ").append(sw.toString()).append(NL);
sb.append("单个请求平均耗时: ").append(sw.getDuration() / 1000.0).append(NL);
sb.append("QPS: ").append((int) (1000.0 / sw.getDuration() * 1000)).append(NL);
sb.append("-----------------------").append(NL);
sw = Stopwatch.begin();
benchmark(10, 10000);
sw.stop();
sb.append("10线程执行1w次,耗时: ").append(sw.toString()).append(NL);
sb.append("单个请求平均耗时: ").append(sw.getDuration() / 10000.0).append(NL);
sb.append("QPS: ").append((int) (10000.0 / sw.getDuration() * 1000)).append(NL);
sb.append("-----------------------").append(NL);
sw = Stopwatch.begin();
benchmark(25, 10000);
sw.stop();
sb.append("25线程执行1w次,耗时: ").append(sw.toString()).append(NL);
sb.append("单个请求平均耗时: ").append(sw.getDuration() / 10000.0).append(NL);
sb.append("QPS: ").append((int) (10000.0 / sw.getDuration() * 1000)).append(NL);
sb.append("-----------------------").append(NL);
sw = Stopwatch.begin();
benchmark(100, 20000);
sw.stop();
sb.append("100线程执行1w次,耗时: ").append(sw.toString()).append(NL);
sb.append("单个请求平均耗时: ").append(sw.getDuration() / 20000.0).append(NL);
sb.append("QPS: ").append((int) (20000.0 / sw.getDuration() * 1000)).append(NL);
sb.append("-----------------------").append(NL);
sw = Stopwatch.begin();
benchmark(200, 20000);
sw.stop();
sb.append("200线程执行2w次,耗时: ").append(sw.toString()).append(NL);
sb.append("单个请求平均耗时: ").append(sw.getDuration() / 20000.0).append(NL);
sb.append("QPS: ").append((int) (20000.0 / sw.getDuration() * 1000)).append(NL);
return sb.toString();
}
Aggregations