struts2 自定义tiles.xml文件路径
in java on javascript web 前端, web - Hits()
struts2+tiles时,tiles.xml默认是放在文件夹/web-inf/下面,使用ServletContext的方法查找,一般不需要改动,但是遇到BT的要求需要自定义这个titles的路径查找方式时,可以使用如下方法:
1:在web.xml里面配置自定义监听器:
Xml代码
- <listener>
- <listener-class>demo.MyStrutsTilesListener</listener-class>
- </listener>
2:实现demo.MyStrutsTilesListener这个类,它继承自org.apache.struts2.tiles.StrutsTilesListener,重载方法
Java代码
- protected ServletContext decorate(ServletContext context)
- {
- Map<String, String> INIT = new HashMap<String, String>();
- INIT.put(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM, StrutsTilesContainerFactory.class.getName());
- ServletContext servletContext = new MyTilesContext(context,INIT);
- return servletContext;
- }
3:实现MyTilesContext:
Java代码
- public class CyberTilesContext extends ConfiguredServletContext
- {
- public static final String PREFIX = "file:///";
- public CyberTilesContext(ServletContext context, Map<String, String> initParameters)
- {
- super(context, initParameters);
- }
- @Override
- public URL getResource(String string) throws MalformedURLException
- {
- if (!string.startsWith(PREFIX))
- {
- return super.getResource(string);
- }
- String path = string.substring(PREFIX.length());
- File file = new File(path);
- if (!file.exists())
- {
- throw new RuntimeException("file " + path + " not founded.");
- }
- return file.toURI().toURL();
- }
- }
通过重载getResource方法可以定制自己所需要的查找tiles.xml的方法,上面的例子就是实现以file:///开头查找绝对路径下的tiles.xml。
PS:很不喜欢struts2,对于我来讲,它不适合快速开发,它也不适合大型网站。