最初の私のソフトウェアスタック:
- Eclipse 4.2
- Tomcat 7.0.37
- m2eプラグインを使用したMaven
- javax.servlet 3.0.1
- SpringWebMVCおよびSpringWeb3.2.1
web.xmlなしでサーブレット3を使用しています。
私がしたこと:
- Eclipse-> New Maven Project
- 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に.warをデプロイするだけです。
http://127.0.0.1/MyApp/
index.htmlを表示しますhttp://127.0.0.1/MyApp/hello
hello.jspを表示します
動作しないもの:
今、Eclipseを介して使用しようとするとRun -> Run on Server
。次に、Tomcatディレクトリなどを選択します...サーブレット(/hello
)は404を返します。しかし、index.htmlは機能します。
3つのJavaファイル:
Initializer.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";
}
}
さらに追加情報が必要な場合は、教えてください。
ありがとうございました!!
編集:TomcatがEclipse経由で起動された場合、Tomcatのログファイルはどこにありますか?
出力:
Eclipseコンソール(これはすべてTomcatの起動後に発生し、またはのようなURLを呼び出しても変更されません):http://pastebin.com/gGn0j48Thttp://localhost:8080/
http://localhost:8080/MyApp/
Tomcatログはに保存されているようです.metadata/.plugins/org.eclipse.wst.server.core/tmp0/logs/
。ファイルが1つだけ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ライブラリがあるべきではありませんか?!