Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14433902
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:43:22

下载本文示例代码
  简介:  我看到很多项目中,开发者实现了自己的MVC框架,并不是因为他们想做同Struts根本不同的东西,而是因为他们并没有意识到如何扩展Struts。开发自己的MVC框架可以获得全部的控制权,但是这也意味着需要很多资源来实现它(人力物力),在紧张的日程安排下,有时候这是不可能的。   Struts不仅仅是一个强大的框架,同时它也是可扩展的。你可以以三种方式来扩展Struts。  1、PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己的PlugIn类。  2、RequestProcessor:如果你想在请求被处理的过程中某个时刻做一些业务逻辑的话,那么创建你自己的RequestProcessor类。比如说,在每次请求执行之前,你可以扩展RequestProcessor来检查用户是否登陆了以及他是否有权限去执行某个特定的action。  3、ActionServlet:如果你想在application startup和shutdown的时候以及请求被处理的时候做某些业务逻辑,你也可以扩张ActionServlet类。不过你应当在PlugIn和RequestProcessor都不能解决你的需求的时候来使用ActionServlet。  在这篇文章中,我们将使用一个Struts应用的示例来示范如何使用这三种方式来扩展Struts。示例程序的代码可以从下载。两个扩展Struts成功的范例是Struts自身的Validation和Tiles框架。  我们假设你已经比较熟悉Struts框架并且知道如何使用它创建一个简单的应用。如果你想知道更多关于Struts的内容,请参考官方主页。  PlugIn   PlugIn是一个接口,你可以创建一个实现该接口的类,当application startup或shutdown的时候做些事情。  比方说,我创建了一个使用Hibernate作为持久层的web应用,我想当应用启动的时候就初始化Hibernate,这样子当我的web应用受到第一个请求的时候,Hibernate就已经是配置好的并且可用的。同时我们想当application关闭的时候关闭Hibernate。我们可以用一个Hibernate PlugIn来实现这个需求,通过如下的两步:  1、创建一个类实现了PlugIn接口: public class HibernatePlugIn implements PlugIn{ private String configFile; // This method will be called at application shutdown time public void destroy() {  System.out.println("Entering HibernatePlugIn.destroy()");  //Put hibernate cleanup code here  System.out.println("Exiting HibernatePlugIn.destroy()"); } //This method will be called at application startup time public void init(ActionServlet actionServlet, ModuleConfig config)  throws ServletException {   System.out.println("Entering HibernatePlugIn.init()");   System.out.println("value of init parameter "    getConfigFile());   System.out.println("Exiting HibernatePlugIn.init()");  } public String getConfigFile() {  return name; } public void setConfigFile(String string) {  configFile = string; }}  实现PlugIn接口的类必须完成两个方法:init()和destroy()。当application startup的时候init()方法被调用,当shutdown的时候destroy()方法被调用。Struts还允许给你的PlugIn类传递初始化参数。为了传递参数,你必须在PlugIn类中为每一个参数创建JavaBean式的setter方法。在我们的HibernatePlugIn类中,我会把configFile的name作为参数传进去,而不是硬编码到程序中。  2、在struts-config.xml中添加如下的代码来通告Struts有新的PlugIn: <struts-config> ... <!-- Message Resources --> <message-resources parameter= "sample1.resources.ApplicationResources"/> <!-- Declare your plugins --> <plug-in className="com.sample.util.HibernatePlugIn">  <set-property property="configFile" value="/hibernate.cfg.xml"/> </plug-in></struts-config>  属性className是实现了PlugIn接口的类的全限定名。对于每一个初始化参数,可以使用<set-property>元素传递参数。在我们的例子中,我要把config文件的名字传进去,所以使用了一个带有配置文件路径的<set-property>。  Struts的Tiles和Validator框架都使用PlugIn来读取配置文件进行初始化。另外两件PlugIn可以帮你做到的事情是:  ·如果你的application依赖于某些配置文件,那么你可以在PlugIn类中检查它们是否可用,如果不可用的话抛出一个ServletException,这样就可以使ActionServlet变为不可用。  ·PlugIn接口的init()方法是你可以改变ModuleConfig的最后机会,ModuleConfig是一组静态配置信息的集合,用来描述基于Struts模块。Struts将会在所有PlugIn处理完后释放ModuleConfig。共3页。 1 2 3 :   简介:  我看到很多项目中,开发者实现了自己的MVC框架,并不是因为他们想做同Struts根本不同的东西,而是因为他们并没有意识到如何扩展Struts。开发自己的MVC框架可以获得全部的控制权,但是这也意味着需要很多资源来实现它(人力物力),在紧张的日程安排下,有时候这是不可能的。   Struts不仅仅是一个强大的框架,同时它也是可扩展的。你可以以三种方式来扩展Struts。  1、PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己的PlugIn类。  2、RequestProcessor:如果你想在请求被处理的过程中某个时刻做一些业务逻辑的话,那么创建你自己的RequestProcessor类。比如说,在每次请求执行之前,你可以扩展RequestProcessor来检查用户是否登陆了以及他是否有权限去执行某个特定的action。  3、ActionServlet:如果你想在application startup和shutdown的时候以及请求被处理的时候做某些业务逻辑,你也可以扩张ActionServlet类。不过你应当在PlugIn和RequestProcessor都不能解决你的需求的时候来使用ActionServlet。  在这篇文章中,我们将使用一个Struts应用的示例来示范如何使用这三种方式来扩展Struts。示例程序的代码可以从下载。两个扩展Struts成功的范例是Struts自身的Validation和Tiles框架。  我们假设你已经比较熟悉Struts框架并且知道如何使用它创建一个简单的应用。如果你想知道更多关于Struts的内容,请参考官方主页。  PlugIn   PlugIn是一个接口,你可以创建一个实现该接口的类,当application startup或shutdown的时候做些事情。  比方说,我创建了一个使用Hibernate作为持久层的web应用,我想当应用启动的时候就初始化Hibernate,这样子当我的web应用受到第一个请求的时候,Hibernate就已经是配置好的并且可用的。同时我们想当application关闭的时候关闭Hibernate。我们可以用一个Hibernate PlugIn来实现这个需求,通过如下的两步:  1、创建一个类实现了PlugIn接口: public class HibernatePlugIn implements PlugIn{ private String configFile; // This method will be called at application shutdown time public void destroy() {  System.out.println("Entering HibernatePlugIn.destroy()");  //Put hibernate cleanup code here  System.out.println("Exiting HibernatePlugIn.destroy()"); } //This method will be called at application startup time public void init(ActionServlet actionServlet, ModuleConfig config)  throws ServletException {   System.out.println("Entering HibernatePlugIn.init()");   System.out.println("value of init parameter "    getConfigFile());   System.out.println("Exiting HibernatePlugIn.init()");  } public String getConfigFile() {  return name; } public void setConfigFile(String string) {  configFile = string; }}  实现PlugIn接口的类必须完成两个方法:init()和destroy()。当application startup的时候init()方法被调用,当shutdown的时候destroy()方法被调用。Struts还允许给你的PlugIn类传递初始化参数。为了传递参数,你必须在PlugIn类中为每一个参数创建JavaBean式的setter方法。在我们的HibernatePlugIn类中,我会把configFile的name作为参数传进去,而不是硬编码到程序中。  2、在struts-config.xml中添加如下的代码来通告Struts有新的PlugIn: <struts-config> ... <!-- Message Resources --> <message-resources parameter= "sample1.resources.ApplicationResources"/> <!-- Declare your plugins --> <plug-in className="com.sample.util.HibernatePlugIn">  <set-property property="configFile" value="/hibernate.cfg.xml"/> </plug-in></struts-config>  属性className是实现了PlugIn接口的类的全限定名。对于每一个初始化参数,可以使用<set-property>元素传递参数。在我们的例子中,我要把config文件的名字传进去,所以使用了一个带有配置文件路径的<set-property>。  Struts的Tiles和Validator框架都使用PlugIn来读取配置文件进行初始化。另外两件PlugIn可以帮你做到的事情是:  ·如果你的application依赖于某些配置文件,那么你可以在PlugIn类中检查它们是否可用,如果不可用的话抛出一个ServletException,这样就可以使ActionServlet变为不可用。  ·PlugIn接口的init()方法是你可以改变ModuleConfig的最后机会,ModuleConfig是一组静态配置信息的集合,用来描述基于Struts模块。Struts将会在所有PlugIn处理完后释放ModuleConfig。共3页。 1 2 3 : 下载本文示例代码


Hibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展StrutsHibernate Spring Struts扩展Struts
阅读(100) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~