今天主要介绍下关于spring下主题(Theme)的内容,之前去网上搜索下了相关内容,发现其使用介绍都很简单,我这里详细介绍下如何使用spring的主题。
1、ThemeSource
ThemeSource,说简单点,主要用于如何定位相应的主题资源文件。默认状态下,其具体实现类ResourceBunldeThemeSource是在类路径根目录下查找相应的资源文件,不过可以通过配置器属性basenamePrefix来制定。
<bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
<property name="basenamePrefix" value="com.jack.themes."></property>
</bean>
这样,DispatcherServlet就会下com.jack.themes包下进行查找资源文件。
2、ThemeResolver
ThemeResolver的功能和ViewResolver、LocaleResolver类似,主要根据配置返回Theme。Spring默认提供三个ThemeResolver具体的类:
(1).FixedThemeResolver
(2).SessionThemeResolver
(3).CookieThemeResolver
三个类的区别直接可以通过其名字就可以看出,fix表示固定,Session即会话,而cookie就是利用cookie了。以下我一一列出使用例子
2.1 FixedThemeResolver
<bean id="themeResolver" class="org.springframework.web.servlet.theme.FixedThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
设置主题文件为summer.properties,在整个项目内固定不变。
2.2 SessionThemeResolver
<bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
设置主题名称为每个用户在HttpSession内保存。
2.3 CookieThemeResolver
<bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
主题保存在Cookie中。
3、ThemeChangeInterceptor
如果需要根据用户请求来改变主题,则需要使用ThemeChangeInterceptor拦截器了。
<bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
<property name="paramName" value="themeName"></property>
</bean>
其中设置用户请求参数名为themeName,即url为?themeName=具体的主题名称。此外,还需要在handlerMapping中配置拦截器
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors" >
<list>
<ref local="themeChangeInterceptor"/>
</list>
</property>
</bean>
这样,当ThemeResolver为CookieThemeResolver或者SessionThemeResolver时,可以通过url的参数设置来制定主题。
http://....../?themeName=summer,则主题为summer.properties文件
http://....../?themeName=winter,则主题为winter.properties文件。
4.主题文件
主题文件为主题名.properties格式,具体其内容则是一些key-value对,表示一些css或者图片、文字等。如
welcome.message=\u8FD9\u662F\u590F\u5929\uFF0C\u597D\u70ED\u554A\uFF01
hello.message=helloWorld!
需要注意的是其中的中文需要进行转码。
5.视图页面
通过spring的tags可以将主题内容进行显示
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:theme code="welcome.message"></spring:theme>
这样,打开具体页面时就会根据当前主题显示相应内容了。
分享到:
相关推荐
在"spring配置activemq详解"这个主题中,我们将探讨如何在Spring项目中配置和使用ActiveMQ。以下是对这个主题的详细说明: 1. **配置ActiveMQ**: - 首先,我们需要在项目中引入ActiveMQ的相关依赖,这通常通过在`...
Spring容器高级主题 第6章 Spring AOP基础 第7章 基于@AspectJ和Schema的 第7章 AOP 第3篇 数据库访问 第8章 Spring对DAO的支持 第9章 Spring的事务管理 第10章 使用Spring JDBC访问数据库 ...
12. **spring-webmvc.jar**:Spring MVC的实现,包括控制器、模型、视图和视图解析器,以及国际化、主题、标签等功能。 13. **spring-mock.jar**:主要用于测试,包含一组模拟对象,帮助开发者在不依赖实际环境的...
在Spring MVC中,核心组件之一是DispatcherServlet,它把用户请求分派给相应的处理器,并提供了可配置的处理程序映射、视图解析、本地语言和主题解析等功能。此外,Spring MVC还提供了一个默认的Controller接口,...
以下是对"百知教育Spring详解笔记"的详细解读。 1. **控制反转(IoC)**:Spring通过IoC容器管理对象的生命周期和依赖关系,使得开发者不再需要在代码中手动创建和管理对象,而是由容器负责。这样提高了代码的可...
《Spring详解——Java全栈开发的关键》 Spring框架是Java企业级应用开发的基石,它以其灵活、高效和模块化的特性赢得了广大开发者的一致好评。本篇将深入探讨Spring的核心概念,包括IoC(Inversion of Control)...
本文将全面讲解ActiveMQ的使用流程,并结合Spring框架进行实例解析,帮助开发者深入理解如何在实际项目中部署和使用ActiveMQ。 1. **ActiveMQ的基本概念** - **消息**: 在ActiveMQ中,消息是数据传输的基本单元,...
Spring Kafka 是一个集成Apache Kafka与Spring框架的库,它使得在Spring应用中使用Kafka变得更加简单。本示例将提供一个详细的Spring Kafka演示,确保你可以按照步骤运行并理解其工作原理。 Kafka是一个高吞吐量、...
Spring容器高级主题 第6章 Spring AOP基础 第7章 基于@AspectJ和Schema的 第7章 AOP 第3篇 数据库访问 第8章 Spring对DAO的支持 第9章 Spring的事务管理 第10章 使用Spring JDBC访问数据库 ...
《Spring 整合 iBATIS 全面指南》 在Java企业级开发中,Spring框架以其强大的功能和...《Spring整合iBATIS文档详解》和提供的源代码是学习这一主题的宝贵资源,建议读者仔细研读,亲手实践,以提升自己的开发技能。
从“spring详解(中文版)”压缩包中,你可以期待找到关于这些主题的详细解释、示例代码以及可能的实战教程。这将有助于你从理论到实践,全面掌握Spring框架的精髓。无论是初学者还是经验丰富的开发者,这个资源都将...
《精通Spring 2.x企业应用开发详解》是针对Spring框架2.x版本的一本深度学习教程,旨在帮助读者全面掌握Spring在企业级应用开发中的实践技巧和核心概念。这本书的源代码部分包括了"part5",暗示着它可能涵盖了整个...
1. `ISOLATION_DEFAULT`:使用数据库默认的隔离级别。 2. `ISOLATION_READ_UNCOMMITTED`:这是最低的隔离级别,允许脏读,即一个事务可以读到另一个未提交事务的数据,可能导致数据不一致。 3. `ISOLATION_READ_...
至于文件名称列表中的“Hibernate缓存深入详解”,虽然与标题主题不同,但与Spring框架密切相关,因为Spring经常被用来整合Hibernate进行数据持久化。Hibernate的缓存机制主要包括一级缓存(Session Cache)和二级...
`SimpleMailMessage`类是用来封装邮件的基本属性,如发件人(from)、收件人(to)、抄送人(cc)、主题(subject)和正文(text)。 ### 22.2. Spring邮件抽象结构 - **MailSender**:这个接口提供两个方法:`send...
在Java开发中,可以使用spring-kafka进行Kafka的集成,这为开发者提供了基于Spring的便捷方式来操作Kafka。spring-kafka中提供了多种消息监听器容器和消息生产者,支持同步和异步消息的生产和消费。此外,还可以使用...
在"Struts 2+Hibernate+Spring整合开发技术详解"这本书中,作者蒲子明深入浅出地讲解了这三大框架的整合使用。随书源码包含第19至21章的内容,主要涉及的是实际项目中的两个应用场景:BBS论坛系统和Photo System照片...
### 《精通Spring2.X企业应用开发详解》第五章知识点详解 #### 5.1 Spring容器技术内幕 ##### 5.1.1 内部工作机制 Spring容器作为一款设计精妙且功能强大的框架核心,其内部机制对于理解和掌握Spring的工作原理至...
Spring容器高级主题 第6章 Spring AOP基础 第7章 基于@AspectJ和Schema的 第7章 AOP 第3篇 数据库访问 第8章 Spring对DAO的支持 第9章 Spring的事务管理 第10章 使用Spring JDBC访问数据库 ...