Play Framework 2.8.2 学习系列二------ Web基本应用
采用的是前后端分开开发的方式进行的,但是在登录等特殊地方也是要做一些交互动作
1、从html页面访问action。
Form中的action属性可以这样设置,action="@pc.routes.LoginController.loginSys()",其中pc是controller目录下的一个子目录,他的包名为package controllers.pc。要求form的action路由至controllers.pc目录下的LoginController的loginSys,指向很明确。
2、CSRF设定。在配置中启用了CSRF功能,所以在每次的请求中需要添加一个csrfToken参数。在html页面的body中添加:
运行后会自动生成一个csrfToken的隐藏区域,只要获取这个token并且在每次的请求中添加进去就可以在csrf过滤器开启的情况下实现get以外的请求
3、html解析。如果有后端的html代码需要推送到前端显示,正常情况下都会被浏览器解析而不再是正常的html代码。如何解决这个问题呢->@Html(htmlStr),即可展现原生的html信息
4、访问静态资源。指定一个img可采用这样的方式<img src='@routes.Assets.versioned("images/files/test.png")'/>,但是同时在css中需要添加html页面生成的地址信息,比如background:url(/assets/images/files/test.png) no-repeat #fff; 当前之前的img也可以这样添加目录。添加js库的引用均需如此。在此之前需要在routes中配置静态资源路径“GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)“
5、获取js提交的post数据。对于一个control里面的action获取js数据如果通过form提交可以通过DynamicForm获取。如果通过ajax的httprequest可以通过request.queryString("userName")获取。如果是json数据可以直接request.body().asJson()获取
6、登录控制。在登录时可以通过addingToSession(request,"userName", userName)这样的方式添加,在注销的时候用withNewSession()销毁。在用户存活期间可以在想要验证的时候获取req.session().get("userName"),以验证登录合法性。