- 浏览: 40086 次
- 性别:
- 来自: 南京
最新评论
文章列表
(2)加载用户定制页面的第二种方案
其实在前文(一)已经提到了,把页面、模块、布局都抽象成组件类,就如同Jsp标签一样
这种标签类负责输出每个模块的内容,当然包含了业务数据在里面,具体参考一下几个类
大家 ...
1.关于保存定制页面的说明
通过前面(一)和(二)已经介绍了定制页面的基本概念与ER模型
相信后台记录下来用户选择的布局、模块是非常简单的,比如使用jQuery脚本监听用户每次的操作,把用户添加的布局、模块插入到后台表里面即可,记录下关键的序号,以及每种布局和模块对应的html模板文件即可
2.关于加载用户定制的页面
前面提到了,每种布局、模块都对应一个html文件,但html文件不太适合输出动态页面
所以此处使用FreeMarker的ftl文件代替html文件:因为FreeMarker的理念就是
模板+数据=输出
前面提到的html文件其实就模板,使用ftl文件代替,更 ...
1.关于页面、布局和模块
都可以抽象成一个个组件,就类似于Jsp的标签类一样:用于输出特定的html内容
(1)页面:是布局和模块的容器,它不需要实现特定的业务功能
(2)布局:是模块的容器,它也不需要实现特定的业务功能
(3)模块:模块有很多种,比如“公告资讯”、“轮播广告”等。每一个模块“长成什么样子”,以及“要实现什么样的功能”,都是不同的
总结下来,得出以下结论
(1)针对页面,可以很简单,它就是一个固定的html页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
1.关于Web页面动态布局的简单声明
(1)此处介绍的动态布局类似于QQ空间或者Google首页的自定义页面
(2)每个用户可以定制自己的页面,可以自由选择布局方式,自由选择模块
2.关于布局和模块的声明
(1)布局是服务端定制的,比如左分栏布局、右分栏布局、通栏布局等
(2)模块也是服务端定制的,用户只能从这些模块中选择,比如QQ空间里面的日志模块、视频模块等
(3)布局和模块的样式可以开放给第三方开发者,但是布局和模块的功能不能开放
...
原文1:http://blog.csdn.net/huangxw000/article/details/7298781
原文2:http://www.360doc.com/content/11/0415/16/987036_109865999.shtml
Configuration cfg= new Configuration();
freemarkerCfg.setClassForTemplateLoading(this.getClass(), "/");//类路径
//cfg.setDirectoryForTemplateLo ...
终于要看看nginx和lua了
- 博客分类:
- Lua
1.Lua 工具包
http://code.google.com/p/luaforwindows/
主要包括:
Documentation
IExecutor
Lua Command Line
Lua Examples
SciTE(Lua脚本编辑器)
2.Lua学习文档(从百度文档库下载的....)
http://wenku.baidu.com/view/cbe028533c1ec5da50e270ea.html
1.MyBatis几个重要类的范围和生命周期
SqlSessionFactoryBuilder
用于创建SqlSessionFactory,创建完毕之后,就不再需要使用它。因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围 (也就是本地方法变量)。
可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例。
// 实例化builder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 使用bu ...
1.为什么要使用连接池
(1)对于开发者而言,通过JDBC获取数据连接,然后执行SQL,是很简单的事情
(2)对于JDBC Driver而言:具体到每一个数据库厂商的驱动实现
首先建立应用服务器到数据库服务器之间的连接也就是Socket Connection
接下来应用服务器和数据库服务器之间还有很多次数据交换,比如用户密码校验、权限认证等
最后数据库应用服务器要初始化连接会话句柄,记录联机日志,并为这一次连接分配进程和系统资源
也就是说:建立一次连接可能花费500毫秒,而你执行一个SQL,很可能只花费50毫秒!!!可以看出来,系统如此忙碌,如果开发者只是执行一个简单的SQL, ...
1.JDBC批处理
package com.yli.demo;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 简单批处理测试
* @author yli
*
*/
public class BatchTest {
public static void main(String[] args) {
// Test1();
Test2();
}
/**
* 非事务测试<br> ...
1.全局事务与还原点测试
package com.yli.demo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Savepoint;
/**
* 全局事务与还原点测试
*/
public class TransactionTest {
public static void main(String[] args) {
// Test1();
...
package com.yli.demo;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Statement测试[ResultSet可滚动可更新结果集]<br>
* 可滚动:对ResultSet可向前向后定位<br>
* 可更新:ResultSet数据修改后可提交至数据库
...
1.不可滚动,不可更新结果集测试
package com.yli.demo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Map;
import com.yli.dal.util.RowMapper;
/**
* [ResultSe ...
1.准备工作
1.1 MySQL建立表与初始化数据
create table es_t_shop_affiche(
afficheid int primary key,
affichetitle varchar(200)
)ENGINE=INNODB default charset utf8;
insert into es_t_shop_affiche values(10001,'admin');
insert into es_t_shop_affiche values(10001,'root');
1.2 编写创建与关闭数据库连接的工具类
...
1.实现Servlet监听器接口ServletContextListener
package com.yli.init;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.web.context.WebApplicationContext;
import com.suning.teach.servi ...
package com.yli.thread.lock;
public class SynchronizedTest {
public static final int TOTAL_AMOUNT = 100000;
public static void main(String[] args) {
Bank2 bank = new Bank2("yli", TOTAL_AMOUNT);
Bank2 targetBank = new Bank2("ylz", 0);
System.out.println(Thread ...