Struts 1.x
提供一个新的 PlugIn
接口,可以动态增减 ActionServlet
的功能。如果需要在应用启动或关闭时完成某些操作,可以创建自己的 PlugIn
类。
1. 实现自己的 PlugIn
类
实现 PlugIn
接口必须实现如下两个方法。
- void destroy();
- void init(ActionServlet servlet,ModuleConfig config) throws ServletException;
应用启动时调用 init
方法,而应用关闭时则调用 destroy
方法。
e.g. SessionFactoryPlugIn
的实现类:
public class SessionFactoryPlugIn implements PlugIn {
//Hibernate的配置文件
private String configFile;
//应用关闭时,销毁资源
public void destroy() {
System.out.println("系统销毁SeesionFactory");
}
//应用启动时,完成SessionFactory的初始化
public void init(ActionServlet actionServlet,ModuleConfig config)
throws ServletException {
System.out.println("系统以 " + getConfigFile() + " 为配置文件初始化SessionFactory");
}
//获取PlugIn配置文件的方法
public String getConfigFile() {
return configFile;
}
//负责加载PlugIn配置属性的方法
public void SetConfigFile(String configFile) {
this.configFile = configFile;
}
}
在上面的 PlugIn
中,并没有真正初始化 SessionFactory
,仅在控制台打印出字符串来标识创建动作。另外,还提供了configFile
属性的 setter
和 getter
方法,这两个方法负责访问 PlugIn
元素的 configFile
属性。
2.
struts-config.xml 文件的配置
为了让 ActionServlet
知道要“
挂上”
这个 PlugIn
,您须如下设定:
<plug-in className="cn.janwer.xxxPlugIn">
<set-property property="xxx" value="abcde"/>
</plugin>
像Tiles、Validator
等都是利用这种方式来扩充 Struts
的功能。
3. 实践应用
在下面示例中,系统使用 Hibernate
作为持久层,在启动时创建 SessionFactory
实例,并将该 SessionFactory
存在 Application
,在应用关闭时销毁 SessionFactory
。
如下在启动时加载权限配置信息:
public class SqePlugIn implements PlugIn {
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
Cache cache = CacheFactory.getCache();
// 得到SessionFactory对象的实例,用于初始化Hibernate
SessionFactory sf = HibernateUtil.getSessionFactory();
try {
// 开始一个新的事物
sf.getCurrentSession().beginTransaction();
// 得到操作用户角色的DAO
RoleDAO dao = DAOFactory.getDao(RoleDAO.class);
// 得到所有的用户角色对象
List<Role> roles = dao.findAll();
// 缓存所有的用户角色信息
for (Role role : roles) {
cache.put(role.getName(), role);
}
// 关闭当前的事物
sf.getCurrentSession().getTransaction().commit();
}
catch (Throwable ex) {
ex.printStackTrace();
sf.getCurrentSession().getTransaction().rollback();
}
}
/**
* 销毁SessionFactory的实例。
*/
public void destroy() {
HibernateUtil.shutdown();
}
}
下面是配置信息:
<!-- 加载权限校验配置信息类 -->
<plug-in className="cn.janwer.struts.SqePlugIn"/>
如果您在某个 Action
中必须使用到“
挂上”
的资源,您可以由 Action
的 Field
成员 servlet
(ActionServlet
实例)
来取得 ServletContext
,并得到所须的资源,例如:
public ActionForward execute(ActionMapping mapping,
Actionform form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
.......
ServletContext context = servlet.getServletContext();
SomeService service =
(SomeService) context.getAttribute("service");
......
}
分享到:
相关推荐
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
Pydroid repository plugin.xapk Pydroid repository plugin.xapkPydroid repository plugin.xapk
struts2-json-plugin-2.2.3.1能用的包
tk.eclipse.plugin.struts_2.0.6.jar tk.eclipse.plugin.struts_2.0.6.jar
Struts2.0.11.1所有JAR包
core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-plugin-...
最新struts2-struts1-plugin-2.1.8.1.jar
本文档资料适合java struts2 ajax dojo开发人员使用.
1、升级所需要的jar(见附件): freemarker-2.3.22.jar ognl-3.0.19.jar struts2-convention-plugin-2.3.32.jar struts2-core-2.3.32.jar struts2-spring-plugin-2.3.32.jar xwork-core-2.3.32.jar 2、删除...
struts2 spring plugin 2.3.32,用于漏洞修复
Struts2升级到2.5.30,问题解决及过程记录, 文章详见:https://blog.csdn.net/sinat_36743893/article/details/124582101
Struts2.5.10.1的全部jar包
tk.eclipse.plugin.htmleditor_2.1.0
struts2-convention-plugin-2.3.15.1.jar
struts2-dojo-plugin-2.3.15.3.jar.zip
struts2-ssl-plugin-1.2.1.jar
struts2-struts1-plugin-2.1.6.jar
Struts 2.3.28.1 官方发布的最新版本
包中包含strut2示例,struts2所需jar包,以及配置文件,struts2包中还包含了开发文档
struts2-jquery-plugin-3.1.0.jar