- Spring MVC 应用在 Tomcat 启动的时候出现了下面的错误:
java.lang.NoSuchFieldError: APPLICATION_CONTEXT_ID_PREFIX
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:430)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4659)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) Read More - 首先奉上的是键盘快捷键:
1、超级键(Win键) – 打开dash。
2、长按超级键 – 启动Launcher。
3、按住超级键,再按1,2,3等数字键 – 从Launcher打开一个应用程序,当你按住超级键时,每个应用程序图标上都会显示一个数字,按下对应的数字就会打开盖应用程序。
4、Alt+F1 – 将键盘焦点移到Launcher上,使用箭头键进行移动,按回车即可启动一个应用程序,按下右箭头键显示Quicklist。
5、Alt+F2 – 以特殊模式打开dash,以便运行任何命令。
6、超级键+A – 从Launcher打开应用程序窗口。 Read More默认风格下 Ubuntu 的 Firefox 浏览中文网页十分难看,字黑黑的不清楚,所以需要设定一下 Firefox 中的字体,幸好选择了中文语言包中系统中有文泉字体可用。网上找到了一篇 Firefox 中文字体的参考,如下:
1.编辑CSS文件,参考:
http://wiki.ubuntu.org.cn/Firefox_%E5%AD%97%E4%BD%93
(声明:本链接内容更适用于,在Firefox首选项中无法设定中文字体的情况!)
2.运行Firefox3.6.13
3.依次选择 Edit \ Preferences \ Content \ Advanced
我的选择:
Fonts for : User Defined
Proportional: Sans Serif Size:18
Serif: WenQuanYi Bitmap Song Read More
HTML5是近十年来Web开发标准最巨大的飞跃。和以前的版本不同,HTML5并非仅仅用来表示Web内容,它的新使命是将Web带入一个成熟的应用平台,在HTML5平台上,视频、音频、图象、动画以及同电脑的交互都被标准化。对于广大开发人员和设计者,究竟该如何入手HTML5及获取相关的国外最新资源。以下是广大HTML5技术爱好者学习和参考相关技术不可错过的12家外网,它们或是采用HTML5技术开发出的案例,或是HTML5相关的学习资源,供国内的开发人员参阅。 Read More前面两篇:Struts2 使用 XSLTResult 输出页面内容详解 和 Struts2 使用 xslt 结果类型如何把字符串直接作为 Document 内容 对 Struts2 如何使用 xslt 结果和怎么把字符串直接作为 Document 内容进行的讲解、研究和探讨。关于 Action 中的字符怎么直接作为 xslt 的内容已有一种方法,就是把 String 转换成 org.w3c.dom.Document 类型再送给 xslt 文件。
同时也发现 Struts2 使用了 org.apache.struts2.views.xslt.StringAdapter 了对字符串的处理,并提供了 parseStringAsXML 的开关选项(虽然是无从设置它的值),但即使把 parseStringAsXML 设置成了 true,送给 xslt 文件的内容也是被包裹上了 <result> 根节点,xslt 中不得不用 <xsl:template match="/result/你的根节点"> 来应用模板。
通过在上一篇 Struts2 使用 xslt 结果类型如何把字符串直接作为 Document 内容 里琢磨来琢磨去的探寻,着实又走了不少弯路,甚至是误入了歧途,但终究是找到了一个较好的办法来让 Action 直接送 String 表示的 Document 给 xslt 文件。那就是自定义 StringXSLTResult, Read More在互联网上,世界上最远的距离不是从中国到美国,而是从电信到网通。所以有时候为了速度,不得不为主机申请多条线路,一般是电信一个 IP、网通一个 IP,这就要求 DNS 解析同一域名时能智能的根据用户的网络类型解析成相应的 IP 上使用该线路。
例如,对于同一个主机有两个 IP,分别为 192.168.0.1 和 172.16.0.1,域名为 www.unmi.cc, 当然用不同的 IP 访问会走不同的路由线路的。希望电信用户进来访问 www.unmi.cc 是走 192.168.0.1,而网通用户访问 www.unmi.cc 时走 172.16.0.1,默认为 192.168.0.1。
所幸网络上有免费的几个双线智能域名解析系统可使用,下面列出:
1. DNSPod,还记得它曾遭受过暴风影音的殃吧,这也证明它用户多吗。面向国际的是 http://www.dnspod.com,它不支持双线解析。中国用户请用 http://www.dnspod.cn,支持双线解析,并且响应还很快的。它们间的用户是不共享的,可以说是完全独立的,分免费和 VIP 付费用户,看起来似乎很强大。 Read More在上一篇: Struts2 使用 XSLTResult 输出页面内容详解 中说到了,如果在 Action 中送给 xstl 的是一个字符串,例如 String user = "<user><name>Unmi</name></user>",那么 xslt result 输出的将是:
<result>
<user><name>Unmi</name></user>
</result>
而不我们期望的
<user>
<name>Unmi</name>
</user>
那么怎么才能做到这一点呢?在 XSLTResult 有 adapterFactory 以及相应的 setter/getter 方法,但它们是 protected,所以也无法定制自己的 AdapterFactory 来判断是字符串就作为 Document 的内容。 Read MoreStruts2 内置提供了 xslt 结果类型,实现类为 org.apache.struts2.views.xslt.XSLTResult,它让你方便的把获得的 XML 数据内容,或者是用 OGNL 能访问到的某个属性(像 ContenxtMap、Request 等中的属性),通过一个 xslt 文件转换成你想要的格式。前面这句听来不怎么明白,后面慢慢道来。
在 Struts2 的 struts-default.xml 中定义了 chain、dispatcher、freemarker、httpheader、redirect、redirectAction、stream、velocity、xslt 和 plainText 10 种类型的 Result;而在 Struts2 初期版本中的 jasper、chart、jsf 和 tiles 结果类型已移到相应的插件去实现了。
freemarker、velocity 和 xslt 可以很自由的使用各自的模板语言,velocity 渐渐淡出了我们的视野,那还剩下 freemarker 和 xslt。freemarker 要求实合并的变量是实体类型,满足了多数时候的需求,不过现在要说的 xslt 结果类型,向 xslt 文件送去的数据可以是实体类型,也可以是原生的 org.w3c.dom.Document 类型,当然到了 xslt 文件这一层处理的都是 Read More在 Eclipse WTP 3.1.1 中换成了使用 Tomcat 7,当然选择的仍然是 Tomcat 6,只是指向的目录是 Tomcat 7 的,一启动便立马出现错误:
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Exception in thread "main" Read More在前面一篇 Struts2 中 ModelDriven Action 的 setModel() 为何不起作用? 中发现最漂亮的办法就是修改 ModelDrivern 的 refreshModelBeforeResult 属性为 true,同时留下一个话题。这里接着,即如何覆盖内置拦截器的属性(参数) 值。
如果是自定的拦截器,则可以在 struts.xml 中的 <interceptor> 或 <interceptor-ref> 中用 <param name="paramName">paramValue</param> 来指定参数。但是对于 struts2 核心包内置的或是第三方的拦截器的参数需要进行重新设置该如何呢?
比如在 struts2 包中的 struts-default.xml 中定义很多拦截器,通常我们使用的是其中组织好的 defaultStack 拦截器栈,看 struts-default.xml 中关键几行配置: Read More