我是 Wicket 的新手,想了解这个框架是如何工作的。
在普通的 Java 应用程序中,程序计数器从 main 方法开始。为了从头了解应用程序,我通常将eclipse断点放在该方法的开头,然后一步一步地进行。
我的问题是,当 Wicket 应用程序启动时,首先会发生什么?如何遵循某些 Wicket 应用程序中的序列?
Wicket 是一个 Java Web 应用程序框架,所以首先你必须了解一下。首先,请查看Java EE 教程。
在 Web 应用程序服务器的某个地方,实际上有一个 main 方法,它在服务器启动时运行。但是与使用 Wicket 编写的 Web 应用程序的连接非常松散。
当您编写和构建一个 wicket 应用程序时,您要做的一件事是创建一个 web.xml 文件,该文件向 Web 应用程序容器描述如何加载您的应用程序。这通常包括对WicketFilter应用程序的WebApplication子类的引用和引用。
该类WicketFilter拦截请求并将它们发送到您的应用程序。
此过程的更详细描述在Wicket 应用程序的 wiki 页面 LifeCycle 上。
作为 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
这应该让你对所发生的事情有一个很好的了解。但同样,你真的不需要知道任何这些东西就可以很好地利用这个框架。
——乔恩
您的 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;
}
当您点击页面的 URL 时,您HomePage.class将是作为主页返回的网页。除了HomePage.java,您还必须将 HomePage.html 放在同一个包中,处于同一级别。