如何使用spring mvc 主题
主题是一组静态资源的集合,一般包括影响应用程序界面样式的资源,如样式表和图像文件。本文详细说明使用 Spring MVC 的主题实现不同风格切换。
配置Spring MVC 主题
在spring web 应用中使用主题,需要配置一个实现org.springframework.ui.context.ThemeSource接口的类,这里我们使用org.springframework.ui.context.support.ResourceBundleThemeSource类实现从根类路径载入属性文件。
当使用ResourceBundleThemeSource,在一个简单属性文件中定义主题。属性文件列出所有组成该主题的资源。示例如下:
styleSheet=/themes/wood.css
所有属性的key在视图代码(如jsp)中作为主题元素的名称被引用。在jsp中,使用
spring:theme
标签,下面jsp片段使用主题定义样式和风格:
< %@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
< link rel="stylesheet" href="< spring:theme code='styleSheet'/>" type="text/css"/>
< /head>
< /body>
< /html>
配置ResourceBundleThemeSource bean
在bean定义文件中配置ResourceBundleThemeSource bean。
< bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
< property name="basenamePrefix" value="theme-" />
< /bean>
注意,我们已经设置了前缀属性”theme-“,缺省ResourceBundleThemeSource使用空名称作为前缀。
所以属性文件应该被命名为theme-filename.properties,如:theme-wood.properties, theme-pentagon.properties etc.
主题解释器
定义了主题之后,ThemeResolver实现决定主题如何使用。spring提供不同的解释器,举例:FixedThemeResolver, SessionThemeResolver, CookieThemeResolver.
本例中我们使用CookieThemeResolver 类实现,选择的主题被存储在客户端cookie中。
配置主题解释器:
< bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver">
< property name="defaultThemeName" value="wood" />
< /bean>
注意:我们设置了缺省的主题:wood,所以当用户第一次访问web应用,wood主题有效。
主题拦截器
为了允许用户通过点击切换主题,spring提供ThemeChangeInterceptor,下面是ThemeChangeInterceptor的配置定义:
< bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
< property name="paramName" value="theme" />
< /bean>
我们已经指定paramName的值为theme,意味着当请求带参数theme用不同的值时,ThemeChangeInterceptor将被执行。同时也需要配置ThemeChangeInterceptor bean,上面我们定义的拦截器,通过使用
mvc:interceptors
标签实现:
< mvc:interceptors>
< ref bean="themeChangeInterceptor">< /ref>
< /mvc:interceptors>
这里是eclipse中项目结构快照:
src文件夹下theme-pentagon.properties文件内容如下:
styleSheet=themes/pentagon.css
只有一行,定义了获得相应css文件的url,其他属性文件类似,如:theme-symphony, theme-wood, theme-wall.
美特属性文件只有一行引用css文件的url。
所以,无论什么时候ThemeChangeInterceptor 拦截到主题改变时,都能找到相应的属性文件,并尝试访问属性文件中url指定的对应css文件。
因为所有的主题(css文件)都在resources/themes文件夹下,我们必须配置themes/css-filename给所有的resources/themes/css-filename,否则属性文件将不能定位至css文件。我们通过下面语句进行配置:
< mvc:resources mapping="/themes/**" location="/resources/themes/">< /mvc:resources>
wood.css
在wood.css文件中,我们仅改变body标签的背景图片,但实际你可以做更多的样式改变,如文字样式、字体、颜色等。
body {
background-image : url(“/Themes/images/wood_pattern.png”);
}
HomeController
我们有一个简单HomeController 服务home.jsp.
@Controller
public class HomeController {
@RequestMapping("/")
public String getHomePage(){
return "home";
启动主题应用
现在,我们全部启动主题应用,运行过程中,可以看到home.jsp页面使用缺省的wood风格。
我们通过点击主页右侧的主题链接浏览其他主题。
Wall Theme
Pentagon Theme
Symphony Theme
注意:点击不同主题链接观察url改变点击一个主题链接,举例wood,请求参数主题带wood值,发送至服务器端。ThemeChangeInterceptor 拦截主题改变,并展示相应主题。
关于主题的一些坑
有几点坑需要了解:
- 确保属性文件子啊类路径下,应该把属性文件放在src文件夹下,如果属性文件不在类路径下,会报ServletException,没有相应的样式表本地化文件:
- 第二需要注意在属性文件中链接至CSS的url,我们之前提及的url,hemes/css-file-name是未来查找主题文件。必要忘了映射这个url到css文件的实际位置。使用mvc:resources,我们在示例中配置为.如果没有配置,不会有错误信息,但主题不能访问css文件。
- 最后一个错误是,使用spring主题时,jsp文件中不使用spring:theme标签。注意我们在jsp文件中使用spring:theme,” type=”text/css”/>,正确使用这个标签让主题正常工作。
如何使用spring mvc 主题主题是一组静态资源的集合,一般包括影响应用程序界面样式的资源,如样式表和图像文件。本文详细说明使用 Spring MVC 的主题实现不同风格切换。配置Spring MVC 主题在spring web 应用中使用主题,需要配置一个实现org.springframework.ui.context.ThemeSource接口的类,这里我们使用org.sp
Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。
•(1) Http请求:客户端请求提交到DispatcherServlet。
•(2) 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。
•(3) 调用处理器:DispatcherServlet将请求提交到Controller。
•(4)(5)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。
•(6)(7)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
•(8) Http响应:视图负责将结果显示到客户端。
Spring MVC 简介
Spring Web
MVC是
spring框架中事务用于web开发的一个模块,是
Spring提供的基于
MVC架构设计模式的Web开发框架,它本质上也是Servlet。
在
MVC架构中controller负责持久层,(controller也可以细化dao层和service层);model负责ORM隐射;view负责视图渲染。
3.1 简介
在实际开发中,经常会碰到这样一个问题,客户要求更换版面
风格。不一定是美工做的不好,也有可能是客户的视觉疲劳。所以在项目的开始阶段,最好就要考虑这些灵活的需求变化。这个在网站程序中称为:
主题(
theme)。
主题的实现原理:大概就是把网站版面的css样式表和图片之类的文件,和网站的程序进行解耦。程序读取
theme的持久化配置,然后找到相应的css样式表和图片,配置网站版面。
[ 2021年,将Spring全家桶的课程进行Review,确保不再有顺序错乱等问题导致学员看不懂内容,进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并开始逐步增加高阶的Spring Security等内容,课件将逐步进行上传,敬请期待! ]本课程是Spring全家桶案例精讲课程的第二部分Spring MVC,Spring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Java Spring的Web知识点,主要是关于Spring MVC的应用,包含:表单的增删改查、国际化、过滤器、拦截器、日志Log4j2及slf4j的使用、主题更改网站皮肤及样式、文件上传等的案例讲解,并且最后以一个SSM(Spring+Spring MVC+Mybatis)贯穿前后台的案例作为Spring MVC课程的终奖, 从而使大家快速掌握Spring的基础核心知识,快速上手,为面试、工作等做好充足准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVC、Spring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力 【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验 【本课程适用人群】如果你是一定不要错过! 适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】
protected void onRefresh() throws BeansException {
// For subclasses: do nothing by default.
SpringMVC框架主题可以设置应用程序的整体外观,从而增强用户体验。主题是静态资源的集合,通常有css样式表和图片构成,这些css样式和图片会直接影响应用程序的视觉样式。
要在Web应用中使用主题,必须实现ThemeSource接口,WebApplicationContext接口就扩展了ThemeSourc
对于学习Java MVC,以下是一个学习计划的建议:
1. 学习Java基础知识:首先,你需要掌握Java的基本语法、面向对象编程的概念以及Java的核心库。你可以通过在线教程、学习视频或者参考书籍来学习这些基础知识。
2. 理解MVC架构模式:学习MVC的概念和原理。了解MVC的组成部分以及各个部分之间的交互关系。你可以阅读相关的文档或者参考书籍来学习MVC架构模式。
3. 学习使用Java MVC框架:掌握一种流行的Java MVC框架,比如Spring MVC或者Struts。通过官方文档、教程或者实践项目来学习框架的使用方法和最佳实践。
4. 实践项目:选择一个小型的项目来应用你学到的Java MVC知识。这个项目可以是一个简单的Web应用或者一个命令行工具,重点是能够实践和巩固你的学习成果。
5. 深入学习和扩展:一旦你掌握了基本的Java MVC知识和技能,你可以进一步深入学习和扩展。比如学习如何处理表单验证、用户认证和授权、数据库访问等高级主题。
6. 参与社区和实践:加入Java开发者社区,参与讨论和交流。在实践中不断提升自己的技能,通过参与开源项目或者编写个人项目来丰富你的经验。
记住,学习是一个渐进的过程,需要持续的努力和实践。希望这个学习计划对你有所帮助!如果你有任何进一步的问题,我会很乐意为你解答。