论坛首页 Java企业应用论坛

Java WEB系统 换肤 实现方式

浏览 6113 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-05  
随着个性化社会的发展,现在很多软件都支持换肤功能,允许用户来定制软件的外观。根据使用方式的不同,定制又分为两种:
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中的这个变量。而变量的保存可以保存在配置文件中,也可以保存在数据库表中,如果保存在系统表中,注意监听器中需要数据库链接了,需要能够获取数据库链接才可以。



不清楚大家有没有其它的方案?有没有模板或者什么框架实现了换肤功能????




   发表时间:2008-11-28  
我们现在的OA 也是这么做的.

可是项目经理说是要 换CSS 换肤方案..

不知道他是怎么想
0 请登录后投票
   发表时间:2008-11-29  
你说的这两种方案我都用过
针对用户换肤的方案我是保存在数据库表中的
针对系统换肤的方案我是程序启动固定扫描皮肤目录(如:themes目录)下的子目录对比在配置文件中(properties文件)中的系统当前使用皮肤值,如果对比成功则加载该目录下面的CSS文件到页面,当然也可以动态在后台进行变更

我两套方案都是使用的velocity模板引擎作为视图层..后台还可以直接通过编辑器编辑模板文件实现布局的更改等..
0 请登录后投票
   发表时间:2008-11-29  
spring MVC 有相应的实现,不过没有非常深入的了解

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics