在web系统开发中,常常要使用到一些共享数据:如:从xml文件中读取的内容需要共享.
实现:
1:在web.xml中配置启动时,加载serlvet
<!-- 初始化Servlet -->
<servlet>
<servlet-name>init</servlet-name>
<servlet-class>com.servlet.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
2:InitServlet的实现
public class InitServlet extends HttpServlet
{
@Override
private static String title;
public void init() throws ServletException
{
.....
//在这里加载需要共享的内容,如加载xml中的内容
//读取类路径下的helpDoc.properties文件
String helpConfigPath = getClassPath(this.getClass())
+ "helpDoc.properties";
Properties helpDocProps = readProperties(helpConfigPath);
title = helpDocProps.getProperty("title")
}
@Override
public void destroy()
{
super.destroy();
}
}
3:一些工具类的实现
1):读取类路径下的文件:
/**
*
* @param c
* @return
* @throws UnsupportedEncodingException
*/
@SuppressWarnings("unchecked")
public String getClassPath(Class c) throws UnsupportedEncodingException
{
String contextPath = getServletContext().getRealPath("");
String rtnPath = contextPath + File.separator + "WEB-INF"
+ File.separator + "classes" + File.separator;
this.logFacility.log(Level.INFO, "class Path:[" + rtnPath + "]");
return rtnPath;
}
2):读取properties文件
/**
* 读取Properties文件
*/
public static Properties readProperties(String file)
{
InputStream in = null;
Properties prop = null;
try
{
in = new BufferedInputStream(new FileInputStream(file));
prop = new Properties();
prop.load(in);
}
catch (FileNotFoundException e1)
{
throw new RuntimeException(file + " is not exist!");
}
catch (IOException e)
{
throw new RuntimeException("Read file " + file + " error!");
}
finally
{
try
{
if (null != in)
{
in.close();
}
}
catch (IOException e)
{
in = null;
throw new RuntimeException("Close IO error!");
}
}
return prop;
}
关于使用servlet来共享数据的问题(系统起动就加载servlet)
猜你喜欢
转载自wawa129.iteye.com/blog/1237294
今日推荐
周排行