4

最初の私のソフトウェアスタック:

  • 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/hellohello.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.outhttps ://stackoverflow.com/a/5045247/1321564

そして、Tomcatを再起動していくつかのURLを試した後の出力は次のとおりです。ファイルは空のままです...?!

また、Tomcatでは次のディレクトリが空であることに気付きましたwtpwebapps/MyApp/WEB-INF/lib/。そこにいくつかのSpringライブラリがあるべきではありませんか?!

4

1 に答える 1

6

動作しました!!!

上記のように:WEB-INF/libフォルダにSpringライブラリはありませんでした。

そして、私はMavenを使用しているからです。解決策は非常に簡単です。

  • プロジェクトを右クリックします
  • クリックProperties
  • クリックDeployment Assembly
  • クリックAdd...
  • 選ぶJava Build Path Entries
  • クリックNext
  • 選ぶMaven Dependencies
  • クリックFinish

サーバーを再起動します。

これで、サーバービューに違いがわかります。

  • Tomcatサーバーを展開します。今、あなたはプロジェクトを見ることができます
  • プロジェクトを展開します。spring-web-3.2.1.RELEASE.jarリストされています。以前はそうではありませんでした。
于 2015-06-11T13:39:07.457 に答える