spring mvc番外篇(三):主题(theme)

3.1 简介

在实际开发中,经常会碰到这样一个问题,客户要求更换版面风格。不一定是美工做的不好,也有可能是客户的视觉疲劳。所以在项目的开始阶段,最好就要考虑这些灵活的需求变化。这个在网站程序中称为:主题(theme)。

主题的实现原理:大概就是把网站版面的css样式表和图片之类的文件,和网站的程序进行解耦。程序读取theme的持久化配置,然后找到相应的css样式表和图片,配置网站版面。

采用springMVC的主题概念,我们可以控制程序的整体感官效果,从而概述用户的体验。主题是影响程序视觉效果的样式表,静态资源和图片等资源的集合。

 

3.2 案例开发步骤

步骤一:在myeclipse8.6中新建web工程mvcTheme,拷贝如下包到lib目下:

说明:commons-logging-1.1.3.jar是日志包,在下载的struts2官方包里面可以找到。其它的包都在spring3.2.2版本官方包里面找到。

     spring-aop-3.2.2.RELEASE.jar:与Aop 编程相关的包

spring-beans-3.2.2.RELEASE.jar:提供了简捷操作bean 的接口

spring-context-3.2.2.RELEASE.jar:构建在beans 包基础上,用来处理资源文件及国际化。

spring-core-3.2.2.RELEASE.jar:spring 核心包

spring-web-3.2.2.RELEASE.jar:web 核心包,提供了web 层接口

spring-webmvc-3.2.2.RELEASE.jar:web 层的一个具体实现包,DispatcherServlet也位于此包中。

注意:以上包是springmvc开发所需要的最基本包,不能再精简。

 

步骤二:编写web.xml 配置文件,代码如下:

=================================web.xml========================

<!-- 配置spring的字符集过滤 -->

  <filter>

    <filter-name>encode</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>

      <param-name>encoding</param-name>

      <param-value>UTF-8</param-value>

    </init-param>

    <init-param>

    <param-name>forceEncoding</param-name>

    <param-value>true</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>encode</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

 

 

  <servlet>

    <servlet-name>springmvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

 

  <!-- 如果让首页从控制器进入,则需要加入该配置 -->

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>/changeTheme.do</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

    <welcome-file>changeTheme.do</welcome-file>

  </welcome-file-list>

================================================================

 

步骤三:建立theme属性文件及相对的css文件,如图所示。

 

三个helloworld.css文件的内容分别是:

Theme/blue 文件夹下:

#divTheme {

    background: blue;

    width: 4.46cm;

    height: 8cm;

}

 

Theme/default 文件夹下:

#divTheme {

    background: gray;

    width: 4.46cm;

    height: 10cm;

}

 

Theme/red 文件夹下:

#divTheme {

    background: red;

    width: 14cm;

    height: 4.46cm;

}

 

步骤四:在webroot根目录下编写index.jsp,如下所示:

================================ Register.jsp=======================

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>

< !—注意要导入spring的标签库-->

<%@ taglib uri="http://www.springframework.org/tags"  prefix="s"%>

<%

String path =request.getContextPath();

String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    <title>主题</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    < !—注意code值是theme属性文件中的name-->

<link rel="stylesheet"type="text/css" href="<s:theme code='hello'/>" />

  </head>

<body>

    <h1>改变主题</h1>

    <div id="divTheme"></div>

 

    <p>

    <a href="changeTheme.do?themeName=red"> set theme to red</a>

    <a href="changeTheme.do?themeName=blue"> set theme to blue</a>

    <a href="changeTheme.do?themeName=grey"> set theme to grey</a>

    </p>

</body>

</html>

==================================================================

 

步骤五:编写控制器ThemeController.java,如下所示:

================================== ThemeController.java==============

package com.stu.controls;

 

import javax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.ThemeResolver;

import org.springframework.web.servlet.mvc.Controller;

 

public class ThemeController implements Controller {

    private ThemeResolver themeResolver;

 

    public void setThemeResolver(ThemeResolver themeResolver) {

       this.themeResolver = themeResolver;

    }

 

    public ModelAndView handleRequest(HttpServletRequest request,

           HttpServletResponse response) throws Exception {

       String themeName = request.getParameter("themeName");

       themeResolver.setThemeName(request, response, themeName);

       return new ModelAndView("index");

    }

 

}

====================================================================

 

步骤六: 在web-inf目录下建立springmvc-servlet.xml的配置文件,它的命名规则{servlet-name}-servlet.xml ,注意下划线处。当DispatcherServlet启动的时候,它会默认根据此规则到web-inf目录下去找这个xml配置文件。

=========================springmvc-servlet.xml==========================

<?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTDBEAN//EN"

 "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>   

   

    <bean id="jspViewResolver"

       class="org.springframework.web.servlet.view.InternalResourceViewResolver">

       <property name="prefix"value="/"></property>

       <property name="suffix"value=".jsp"></property>

    </bean>

    <bean id="simpleUrlHandlerMapping"

       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

       <property name="mappings">

           <props>

              <prop key="/changeTheme.do">themeController</prop>

           </props>

       </property>

    </bean>

 

    <!-- 主题配置 -->

    <bean id="themeResolver"

       class="org.springframework.web.servlet.theme.SessionThemeResolver">

       <!-- 设置默认主题 -->

       <property name="defaultThemeName"value="grey" />

    </bean>

   

    <!-- 加载主题资源 -->

    <bean id="themeSource"

       class="org.springframework.ui.context.support.ResourceBundleThemeSource">

       <property name="basenamePrefix"value="theme."></property>

    </bean>

 

    <!-- 注入控制器 -->

    <bean id="themeController"class="com.stu.controls.ThemeController">

        <property name="themeResolver" ref="themeResolver"/>

    </bean>

</beans>

==========================================================

 

步骤七:启动tomcat,发布项目,在地址栏分别输入 http://localhost:8080/mvcTheme/

进行测试。 如图所示:

点击相应链接可以更改相应主题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值