1、Myeclipse中 新建 Dynamic Web Project  

导入jar包

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JFinalDemo</display-name>
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.demo.common.CommonConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

3、配置文件config.properties

jdbcUrl = jdbc:mysql://localhost:3306/jfinal?useUnicode=true&characterEncoding=utf-8
user = root
password =
devMode =true

4、配置jfinal启动文件

package com.demo.common;

import com.demo.common.controller.BlogController;

public class CommonConfig extends JFinalConfig {

	@Override
public void configConstant(Constants me) {
loadPropertyFile("config.properties");
me.setDevMode(getPropertyToBoolean("devMode",false));
me.setViewType(ViewType.JSP);
me.setBaseViewPath("/WEB-INF/view");
} @Override
public void configRoute(Routes me) {
me.add("/blog", BlogController.class);
me.add("/hello", HelloController.class);
} @Override
public void configPlugin(Plugins me) {
C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));
me.add(c3p0Plugin);
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
me.add(arp);
arp.addMapping("blog",Blog.class);
} @Override
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub } @Override
public void configHandler(Handlers me) {
// TODO Auto-generated method stub } /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFinal.start("WebRoot", 81, "/", 5);
} }

5、控制器

package com.demo.common.controller;

import java.util.Date;

public class BlogController extends Controller {
public void index(){
setAttr("blogs", Blog.me.find("select * from blog"));
render("index.jsp");
}
public void add(){
String dosubmit = getPara("dosbumit");
if(dosubmit==null || dosubmit.length()<=0){
render("add.jsp");
}else{
Blog blog = getModel(Blog.class,"blog");
blog.set("time", new Date());
blog.save();
index();
}
}
public void del(){
Integer id = getParaToInt(0);
if(id==null || id<=0){
renderText("数据异常");
return;
}
Boolean flag = Blog.me.deleteById(id);
if(!flag){
renderText("数据已删除");
return;
}
index();
}
public void update(){
String dosubmit = getPara("dosbumit");
if(dosubmit==null || dosubmit.length()<=0){
Integer id = getParaToInt(0);
if(id==null || id<=0){
renderText("数据异常");
return;
}
setAttr("blog", Blog.me.findById(id));
render("update.jsp");
}else{
Blog blog = getModel(Blog.class,"blog");
blog.update();
index();
}
}
}

6、模型

package com.demo.common.model;

import com.jfinal.plugin.activerecord.Model;

public class Blog extends Model<Blog> {
public final static Blog me = new Blog();
}

7、视图

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>博客列表</title>
<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head> <body>
<table class="table table-striped table-bordered">
<caption><a href="/blog/add" class="btn btn-primary">添加博客</a></caption>
<thead>
<tr>
<th>ID</th>
<th>标题</th>
<th>内容</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${blogs }" var="b">
<tr>
<td>${b.id }</td>
<td>${b.title }</td>
<td>${b.content }</td>
<td>${b.time }</td>
<td>
<a class="btn btn-primary" href="/blog/del/${b.id }">删除</a>
|
<a class="btn btn-danger" href="/blog/update/${b.id }">编辑</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>

代码:

下载

最新文章

  1. java对email邮箱的真实、有效性验证
  2. eclipse-4.4.2安装Groovy插件(其他版本eclipse可参考)
  3. WPF:如何为程序添加splashScreen(初始屏幕)
  4. C#实现数字字符串左补齐0的3种方法
  5. Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event
  6. ACPI电源管理中的S0 S1 S2 S3 S4 S5
  7. EGL接口 简单介绍
  8. 风起看云涌,叶落品人生 - Google 搜索
  9. android Animation动画的xml使用
  10. Angular 2.0 从0到1 (五)
  11. PowerEdge R430 机架式服务器安装( Ubuntu server 14.04.1 、PHP5.5.9、PHP-redis2.8、Phalcon3.1)
  12. Python排序算法——插入排序
  13. WPF---Binding学习(一)
  14. gnuradio 创建动态库 libftd3xx.so
  15. 混合编译.c/.cpp与.cu文件
  16. js 库
  17. js文件改变之后浏览器缓存问题怎么解决?
  18. JS BOM对象 History对象 Location对象
  19. Redis:主从复制
  20. 【BZOJ3280】小R的烦恼 最小费用最大流

热门文章

  1. iOS开发之-收集的不常用却实用的小方法和技巧
  2. Hbase系列-Hbase简介
  3. Openstack(Kilo)安装系列之neutron(九)
  4. JavaScript修改IE注册表
  5. 8、手把手教React Native实战之ReactJS组件生命周期
  6. Innodb间隙锁,细节讲解(转)
  7. JavaWeb中文乱码问题解决思路
  8. JZOJ.5285【NOIP2017模拟8.16】排序
  9. 【BZOJ4665】小w的喜糖 容斥+组合数
  10. i o s 崩溃日志分析