SpringMVC servlet映射

我写了一个非常简单的Spring MVC应用程序。 我很抱歉我对Spring MVC很新,所以请耐心等待。

web.xml如下

    contextConfigLocation /WEB-INF/spring/root-context.xml    org.springframework.web.context.ContextLoaderListener    appServlet org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml  1   appServlet /   

我的第一个问题是,我有一个jsp页面用于登录以下代码…

 
Username : Password :

这给了404但是在我的控制器中,我已经将控制器映射到/ login并使用下面的代码…

 @Controller public class LoginController { private static final Logger logger = LoggerFactory.getLogger(LoginController.class); /** * Simply selects the home view to render by returning its name. */ @RequestMapping(value = "/login", method = RequestMethod.POST) public String home(Locale locale, Model model, String username, String password) { if(username.equalsIgnoreCase("david")) { logger.info("Welcome home! the client locale is "+ locale.toString()); Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate ); return "home"; } else { return "void"; } } } 

我的理解是@requestmapping应该执行servlet映射而不是web.xml,这是正确的吗? 如果需要,还会在下面显示/WEB-INF/spring/appServlet/servlet-context.xml的值。

               

所以我的第一个问题是:servlet映射是在web.xml中完成的,还是在控制器类中的@requestmapping中完成的?

第二个问题:如果我要继续添加webxml,那么构建此页面以获得更多页面的最佳方法是什么? 我应该为每个url创建一个控制器吗? 我应该为每个URL创建一个servlet上下文吗?

谢谢阅读 :)

您已将定义为/ ,这意味着您的appServlet将仅接收对根URL的请求。 通过将其更改为/*appServlet将获取所有传入请求。 这将有效,但您也可以考虑创建一个特定的loginServlet ,它可以映射到url /login/*

  1. 您可以在单个web.xml定义多个servlet。 通过添加更多标记来指定将命中每个servlet的请求。
  2. servlet可能有许多控制器。 通常,一个控制器服务于您域的特定部分,例如PersonControllerAddressController等。
  3. 每个控制器通常处理逻辑上组合在一起的几个URL,例如/persons/{id}/persons/search/persons/add等。