jeecms笔记阅读源码.docx
- 文档编号:4279553
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:34
- 大小:38.61KB
jeecms笔记阅读源码.docx
《jeecms笔记阅读源码.docx》由会员分享,可在线阅读,更多相关《jeecms笔记阅读源码.docx(34页珍藏版)》请在冰豆网上搜索。
jeecms笔记阅读源码
解读Jeecms源码
JeecmsStudy
Author:
leafageQ:
317856394makefriendlovely
安装
您还没有安装JEECMS,3秒钟之后自动跳转到安装页面。
如果您的浏览器长时间没有反应,请直接点击
install/index.html:
一般是同意安装页
functionformSubmit(){
if(document.getElementById('license_agree').checked==false){
alert('请同意我们的协议');
returnfalse;
}
document.getElementById('license_form').submit();
}
进入安装数据库和参数页:
安装:
<%@pagecontentType="text/html;charset=gbk"language="java"import="com.jeecms.core.util.*,java.util.*"%>
<%
StringdbFileName="/install/db/jeecms-db-2.4.2-final.sql";
StringinitFileName="/install/db/jeecms-init-2.4.2-final.sql";
//创建数据库
if("true".equals(isCreateDb)){
Install.createDb(dbHost,dbPort,dbName,dbUser,dbPassword);
}else{
Install.changeDbCharset(dbHost,dbPort,dbName,dbUser,dbPassword);
}
//创建表
if("true".equals(isCreateTable)){
StringsqlPath=application.getRealPath(dbFileName);
List
Install.createTable(dbHost,dbPort,dbName,dbUser,dbPassword,
sqlList);
}
//初始化数据
if("true".equals(isInitData)){
StringinitPath=application.getRealPath(initFileName);
List
Install.createTable(dbHost,dbPort,dbName,dbUser,dbPassword,
initList);
}
//更新配置
Install.updateConfig(dbHost,dbPort,dbName,dbUser,dbPassword,
domain,cxtPath,port);
//处理数据库配置文件
StringdbXmlPath=application.getRealPath(dbXmlFileName);
Install
.dbXml(dbXmlPath,dbHost,dbPort,dbName,dbUser,
dbPassword);
//处理web.xml
StringwebXmlFromPath=application.getRealPath(webXmlFrom);
StringwebXmlToPath=application.getRealPath(webXmlTo);
Install.webXml(webXmlFromPath,webXmlToPath);
//在Util里面
/**
*安装类
*
*@authorliufang
*
*/
publicclassInstall{
publicstaticvoiddbXml(StringfileName,StringdbHost,StringdbPort,
StringdbName,StringdbUser,StringdbPassword)throwsException{
Strings=FileUtils.readFileToString(newFile(fileName));
s=s.replaceFirst("DB_HOST",dbHost);
s=s.replaceFirst("DB_PORT",dbPort);
s=s.replaceFirst("DB_NAME",dbName);
s=s.replaceFirst("DB_USER",dbUser);
s=s.replaceFirst("DB_PASSWORD",dbPassword);
FileUtils.writeStringToFile(newFile(fileName),s);
}
publicstaticConnectiongetConn(StringdbHost,StringdbPort,
StringdbName,StringdbUser,StringdbPassword)throwsException{
Class.forName("com.mysql.jdbc.Driver").newInstance();
StringconnStr="jdbc:
mysql:
//"+dbHost+":
"+dbPort+"/"+dbName
+"?
user="+dbUser+"&password="+dbPassword
+"&characterEncoding=GBK";
Connectionconn=DriverManager.getConnection(connStr);
returnconn;
}
publicstaticvoidwebXml(StringfromFile,StringtoFile)throwsException{
FileUtils.copyFile(newFile(fromFile),newFile(toFile));
}
/**
*创建数据库
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@throwsException
*/
publicstaticvoidcreateDb(StringdbHost,StringdbPort,StringdbName,
StringdbUser,StringdbPassword)throwsException{
Class.forName("com.mysql.jdbc.Driver").newInstance();;
StringconnStr="jdbc:
mysql:
//"+dbHost+":
"+dbPort+"?
user="
+dbUser+"&password="+dbPassword+"&characterEncoding=GBK";
Connectionconn=DriverManager.getConnection(connStr);
Statementstat=conn.createStatement();
Stringsql="dropdatabaseifexists"+dbName;
stat.execute(sql);
sql="createdatabase"+dbName
+"CHARACTERSETGBK";
stat.execute(sql);
stat.close();
conn.close();
}
publicstaticvoidchangeDbCharset(StringdbHost,StringdbPort,
StringdbName,StringdbUser,StringdbPassword)throwsException{
Connectionconn=getConn(dbHost,dbPort,dbName,dbUser,dbPassword);
Statementstat=conn.createStatement();
Stringsql="ALTERDATABASE"+dbName
+"CHARACTERSETGBK";
stat.execute(sql);
stat.close();
conn.close();
}
/**
*创建表
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@paramsqlList
*@throwsException
*/
publicstaticvoidcreateTable(StringdbHost,StringdbPort,StringdbName,
StringdbUser,StringdbPassword,List
throwsException{
Connectionconn=getConn(dbHost,dbPort,dbName,dbUser,dbPassword);
Statementstat=conn.createStatement();
for(Stringdllsql:
sqlList){
stat.addBatch(dllsql);
}
stat.executeBatch();
stat.close();
conn.close();
}
/**
*更新配置
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@paramdomain
*@paramcxtPath
*@paramport
*@throwsException
*/
publicstaticvoidupdateConfig(StringdbHost,StringdbPort,
StringdbName,StringdbUser,StringdbPassword,Stringdomain,
StringcxtPath,Stringport)throwsException{
Connectionconn=getConn(dbHost,dbPort,dbName,dbUser,dbPassword);
Statementstat=conn.createStatement();
Stringsql="updateCORE_WEBSITEsetDOMAIN='"+domain+"'";
stat.executeUpdate(sql);
sql="updateCORE_GLOBALsetCONTEXT_PATH='"+cxtPath+"',PORT="
+port;
stat.executeUpdate(sql);
stat.close();
conn.close();
}
/**
*读取sql语句。
“/*”开头为注释,“;”为sql结束。
*
*@paramfileName
*sql文件地址
*@returnlistofsql
*@throwsException
*/
publicstaticList
BufferedReaderbr=newBufferedReader(newInputStreamReader(
newFileInputStream(fileName),Constants.ENCODING));
List
StringBuildersqlSb=newStringBuilder();
Strings=null;
while((s=br.readLine())!
=null){
if(s.startsWith("/*")){
continue;
}
if(s.endsWith(";")){
sqlSb.append(s);
sqlSb.setLength(sqlSb.length()-1);
sqlList.add(sqlSb.toString());
sqlSb.setLength(0);
}else{
sqlSb.append(s);
}
}
br.close();
returnsqlList;
}
}
jcaptcha自定义验证码
(略)
Xml
--Spring刷新Introspector防止内存泄露-->
--session超时定义,单位为分钟-->
目录:
之一
总共40张表在Spring里面可以用这种方式:
/com/jeecms/core/entity/*.hbm.xml
/com/jeecms/cms/entity/*.hbm.xml
/com/jeecms/article/entity/*.hbm.xml
/com/jeecms/download/entity/*.hbm.xml
/com/jeecms/auxiliary/entity/*.hbm.xml
同样Hibernate也可以这样:
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.show_sql=true
hibernate.format_sql=false
hibernate.query.substitutions=true1,false0
hibernate.jdbc.batch_size=20
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.cache.provider_configuration_file_resource_path=/ehcache-hibernate.xml
Spring事务
--事务配置-->
--使用annotation自动注册bean,并检查@Required,@Autowired的属性已被注入-->
component-scanbase-package="com.jeecms"/> --使用annotation定义事务--> annotation-driventransaction-manager="txManager"/> Spring注解@Component、@Repository、@Service、@Controller区别 Spring2.5中除了提供@Component注释外,还定义了几个拥有特殊语义的注释,它们分别是: @Repository、@Service和@Controller。 在目前的Spring版本中,这3个注释和@Component是等效的,但是从注释类的命名上,很容易看出这3个注释分别和持久层、业务层和控制层(Web层)相对应。 虽然目前这3个注释和@Component相比没有什么新意,但Spring将在以后的版本中为它们添加特殊的功能。 所以,如果Web应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用@Repository、@Service和@Controller对分层中的类进行注释,而用@Component对那些比较中立的类进行注释。 @Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 Spring事务处理 @Repository publicabstractclassBaseDaoImpl protectedLoggerlog=LoggerFactory.getLogger(getClass()); protectedSessionFactorysessionFactory; @Autowired publicvoidsetSessionFactory(SessionFactorysessionFactory){ this.sessionFactory=sessionFactory; } protectedSessiongetSession(){ returnsessionFactory.getCurrentSession(); } publicTsave(Tentity){ Assert.notNull(entity); getSession().save(entity); returnentity; } publicObjectupdate(Objectent
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jeecms 笔记 阅读 源码