【问题标题】:Wicket vs. main-method (how Wicket works?)Wicket 与主方法(Wicket 是如何工作的?)
【发布时间】:2012-12-09 13:49:05
【问题描述】:

我是 Wicket 的新手,想了解这个框架的工作原理。

在普通的 Java 应用程序中,程序计数器从 main 方法开始。为了从头了解应用程序,我通常将eclipse断点放在该方法的开头,然后一步一步地进行。

我的问题是,当 Wicket 应用程序启动时,首先会发生什么?如何在某些 Wicket 应用程序中遵循序列?

【问题讨论】:

  • 没有单一入口点,因此跟踪发生的情况和时间要困难得多,您必须依赖文档(已由 Don Roby 链接)以及多个断点。但是你会发现,一旦你了解了一般设置,你就不需要从一开始就开始调试了。

标签: java wicket main


【解决方案1】:

Wicket 是一个 Java Web 应用程序框架,因此首先您必须了解一点。首先,请查看the Java EE tutorial

在 Web 应用程序服务器的某个位置, 实际上是一个在服务器启动时运行的 main 方法。但是与您使用 Wicket 编写的 Web 应用程序的连接非常松散。

当您编写和构建一个 wicket 应用程序时,您要做的一件事是创建一个 web.xml 文件,该文件向 Web 应用程序容器描述如何加载您的应用程序。这通常包括对WicketFilter 的引用和对您应用程序的WebApplication 子类的引用。

WicketFilter 类拦截请求并将它们发送到您的应用程序。

有关此过程的更详细说明,请参见 wiki 页面 LifeCycle of a Wicket Application

【讨论】:

    【解决方案2】:

    作为 Apache Wicket 的原始创建者,我建议您尽可能远离 Java EE。 Wicket 背后的驱动理念是将面向对象的编程引入网络。还有其他框架可以做到这一点,但 Wicket 非常擅长。因此,Wicket 如何使用 Servlet API 创建这种抽象的所有这些血腥细节确实是您无需担心的。如果您只是好奇并且真的想看看会发生什么,请在 WicketServlet 和/或 WicketFilter 中设置一个断点并单步执行。

    现在有很多关于 Wicket 的书:

    https://wicket.apache.org/learn/books/index.html

    此外,网站上的参考指南非常完整:

    https://ci.apache.org/projects/wicket/guide/9.x/single.html

    请特别查看“请求处理的底层”部分以及“组件生命周期”部分:

    https://ci.apache.org/projects/wicket/guide/9.x/single.html#_under_the_hood_of_the_request_processing https://ci.apache.org/projects/wicket/guide/9.x/single.html#_components_lifecycle

    这应该让您对所发生的事情有了很好的了解。但同样,你真的不需要知道任何这些东西就可以很好地利用这个框架。

    -- 乔恩

    【讨论】:

      【解决方案3】:

      您的 Wicket 应用依赖于您的 web.xml 文件的配置。话虽如此,您需要在该 web.xml 文件中指定 Wicket 过滤器,并将您自己的代表 Wicket 入口点的类传递给它们,该类 (WicketApplication) 必须从 WebApplication 类扩展。

      <filter>
          <filter-name>wicket.quickstar-wicket-example</filter-name>
          <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
          <init-param>
              <param-name>applicationClassName</param-name>
              <param-value>com.quickstar.wicket.example.WicketApplication</param-value>
          </init-param>
      </filter>
      

      在该类 (WicketApplication) 中,您需要重写某些方法:

      @Override
      public Class<? extends WebPage> getHomePage()
      {
          return HomePage.class;
      }
      

      您的HomePage.class 将是当您点击页面的 URL 时将作为主页返回的网页。除了HomePage.java,您还必须将 HomePage.html 放在同一个包中,处于同一级别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 2020-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多