前言:
初学SSH,有不妥之处还请各位大侠见谅。
刚接触SSH,最近准备在尝试着开发一套小型办公系统,设计程序之初定义了一套系统的全局配置文件
(注:配置文件主要是一些公共的配置信息,比如程序名称,是否启用验证码等),个人想法是要在系统中任何地方都能很容易的引用到这全局配置文件的信息。
以前用Servlet做开发的时候我可以在init()方法中对配置信息进行一系列的初始化操作,但现在因为使用了SSH所以不能这么做了,所以我只能重写ActionServlet以达到对配置信息的初始化工作。
/**
* 本类重写了Struts的ActionServlet
* 用于加载程序的全局配置信息
*
* @author 黄磊
*
*/
public class ActionServlet extends org.apache.struts.action.ActionServlet {
private static final long serialVersionUID = 6768653293592464041L;
private static final Logger logger = Logger.getLogger(ActionServlet.class);
/**
* 系统全局配置信息
*/
protected static Config config;
@Override
public void init() throws ServletException {
logger.info("开始初始化...");
super.init();
if (config == null) {
String appPath = getServletContext().getRealPath("/");
ConfigLoader.startSystemglobals(appPath);
config = ConfigLoader.getConfig();
}
logger.info("初始化成功...");
}
@Override
protected void process(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
// 保存全局配置信息到request中
request.setAttribute("config", config);
super.process(request, response);
}
}
我重写了ActionServlet的init()方法用于加载系统配置文件的信息(
ConfigLoader是我自己写的加载配置的类),然后再重写process()方法把配置信息保存到request中,这样就能很方便的在页面通过EL取出配置信息了
重写之后我们还需要做的是让Struts使用这个重写的类,替换WEB.XML中的原Struts类为我们自己的类即可