java - 如何构建两个 Wicket 应用程序

标签 java web-applications wicket web.xml

它是关于以下链接中的 helloworld 示例:

http://wicket.apache.org/learn/examples/helloworld.html

helloworld 工作正常,我可以使用 url 调用应用程序:http://localhost:8080/helloworld/。现在我想扩展第二个应用程序 hellowolrd2 的示例,这样当我用浏览器调用 http://localhost:8080/helloworld2/ 时,第二个页面 helloworld2 出现(类似于 hell 世界)。假设我有文件 HelloWorld2.javaHelloWorld2.html。我应该在文件 web.xml 中更改什么?

最佳答案

您实际上不需要修改 web.xml 中的任何内容.那里定义的唯一相关设置是 <filter-mapping>元素

<filter-mapping>
    <filter-name>HelloWorldApplication</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

,它将对应用程序(其上下文根)发出的所有请求(/*)映射到 Wicket 过滤器(将其视为 servlet),它将处理所有 Wicket 请求并将它们定向到适当的方法(组件构造函数、事件处理程序方法等)。

在示例中,您会看到 HelloWorld请求时的页面 http://localhost:8080/helloworld/因为HelloWorld是在 WebApplication 中定义的主页. helloworld是 webapp 的上下文根,因此 Wicket 会自动将您带到 WebApplication#getHomePage() 中定义的页面:

@Override
public Class getHomePage() {
    return HelloWorld.class;
}

注意 helloworld这是应用程序的上下文根。所以除非你想在 getHomePage() 中定义一些逻辑根据某些标准返回一个或另一个类(不要真的认为这是你所追求的),它将有效地服务 HelloWorld .

现在,解决您的问题,使用 Wicket,您可以使用 WebApplication#mountPage() 将(可添加书签的)页面挂载到 URL。 :

public class HelloWorldApplication extends WebApplication {
    @Override
    protected void init() {
        mountPage("/helloworld", HelloWorld.class);
        mountPage("/helloworld2", HelloWorld2.class);
    }

    @Override
    public Class getHomePage() {
        return HelloWorld.class;
    }
}

这将使 http://localhost:8080/helloworld/服务 HelloWorld类,作为主页。但也会为它提供请求 http://localhost:8080/helloworld/helloworld .请求http://localhost:8080/helloworld/helloworld2将有效地服务 HelloWorld2 .

或者,如果你真的想要 http://localhost:8080/helloworld2/服务HelloWorld2 ,你应该部署另一个 webapp,当然有它自己的 web.xml , 以及上下文根 helloworld2 .

关于java - 如何构建两个 Wicket 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914214/

相关文章:

java - 自动调整文本大小以适应按钮 Android

c# - 使用 C# 将时间转换为定时器间隔

java - 有谁知道 Wicket Web 开发的一些好的资源?

java - Wicket 口更换 "only on component added to parent"

java - 如何更改 map 中的 map 内的值?

java - 什么是帮助调试 Java 的有效方法/工具?

java - 如果将 google-play-services.jar lib 添加到我在 Eclipse 中的 helloworld android 项目中,Android 编译会卡住

c# - 如何查看从 IEnumerable 返回的对象?

python - 生成 PDF 文件的 Web 服务器

java - Wicket 口出现问题