注意:本文所用play版本的为2.2.X
*play框架导包用的是sbt,类似于java的maven,sbt是管理scala jar包的工具,在build.sbt中配置,而如果需要添加一些插件的话则一般在plugin.sbt中添加。build.sbt中添加jar包的方式和maven类似,添加顺序为:组,名称和版本,分别用“”引起来,中间加上%,比如添加mongodb驱动jar包
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache
)
在括号末尾添加上 "org.mongodb" % "mongo-java-driver" % "3.2.2",注意:cache后面要加逗号。
*超链接跳转<a href='@(Constant.ex_name + "/toOrder/"+driver.get("Ucode"))'>立即预约</a>
图片<img src="@routes.Assets.at("images/fast/close.png")" οnclick="hidepic();"/>
*play中Cache,session,flash区别,Cache是全局存在,key要求唯一;session和Java里的session差不多,写法更简洁(具体用法参考官网:https://www.playframework.com/documentation/2.2.x/ScalaSessionFlash),
*play2生成验证码图片
http://stackoverflow.com/questions/18550107/how-to-use-captcha-in-play-framework-2-1-3
1.Download Kaptcha which is an opensource captcha package.Put it in the lib folder.
2.Implement a captcha method in Application.java.
public static Result captcha(){
DefaultKaptcha captchaPro=new DefaultKaptcha();
captchaPro.setConfig(new Config(new Properties()));
String text=captchaPro.createText();
Logger.debug("Captcha:"+text);//U can put the text in cache.
BufferedImage img=captchaPro.createImage(text);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try{
ImageIO.write(img, "jpg", baos);
baos.flush();
}catch(IOException e){
Logger.debug(e.getMessage());
}
return ok(baos.toByteArray()).as("image/jpg");
}
3.
Add the route to the
routes
file. Access http://[yourhost]:[port]/captcha .
GET /captcha controllers.Application.captcha
*// 获取存放二维码地址 String upload_user_channel = Play.application().configuration().getString("upload_user_channel");
*mongo查询添加正则表达式条件
Pattern pattern = Pattern.compile("^" + s + ".*$", Pattern.CASE_INSENSITIVE);
DBObject ref = new BasicDBObject(srcType, pattern);
flag的取值范围如下: Pattern.CANON_EQ 当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a\u030A"会匹配"?"。默认情况下,不考虑"规 范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹 配,只要将UNICODE_CASE与这个标志合起来就行了。
Pattern.COMMENTS 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。
Pattern.DOTALL 在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式'.'不匹配行的结束符。
Pattern.MULTILINE 在这种模式下,'^'和'$'分别匹配一行的开始和结束。此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。
Pattern.UNICODE_CASE 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。
Pattern.UNIX_LINES 在这个模式下,只有'\n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。
*play框架页面不能使用@else if如果要达到类似else if的效果,只能装换成
@else{
@if(){
}
}
除此之外使用else不需要加@
*scala和java一样都存在关键字,取名字最好不要取单个词语的名字,因为很可能取的就是关键字。
*后台获取表单数据
DynamicForm requestData = Form.form().bindFromRequest();
String name = requestData.get("name");
String phone = requestData.get("phone");
String address = requestData.get("address");
*后台封装数据
/*public static List<Map<String, Object>> getNearbyDriverList() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
ObjectNode json = Json.newObject();
json.put("name", "****");
json.put("pic", "http://www.baidu.com/");
json.put("xinji", 3);
list.add(JsonUtils.jsonToMap(json3));
return list;
}*/