spring配置freemarkerr 当404时怎么配置

web网站开发(30)
java(102)
源代码下载地址:
项目是基于maven的,如何使用请参考:
通过springmvc和freemarker实现的基于浏览器的国际化的多语言实现。对于freemarker需要通过spring的标签来实现,所以导入了spring-webmvc-3.1.2.RELEASE.jar的spring.ftl,如果是jstl和spring标签可直接使用国际化的标签语法实现:
&spring:message
code=&title&/&
&fmt:bundle&
&fmt:message&
spring.ftl的路径
spring-webmvc-3.1.2.RELEASE.jar\org\springframework\web\servlet\view\freemarker\spring.ftl
项目截图:
firefox设置首选语言后的显示效果:
打开http://localhost:端口/项目名称/index.htm,端口和项目名称可选,根据你本地的配置决定。
设置zh-cn为首选语言:
显示效果:
设置en-us为首选语言:
显示效果:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19795次
积分:1964
积分:1964
排名:第14477名
原创:178篇
(25)(19)(31)(31)(29)(29)(19)springmvc(63)
Freemarker使用模板技术进行视图的渲染。自从看了Struts标签、Freemarker、JSTL的性能对比后,我毅然决定放弃Struts标签了!效率太差……&
Spring本身支持了对Freemarker的集成。只需要配置一个针对Freemarker的视图解析器即可。
二、Spring MVC视图解析器
视图解析器的工作流程大致是这样的:
Controller的某个方法执行完成以后,返回一个视图(比如:listUser)视图解析器要做的工作就是找到某个对象来完成视图的渲染,或者跳转到其他的逻辑视图。这里的渲染对象通常就是我们的jsp文件或者我们下面用的Freemarker(例如listUser.jsp或者listUser.ftl)。渲染完成以后,将解析结果发送到客户端浏览器
下面介绍一下本文需要用到的解析器():
InternalResourceViewResolver:这是一个最常用的解析器。通常使用它指定渲染对象为jsp页面FreeMarkerViewResolver:这就是Spring与Freemarker整合需要用到的解析器
三、配置多视图,支持freemarker
我们通常不希望所有的动态页面请求都使用Freemarker来渲染,那就需要配置多个视图解析器。网上有很多这方面的帖子。我看到很多人的做法是在web.xml中配置两个DispatcherServlet,一个拦截.do,一个拦截.然后再写两个dispatcherServlet.xml,配置两个视图解析器;jsp页面、ftl模板就各司其职。 其实没有那么复杂。
&?xml version=&1.0& encoding=&UTF-8&?&
&web-app version=&2.4& xmlns=&/xml/ns/j2ee&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd&&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&!-- ======================================================== --&
Spring MVC Config Servlet
&!-- ======================================================== --&
&!-- JSP DispatcherServlet --&
&servlet-name&dispatcher&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/classes/applicationContext.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&!-- ======================================================== --&
Spring MVC Config Mapping
&!-- ======================================================== --&
&servlet-mapping&
&servlet-name&dispatcher&/servlet-name&
&url-pattern&*.do&/url-pattern&
&/servlet-mapping&
&/web-app&
2.dispatcherServlet.xml
&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance& xmlns:aop=&http://www.springframework.org/schema/aop&
xmlns:tx=&http://www.springframework.org/schema/tx&
xmlns:p=&http://www.springframework.org/schema/p&
xmlns:context=&http://www.springframework.org/schema/context&
xmlns:mvc=&http://www.springframework.org/schema/mvc&
xsi:schemaLocation=&
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&&
&!--通用视图解析器--&
&bean id=&viewResolverCommon& class=&org.springframework.web.servlet.view.InternalResourceViewResolver&&
&property name=&prefix& value=&/WEB-INF/page/&/&
&property name=&suffix& value=&.jsp&/&&!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑
&property name=&viewClass&&
&value&org.springframework.web.servlet.view.InternalResourceView&/value&
&/property&
&property name=&order& value=&1&/&
&!-- 配置freeMarker视图解析器 --&
&bean id=&viewResolverFtl& class=&org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver&&
&property name=&viewClass& value=&org.springframework.web.servlet.view.freemarker.FreeMarkerView&/&
&property name=&contentType& value=&text/ charset=utf-8&/&
&property name=&cache& value=&true& /&
&property name=&suffix& value=&.ftl& /&
&property name=&order& value=&0&/&
&!-- 配置freeMarker的模板路径 --&
&bean id=&freemarkerConfig& class=&org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer&&
&property name=&templateLoaderPath&&
&value&/WEB-INF/ftl/&/value&
&/property&
&property name=&freemarkerVariables&&
&entry key=&xml_escape& value-ref=&fmXmlEscape& /&
&/property&
&property name=&defaultEncoding&&
&value&utf-8&/value&
&/property&
&property name=&freemarkerSettings&&
&prop key=&template_update_delay&&3600&/prop&
&/property&
&bean id=&fmXmlEscape& class=&freemarker.template.utility.XmlEscape&/&
&!-- 注解支持 --&
&mvc:annotation-driven/&
&!-- 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --&
&context:component-scan base-package=&com.hl.usersmanager&&
&!-- 允许定义过滤器将基包下的某些类纳入或排除
&context:include-filter type=&annotation& expression=&org.springframework.stereotype.Controller&/& --&
&/context:component-scan&
3.Controller
package com.hl.usersmanager.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.ui.ModelM
import org.springframework.web.bind.annotation.RequestM
import com.hl.usersmanager.model.U
import com.hl.usersmanager.service.IUserS
@Controller
public class UserController {
使用注解实现自动装配 不需要再写get set方法以及在context中配置bean
@Autowired
private IUserService userS
@RequestMapping(value = &findUserByName.do&)
public String findUserByName(String name,ModelMap model) {
Users users = userService.findUserByName(name);
model.addAttribute(&userPhone&,users.getPhone());
System.out.println(&userPhone:& + users.getPhone());
return &showUser&;
@RequestMapping(value = &findAllUsers.do&)
public String findAllUsers(ModelMap model) {
List&Users& users = userService.findAllUsers();
model.addAttribute(&users&,users);
return &listUser&;
在视图解析器中有一个&property name=&order& value=&orderValue&/&的配置,这个配置表示解析器的优先级别。我们将FreeMarkerViewResolver的级别设为0,将InternalResourceViewResolver的级别设为1。这样,解析器就会优先使用&FreeMarkerViewResolver&进行解析,如果找不到相应的模板,就使用InternalResourceViewResolver进行解析,如果还找不到页面,就会产生一个404错误!
在本例中,我们在/WEB-INF/page/下有一个showUser.jsp页面,在/WEB-INF/ftl/下有一个listUser.ftl的模板文件。那么当访问findAllUsers.do的时候,Controller返回一个listUser视图,根据解析器配置,先使用FreeMarkerViewResolver进行解析。它会根据模板路径templateLoaderPath的配置/WEB-INF/ftl/下去找是否有一个listUser并且以后缀配置suffix值.ftl,即listUser.ftl文件,如果找到则使用该模板进行解析。这里我们实现已经创建了这个模板文件,所以user列表成功被显示出来。
当用户访问findUserByName.do的时候,返回showUser视图,毅然先使用FreeMarkerViewResolver进行解析,结果发现在/WEB-INF/ftl/下并没有showUser.ftl这个模板文件,于是使用InternalResourceViewResolver进行解析,于是开始寻找/WEB-INF/page/下是否有showUser.jsp文件。由于我们已经创建了这个文件,于是最终使用showUser.jsp进行渲染。那么如果没有找到showUser.jsp,就会抛出404错误。
这里还要注意的是,如果Controller中返回视图加了后缀jsp或者ftl,在配置中就不要加入suffix配置,否则会找不到页面。
classic_patible=true&&&&&&&&&&&&&
##如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较&
whitespace_strip=true&&&&&&&&& ##去掉多余的空格,非常有用&
##模版事件,设置为1秒,正式环境设置为3600秒&&
#template_update_delay=3600&
template_update_delay=1&&&&&&& ##模版更新,这里配置是1秒更新,正式环境,模版不会改变,将这个值设很大,提高效率.就是被这个参数害死了.老是.&
locale=zh_CN&&&&&&&&&&& ##&
default_encodg=utf-8&& ##编码utf8&
url_escaping_charset=utf-8& ##url编码utf8&
date_mat=yyyy-MM-dd&& ##显示日期格式&
time_format=HH:mm:Ss&&&&&& ##显示时间格式&
datetime_format=yyyy-MM-dd& ##显示日期格式&
number_format=\#0.\#\#\#\#\#& ##数字显示格式hi.&
#template_update_delay=1
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
auto_import=&/common/index.ftl& as ui
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=auto_detect
url_escaping_charset=UTF-8
里面大部分都不解释了,就解释一个,
auto_import=&/common/index.ftl& as ui 这个表示每个freemarker的视图页面都会自动引入这个ftl文件。里面定义的就是一些宏,如text文本框,各种form元素
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:82477次
积分:1931
积分:1931
排名:第14835名
原创:19篇
转载:589篇
(1)(5)(5)(17)(10)(27)(40)(38)(15)(29)(110)(45)(67)(32)(69)(34)(8)(17)(26)(1)(14)如何为wordpress创建个性十足且用户友好的404页
->行高大小:
  作为站长,我会犯错,你会犯错,我们都会犯错。有些错误我们可通过一个404错误页面来解决。一般来说,这个页面会出现以下提示:&404错误:对不起,您找的文件/页面不存在。&此类页面对增加用户体验无任何的帮助,那么如何才能设计出更友好的404页面呢?
  404页面不仅仅是为了给网站用户指出问题所在,你还需要为他们提供一个可行的解决方案。
  在wordpress的默认主题kubrick中,404页面做得既简单又难看,相信你的也不会太好。本文将手把手教你制作出一个优秀的404页面。
  其实,一个好404页在设计上并不复杂,目的是帮助网站用户找到他们想要的信息,并继续浏览你的网站。废话不多说了,我们开始吧!
  假设你是网站的访问者。
  假设你自己是网站的用户,到达了404页面,肯定是因为你希望找到别的什么信息,否则不可能来到这里。所以,有几件事情你绝对不能做:
  第一,认为人们很可能是点击网站的某处链接才到达的404错误页。如果真是如此,谁该为此事负责?他们?不,是你-站长。
  第二,要让404页的设计样式与网站上的其它页面保持一致。有些站长喜欢别出心裁,不考虑用户的接受能力。例如,有位站长将此页设计成了常见的windows蓝屏,结果却不太好,人们纷纷逃离他的网站。
  第三,如果你打算开个玩笑,就像上面提到的蓝屏设计,最好保证每个人都能接受它。
  让我们来设计一个完美的404错误页
  Ok,既然知道了不要做什么,你也需要知道用户到你的网站是想寻找一些特定的内容,通常他们是跟随某个链接来到这里的。现在,作为站长的你,需要提供各种方法帮助他们达到目的。
  让我们看看一些非常棒的404实例页吧:
  在上面几个404页中, conversion rate experts网站的设计我最喜欢,同时它也激发了我的灵感。
  它提供了4个选项去帮助用户:
  1、重新搜索
  2、检查是否存在链接拼写错误。
  3、在网站地图里查找。
  4、返回到网站首页。
  apple官网直接将网站地图呈现给用户,这个思路也很不错。你可以根据喜好来选择其中一个。
  我建议你选用conversion rate experts的404解决方案,而且设计上也很容易实现,我就不一一赘述了。这里,我还要增加一项:显示与用户输入的url网址相关的一些网页的列表。为了实现这个功能,我们得研究分析下这个url地址,看看能否发现点什么:
  一个404错误页能为人们提供什么有用的数据?
  许多站长会认为404页是个死角。其实不然,它能提供许多有用的数据可以帮助你了解网站用户的搜索意图。让我们研究下url地址:域名/后面的所有的字符会提示你用户想要找什么。
  令人高兴的是,wordpress系统存储了这个信息,你可以通过变量$wp_query-&query_vars['name']找到它。这个wp_query类函数存贮的是经过一系列处理后的规范化的网址,我们可以利用这些信息来构建你的404页面。
  首先,让我们检查下是否存在与$wp_query-&query_vars['name']变量中的页面名称直接匹配的页面。
$s = $wp_query-&query_vars['name'];
$s = preg_replace(&/(.*)-(html|htm|php|asp|aspx)$/&,&$1&,$s);
$posts = query_posts( array( 'post_type' =& 'any', 'name' =& $s) );
如果上述语句没有输出结果,你需要使用str_replace()函数将$s字符串中的&-&用空格去掉,再进行一次搜索。当我们再次利用$s变量时,要把它放在if语句的外面以检查之前的查询是否有结果产生。
$s = str_replace(&-&,& &,$s);
if (count($posts) == 0) {
$posts = query_posts(array( array('post_type' =& 'any', 'name' =& $s) );
现在,我们得到了一些输出结果,它们是一些与用户之前输入的网址相关的日志,至少,我们认为是相关的,用下面的语句将其以列表的形式显示出来:
if (count($posts) & 0) {
echo &&p&Were you looking for &strong&one of the following&/strong& posts
or pages?&/p&&;
echo &&ul&&;
foreach ($posts as $post) {
echo '&li&';
echo '&a href=&'.get_permalink($post-&ID).'&&'.$post-&post_title.'&/a&';
echo '&/li&';
echo &&/ul&&;
  如果你觉得这么做实在太麻烦,可以安装插件smart 404。它实现的功能与上面介绍的差不多。
  现在一个非常棒的404页就制作完成了,注意如果满足条件的日志太多,你不必一一把它们显示出来,选取一部分即可。另外,404错误还提供了一个有用信息就是the referrer(用户来路):如果,有人与你网站做了一个错误的网页链接,或者链接到了一个不再存在的页面。所以,你需要做的最后一件事就是:
  避免404页面的出现
  使用google analytics有个好处就是能查看the referrer信息,这样你能发现网站用户的来路。它可以帮助你将url指向合适的网页,也能发现那些与你网站做了错误链接的网站,以便及时通知站长们修正链接地址。
  另一个不错的跟踪网站404错误的方法就是使用google站长工具。在&诊断-抓取错误&菜单中,google会将你网站中可能的产生404错误的地方逐一地标示出来:
  本文由丰胸的最快方法.cn发布,转载请注明出处,谢谢!
收集整理 ,地址为:
大屏阅读,大屏评论.

我要回帖

更多关于 freemarker缓存配置 的文章

 

随机推荐