@(编程)
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。 在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)
JFinal有如下主要特点:
- MVC架构,设计精巧,使用简单
- 遵循COC原则,零配置,无xml
- 独创Db + Record模式,灵活便利
- ActiveRecord支持,使数据库开发极致快速
- 自动加载修改后的java文件,开发过程中无需重启web server
- AOP支持,拦截器配置灵活,功能强大
- Plugin体系结构,扩展性强
- 多视图支持,支持FreeMarker、JSP、Velocity
- 强大的Validator后端校验功能
- 功能齐全,拥有struts2的绝大部分功能
- 体积小仅248K,且无第三方依赖
Controller
Controller 是 JFinal 核心类之一, 该类作为 MVC 模式中的控制器。 基于 JFinal 的 Web 应
用的控制器需要继承该类。 Controller 是定义 Action 方法的地点,是组织 Action 的一种方式,
一个 Controller 可以包含多个 Action。 Controller 是线程安全的。
Action
Controller 以及在其中定义的 public 无参方法称为一个 Action。 Action 是请求的最小单位。
Action 方法必须在 Controller 中声明,该方法必须是 public 可见性且没有形参。
public class HelloController extends Controller {
public void index() {
renderText("此方法是一个action");
}
public void test() {
renderText("此方法是一个action");
}
}
以上代码中定义了两个 Action: HelloController.index()、 HelloController.test()。 在 Controller
中提供了 getPara、 getModel 系列方法 setAttr 方法以及 render 系列方法供 Action 使用。
getPara 系列方法
Controller提供了 getPara系列方法用来从请求中获取参数。getPara系列方法分为两种类型。
第 一 种 类 型 为 第 一 个 形 参 为 String 的 getPara 系 列 方 法 。 该 系 列 方 法 是 对
HttpServletRequest.getParameter(String name) 的 封 装 , 这 类 方 法 都 是 转 调 了
HttpServletRequest.getParameter(String name)。 第二种类型为第一个形参为 int 或无形参的
getPara 系列方法。 该系列方法是去获取 urlPara 中所带的参数值。 getParaMap 与 getParaNames
分别对应 HttpServletRequest 的 getParameterMap 与 getParameterNames。
服务器端代码
public void ajaxTest() {
this.renderJson("my name is keke");
}
前端代码
<html>
<head>
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/blog/ajaxTest", true);
xmlhttp.send();
}
</script>
</head>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">请求数据</button>
<div id="myDiv"></div>
</body>
</html>
服务器端代码
public void gethint() {
String para = this.getPara("q");
if ("1".equals(para)) {
this.renderJson("my name is keke");
} else {
this.renderJson("you are not keke");
}
}
前端代码
<html>
<head>
<script type="text/javascript">
function showHint(str) {
var xmlhttp;
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/blog/gethint?q=" + str, true);
xmlhttp.send();
}
</script>
</head>
<body>
<h3>请在下面的输入框中键入字母(A - Z):</h3>
<form action="">
姓氏:<input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>
建议:<span id="txtHint"></span>
</p>
</body>
</html>
服务器端代码
public void ajaxTest() {
this.renderJson("my name is keke");
}
前端代码
<!DOCTYPE html>
<html>
<head>
<script src="/js/jquery-1.4.4.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.get("/blog/ajaxTest",function(data,status){
alert(data);
});
});
});
</script>
</head>
<body>
<button>向页面发送 HTTP GET 请求,然后获得返回的结果</button>
</body>
</html>