我是 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 放在同一个包中,处于同一级别。