Java WEB系统 换肤 实现方式
随着个性化社会的发展,现在很多软件都支持换肤功能,允许用户来定制软件的外观。根据使用方式的不同,定制又分为两种:
1、系统管理员定制整个系统的外观,系统管理员来选择一个系统使用什么样的外观,同时不允许用户来定制。
2、每个用户都可以实现定制,并且保存自己的定制
当然上述两个情况都可以在一个系统中实现,不过需要由管理员来确定是否开放用户定制功能。
换肤的实现原理:动态改变需要的css文件。
实现方式:
一、CSS设置部分:
每种风格设置一个套样式表,分别放在不同的文件夹中,最好CSS样式表中用到的背景图片等也放在该文件夹下, 把文件夹地址作为系统环境变量。
通常,需要写一个网站通用的CSS文件,该文件一般只控制css的位置布局,不涉及颜色,背景布局,然后每套风格只涉及换肤方案的css文件,这里就只控制颜色,背景。
页面使用部分:
需要使用系统变量来读取样式表和图片文件
<link href="${skins}/styles.css" rel="stylesheet" type="text/css" />
<img src="${skins}/images/Top_ment_left.gif" width="134" height="33" />
其中${skins}是系统变量,如果上面定制方案1,该变量保存在Application中,如果是方案2,该变量保存在Session中即可。
变量的设置和读取:
那么如何来设置保存${skins}的变量呢?
如果是允许用户定制,需要在每个用户表中增加一列,保存该用户设置的风格路径,那么就可以在用户登录的时候保存在Session中,
如果不允许用户定制,就需要在系统启动的时候就加载到Application中,可以考虑使用监听器来实现。并且在执行换肤功能的时候来重新设置Application中的这个变量。而变量的保存可以保存在配置文件中,也可以保存在数据库表中,如果保存在系统表中,注意监听器中需要数据库链接了,需要能够获取数据库链接才可以。
原文:http://www.javaeye.com/topic/224415