没有web.xml的Wicket;纯java配置
我需要一种不用web.xml来配置Wicket的方法 我试过几篇博文,但还是有问题 例如: 及 找不到有效的解决方案没有web.xml的Wicket;纯java配置,java,wicket,config,web.xml,Java,Wicket,Config,Web.xml,我需要一种不用web.xml来配置Wicket的方法 我试过几篇博文,但还是有问题 例如: 及 找不到有效的解决方案 public class WicketApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationCon
public class WicketApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringConfig.class);
servletContext.addListener(new ContextLoaderListener(ctx));
WicketFilter filter = new WicketFilter(new WicketApplication());
filter.setFilterPath("");
servletContext.addFilter("wicketFilter", filter).addMappingForUrlPatterns(null, false, "/*");
servletContext.addServlet("/*", DefaultServlet.class);
}
我创建了一个只有一个主页的简单项目,按照上面提到的链接中的步骤进行操作,但没有取得任何成功
我尝试了jetty,但得到了一个HTTP错误404。我可以向您展示类似web.xml的代码。这是一个基于spring的解决方案
public class WicketApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringConfig.class);
servletContext.addListener(new ContextLoaderListener(ctx));
WicketFilter filter = new WicketFilter(new WicketApplication());
filter.setFilterPath("");
servletContext.addFilter("wicketFilter", filter).addMappingForUrlPatterns(null, false, "/*");
servletContext.addServlet("/*", DefaultServlet.class);
}
}
这应该可以做到,但服务器无法识别。它看起来很简单,就像普通web.xml中的步骤一样,但不起作用
主页上只有一个挂载:
mountPage("/testing", HomePage.class);
正在尝试访问:
https://localhost:8443/testing
结果是:
HTTP ERROR 404 Problem accessing /testing. Reason: Not Found
有人能帮忙吗
也许有人有一个没有丑陋的web.xml的极简工作项目?或者只是一些建议。我看到一些代码在没有web.xml的情况下启动jetty:
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8000); //or any other port you need
server.setConnectors(new Connector[]
{ connector });
WebAppContext web = new WebAppContext();
web.setContextPath("/"); //assuming you want / as a context like your sample
web.setWar("src/webapp"); //check that it matches your webapp directory.
server.addHandler(web);
server.start();
server.join();
这样,假设您使用Jetty,您可以根据需要在上下文中添加任意数量的战争。您可以向WebAppContext对象(web)添加更多内容来控制过滤器和其他映射。我看到一些代码以这种方式启动jetty而不使用web.xml:
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8000); //or any other port you need
server.setConnectors(new Connector[]
{ connector });
WebAppContext web = new WebAppContext();
web.setContextPath("/"); //assuming you want / as a context like your sample
web.setWar("src/webapp"); //check that it matches your webapp directory.
server.addHandler(web);
server.start();
server.join();
这样,假设您使用Jetty,您可以根据需要在上下文中添加任意数量的战争。您可以向WebAppContext对象(web)添加更多内容,以控制过滤器和其他映射。以下代码启动了一个jetty,它支持不带web.xml的wicket
import org.apache.wicket.protocol.http.WicketFilter;
import org.apache.wicket.protocol.http.WicketServlet;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.bio.SocketConnector;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
public class Main {
public static void main(String[] args) {
// Object that holds, and configures the WicketServlet.
ServletHolder servletHolder =
new ServletHolder(new WicketServlet());
servletHolder.setInitParameter(
"applicationClassName",
"com.javaeenotes.ExampleWicketApplication");
servletHolder.setInitParameter(
WicketFilter.FILTER_MAPPING_PARAM, "/*");
servletHolder.setInitOrder(1);
// Web context configuration.
WebAppContext context = new WebAppContext();
context.addServlet(servletHolder, "/*");
context.setResourceBase("."); // Web root directory.
// The HTTP-server on port 8080.
Server server = new Server();
SocketConnector connector = new SocketConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
server.setHandler(context);
try {
// Start HTTP-server.
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是一个解决方案
正如我之前所说的,这现在不适合我,但适合这个主题:它是一个可以启动wicket应用程序的jetty,不需要web.xml配置
所以,我将这个答案标记为已接受,并可能开始另一个关于wicket处理的Spring方式的问题。。。无论如何,还是要感谢您下面的代码启动了一个jetty,它支持没有web.xml的wicket
import org.apache.wicket.protocol.http.WicketFilter;
import org.apache.wicket.protocol.http.WicketServlet;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.bio.SocketConnector;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
public class Main {
public static void main(String[] args) {
// Object that holds, and configures the WicketServlet.
ServletHolder servletHolder =
new ServletHolder(new WicketServlet());
servletHolder.setInitParameter(
"applicationClassName",
"com.javaeenotes.ExampleWicketApplication");
servletHolder.setInitParameter(
WicketFilter.FILTER_MAPPING_PARAM, "/*");
servletHolder.setInitOrder(1);
// Web context configuration.
WebAppContext context = new WebAppContext();
context.addServlet(servletHolder, "/*");
context.setResourceBase("."); // Web root directory.
// The HTTP-server on port 8080.
Server server = new Server();
SocketConnector connector = new SocketConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
server.setHandler(context);
try {
// Start HTTP-server.
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是一个解决方案
正如我之前所说的,这现在不适合我,但适合这个主题:它是一个可以启动wicket应用程序的jetty,不需要web.xml配置
所以,我将这个答案标记为已接受,并可能开始另一个关于wicket处理的Spring方式的问题。。。无论如何谢谢欢迎来到Stack Overflow。除了问我们,你能给我们看看吗?没有看到我的链接吗?我试过这些方法。(创建了一个只有一个主页的新项目,按照说明操作,无法查看页面)当您尝试从链接中获取解决方案时,您遇到了什么问题?出于好奇:你为什么要放弃web.xml?请告诉我们你到底尝试了什么。同时告诉我们什么不适合你。另外请注意,本网站不鼓励有链接的问题(详细解释了原因)。我无法访问任何页面。我有一个404。我想去掉web.xml,因为它是我实际从事的项目的一项要求。我尝试将Wicket集成到这个项目中,并摆脱丑陋的jsp。欢迎使用堆栈溢出。除了问我们,你能给我们看看吗?没有看到我的链接吗?我试过这些方法。(创建了一个只有一个主页的新项目,按照说明操作,无法查看页面)当您尝试从链接中获取解决方案时,您遇到了什么问题?出于好奇:你为什么要放弃web.xml?请告诉我们你到底尝试了什么。同时告诉我们什么不适合你。另外请注意,本网站不鼓励有链接的问题(详细解释了原因)。我无法访问任何页面。我有一个404。我想去掉web.xml,因为它是我实际从事的项目的一项要求。我试图将Wicket集成到这个项目中,并摆脱丑陋的jsp。这是一个开始,是的!我发布了另一个答案,可以用于Wicket。这是一个开始,是的!我发布了另一个答案,可供Wicket使用。