简体   繁体   中英

java spring URL mapping

I using maven web application, framework spring.

Using Netbeans IDE and Tomcat server.

When I run web in netbeans, URL in browser is:

http://localhost:8080/mywebsite

With this URL website cannot read event servlet mapping.

When I change URL to http://localhost:8080/mywebsite/ then It run good.

What is reason for this case? Why my website don't auto add character "/" in URL?

{update}

config.java

public class Config extends 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/*");
}

}

Initializer

@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

@Controller
public class MyController {

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

If you open http://localhost:8080/mywebsite , the web app will try to find some index.html file(based on tomcat or http server configuration).

And you mapping is @RequestMapping(value = "/", method = RequestMethod.GET) , so it will apply to http://localhost:8080/mywebsite/ . If you want to use your controller to handle http://localhost:8080/mywebsite , you can try to use * in your mapping value. It means, for any request, if there is no specific mapping defined, and that default mapping will be applied.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM