サーブレット3.0のweb.xmlなしに変換したい既存のweb-appがあります。私はそれを機能させることができましたが、web.xmlのない環境で同等のコードをまだ知らないweb.xmlに2つのタグがあります。
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/pageNotFound</location>
</error-page>
どんな助けでもありがたいです
Servlets 3.0では、多くの場合web.xmlは必要ありませんが、必要な場合や単に役立つ場合もあります。あなたのケースはそれらの1つにすぎません-ウェルカムファイルリストやエラーページを定義するための特別な注釈はありません。
もう1つは、ハードコーディングしてもらいたいですか?注釈/プログラムベースの構成、およびXMLでの宣言的な構成には、いくつかの有効なユースケースがあります。サーブレット3.0に移行しても、必ずしもweb.xmlを削除する必要はありません。
あなたが投稿したエントリーは、XMLでの構成のより良い例です。 1つ目は、デプロイメントごとに変更でき、2つ目は、特定のサーブレットではなく、アプリケーション全体に影響します。
アナログのwelcome-page-listの場合、これを
@EnableWebMvc
@Configuration
@ComponentScan("com.springapp.mvc")
public class MvcConfig extends WebMvcConfigurerAdapter {
...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/*.html").addResourceLocations("/WEB-INF/pages/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index.html");
}
...
}
次のシナリオのSpring Bootまたは一般的なSpring MVCアプリ:
静的ファイルは、カスタムResourceHandlerRegistryに登録された場所から提供できます。静的リソースindex.htmlがあり、localhost:8080/index.htmlでアクセスできます。 localhost:8080 /リクエストをlocalhost:8080/index.htmlにリダイレクトするだけなので、次のコードを使用できます。
package in.geekmj.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/", "/index.html");
}
}
localhost:8080 /にアクセスすると、localhost:8080/index.htmlにリダイレクトされます