首先是我的软件堆栈:
- 日食 4.2
- 雄猫 7.0.37
- 带有 m2e 插件的 Maven
- javax.servlet 3.0.1
- Spring WebMVC 和 Spring Web 3.2.1
我正在使用没有 web.xml的 servlet 3 。
我做了什么:
- Eclipse -> 新的 Maven 项目
- 编辑 pom.xml:添加 Spring 和 javax.servlet
- Eclipse -> 项目属性 -> 项目构面 -> 添加动态 Web 构面
- Eclipse -> 项目属性 -> 部署程序集 -> 删除 WebContent 并添加 /src/main/webapp
- 添加
javax.servlet.ServletContainerInitializer
到 /src/main/webapp/META-INF/services 并放入实现的完全限定类名中WebApplicationInitializer
目前我的项目包含大约 7 个文件(3x .java、1x .jsp、1x .html、1x .pom、1x javax.servlet.ServletContainerInitializer)
什么有效:
通过 Maven 编译和打包,然后简单地将 .war 部署在独立的 Tomcat 上。
http://127.0.0.1/MyApp/
显示 index.htmlhttp://127.0.0.1/MyApp/hello
显示 hello.jsp
什么不起作用:
如果我现在尝试通过Run -> Run on Server
. 然后我选择我的 Tomcat 目录等... servlet ( /hello
) 只给出 404。但 index.html 有效。
3 个 Java 文件:
初始化程序.java:
public class Initializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(WebAppConfig.class);
Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}
}
WebAppConfig.java:
@Configuration
@ComponentScan("myapp.server")
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
FooController.java:
@Controller
public class FooController {
@RequestMapping("/hello")
public String helloWorld(Model model) {
model.addAttribute("wisdom", "Goodbye XML");
return "hello";
}
}
如果您需要更多其他信息,请告诉我。
谢谢!!
编辑:如果它是通过 Eclipse 启动的,我在哪里可以找到 Tomcat 的日志文件?
输出:
Eclipse 控制台(这一切都是在启动 Tomcat 之后发生的,即使我调用一些 URL,例如or ,它也不会改变): http: //pastebin.com/gGn0j48Thttp://localhost:8080/
http://localhost:8080/MyApp/
Tomcat 日志似乎保存在.metadata/.plugins/org.eclipse.wst.server.core/tmp0/logs/
. 只有一个文件localhost_access_log.2013-02-20.txt
,输出看起来并不有趣: http: //pastebin.com/QmD4wPmA
现在我已经这样做了catalina.out
:https ://stackoverflow.com/a/5045247/1321564
这是重新启动 Tomcat 并尝试一些 URL 后的输出:文件保持为空......?!
我还意识到 Tomcat 上的以下目录是空的:wtpwebapps/MyApp/WEB-INF/lib/
. 那里不应该有一些Spring库吗?!