查了些资料,整理下。
在不修改配置文件默认"/"访问的前提下,发现一共有三种访问方式:
1.默认tomcat容器的默认页面。
/index.html 这种方式适合访问静态的页面(也包括JSP)或者说是没有任何参数的页面。
注:即使web.xml没有添加,tomcat也会自动默认去寻找在webroot目录下面的index文件
2.spirng mvc 配置根节点访问“/”方式
这种方法比较极端,就是配置一个名为“/”的controller,就是输入完网址之后就会调用。
@RequestMapping(value=”/”) public ModelAndView index(HttpServletRequest request, HttpServletResponse response){ return new ModelAndView(“index”); }
3.spirng mvc 默认index controller 方式
如果在tomcat容器没有配置默认页面,怎spring mvc 会主动去寻找/index的controller,如果有则会调用,没有则会显示404页面。
@RequestMapping(value=”/index”)
public ModelAndView index(HttpServletRequest request, HttpServletResponse response){
return new ModelAndView(“index”);
}
三种方法的优先级是1>2>3.
我做的项目搭好框架就是以index为默认页面的,但是因为有不同角色需要将初始页面改为登录页面,于是我试了方法2和3都没有成功,是因为tomcat的容器级别比spring的要高,在三种配置都存在的情况下,优先使用tomcat。同理,2和3同时存在的时候,会先匹配配置了“/”的controller,而不会先寻找"/index"controller.
所以要使用后两种方法,就要保证webroot下面没有index相关文件。
修改方法:将webroot下的index文件放到子文件夹中,新建一个配置了"/"或"/index"的controller文件,代码如下:
@Controller @RequestMapping("/") public class IndexController { @RequestMapping(value = "/",method = RequestMethod.GET) public String login(){ return "login"; } }