1.儲(chǔ)備知識(shí)
jfinal框架采用了傳統(tǒng)的MVC架構(gòu)設(shè)計(jì)行楞,來(lái)不及解釋了藕甩,快上車命爬。jfinal的Controller是線程安全的曹傀,所謂的線程安全就是在多線程訪問(wèn)時(shí),采用了加鎖機(jī)制來(lái)保護(hù)數(shù)據(jù)饲宛。這樣的做的好處是不會(huì)出現(xiàn)臟數(shù)據(jù)皆愉。
2.開始旅程
Controller中,最好保證它的純潔性,不要寫復(fù)雜的的業(yè)務(wù)邏輯代碼幕庐。當(dāng)然你要是喜歡的話久锥,那就把一大堆的業(yè)務(wù)代碼寫在Controller中,反正維護(hù)你代碼的人會(huì)一直問(wèn)候你的翔脱。Controller 其實(shí)主要負(fù)責(zé)action請(qǐng)求的分發(fā)和返回就好奴拦。
2.1 寫行代碼(醒醒腦)
在工程中新建html類型的文件,命名login.html届吁,代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登錄頁(yè)面</title>
</head>
<body>
<form action="/sinlogin/login">
<label>賬號(hào):</label><input type="text" name="user.name"> <br /><br />
<label>密碼:</label><input type="text" name="user.pwd"><br /><br />
<button type="submit">登錄</button>
</form>
</body>
</html>
頁(yè)面中有兩個(gè)input和一個(gè)button配合工作错妖。從代碼中可以看出一些細(xì)節(jié),比如action的指向疚沐,比如表單元素的name暂氯。
2.2劇情回顧(configRoute配置)
/**
* 配置路由
*/
public void configRoute(Routes me) {
//第一個(gè)參數(shù)是訪問(wèn)controller的key
//第二個(gè)參數(shù)是要映射的controller
// 第三個(gè)參數(shù)為該Controller的視圖存放路徑
// 第三個(gè)參數(shù)省略時(shí)默認(rèn)與第一個(gè)參數(shù)值相同,在此即為 "/sinlogin"路徑
me.add("/sinlogin",LoginController.class);
}
2.3主角登場(chǎng)(Controller)
public class LoginController extends Controller{
/**
*固定寫法亮蛔,配置默認(rèn)的根路由
*/
public void index(){
render("login.html");
}
/**
*login方法
*/
public void login(){
String name = getPara("user.name"); //獲取用戶名
String pwd = getPara("user.pwd"); //獲取用戶密碼
//輸出頁(yè)面上提交的信息痴施,不出意外信息輸出正常
System.out.println("該用戶的用戶名是:"+name+",密碼是:"+pwd);
}
}
2.4成雙成對(duì)(數(shù)據(jù)展示)
我們已經(jīng)學(xué)會(huì)了提交數(shù)據(jù)到后臺(tái)究流,那如果想從后臺(tái)獲取數(shù)據(jù)展示在頁(yè)面上該怎么辦么辣吃?別急,車子還沒(méi)停下來(lái)芬探,我們一起開神得。滴滴滴滴
public void index(){
//定義變量并賦值初始化
String name = "yetangtang";
String pwd = "123456";
//利用setAttr 方法將數(shù)據(jù)傳遞給view(視圖)
setAttr("name",name);
setAttr("pwd",pwd);
//渲染頁(yè)面
render("login.html");
}
接下來(lái)修改html頁(yè)面的代碼,具體如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登錄頁(yè)面</title>
</head>
<body>
<form action="/sinlogin/login">
<label>賬號(hào):</label><input type="text" name="user.name" value="${name!}"> <br /><br />
<label>密碼:</label><input type="text" name="user.pwd" value="${pwd!}"><br /><br />
<button type="submit">登錄</button>
</form>
</body>
</html>
好厲害偷仿,你已經(jīng)成功get新技能了哩簿。大神,請(qǐng)收下我的膝蓋~
3.更多方法預(yù)覽
getPara 系列方法 :獲取頁(yè)面?zhèn)鬟f參數(shù)酝静;
getModel 與 getBean 系列方法 :獲取model(實(shí)體)节榜;
setAttr 方法 :展示數(shù)據(jù)到view;
getFile 系列方法:處理文件上傳别智;
renderFile 方法:處理文件下載 宗苍;
render 系列方法 :渲染視圖并返回客戶端;
session 操作方法 :處理session對(duì)象存儲(chǔ)與管理薄榛。