问题:今天使用Maven构建SSM项目时,由于首页要显示数据,于是我在web.xml中welcome-file-list中设置了如下代码:
<welcome-file-list>
<welcome-file>/news/index.html</welcome-file>
</welcome-file-list>
这个news/index.html是一个controller中的Mapper映射的action,贴一下代码
代码如下:
//已删除无关代码,仅看两个RequestMapping注解即可。
@Controller
@RequestMapping("/news")
public class IndexController {
@RequestMapping("/index.html")
public String index(Model model){
return "index";
}
}
正常来说应该是可以访问到的,结果不管怎么重新部署,清除缓存,都一直报404!
于是我在百度查找了一下Web项目中web.xml运行原理:会按照welcome-file-list中写的文件,一个去检查是否web目录下面存在这个文件,如果存在,则跳转到该页;如果不存在,则无法找到。所以一般welcome-file-list中写的是存在的jsp或html文件。但是也可以指定一个存在的action,解决方案下面叙述。
解决方案:其实很好解决,只要让上面标签中的/news/index.html存在即可了,但是这样需要创建一个news目录,所以我的解决方案是如下,各位参考一下,按照自己思路解决即可!
- 修改web.xml文件中的welcome-file-list标签中的值
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
- wwwroot/web(对应myeclipse/idea)根目录创建个index.jsp文件
- 在新建的index.jsp文件中写一行代码
<jsp:forward page="/news/index.html"/>
重新执行项目,执行成功!
解释一下原理:其实就是让进入到index.jsp页面,然后通过标签重定向到对应的action。
结语:对于原理的不懂导致出现的问题,已解决!