java spring URL mapping

时间:2016-02-08 06:21:03

标签: java spring spring-mvc

我使用maven web应用程序,框架spring。

使用Netbeans IDE和Tomcat服务器。

当我在netbeans中运行web时,浏览器中的URL为:

http://localhost:8080/mywebsite

使用此URL网站无法读取事件servlet映射。

当我将网址更改为http://localhost:8080/mywebsite/时,它运行良好。

这种情况的原因是什么?为什么我的网站不会自动添加字符" /"在URL?

{更新}

config.java

public class Config扩展了WebMvcConfigurerAdapter {

@Bean
public UrlBasedViewResolver setupViewResolver() {
    UrlBasedViewResolver resolver = new UrlBasedViewResolver();
    resolver.setPrefix("/WEB-INF/html/");
    resolver.setSuffix(".jsp");
    resolver.setViewClass(JstlView.class);
    return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/*");
}

}

初​​始化程序

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(Config.class);
    ctx.setServletContext(servletContext);
    ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
    servlet.addMapping("/");
    servlet.setLoadOnStartup(1);
}

控制器

@Controller
public class MyController {

//<editor-fold defaultstate="collapsed" desc="ADMIN">
@RequestMapping(value = "/", method = RequestMethod.GET)
public String login(ModelMap map) {
    return "admin/login";
}}

1 个答案:

答案 0 :(得分:1)

如果您打开http://localhost:8080/mywebsite,网络应用会尝试查找一些index.html文件(基于tomcat或http服务器配置)。

您的映射为@RequestMapping(value = "/", method = RequestMethod.GET),因此它将适用于http://localhost:8080/mywebsite/。如果要使用控制器处理http://localhost:8080/mywebsite,可以尝试在映射值中使用*。对于任何请求,这意味着,如果没有定义特定映射,则将应用默认映射。