静态资源访问
主要是对html进行访问,其他静态资源应该也是适用的
URL直接访问
这里有个前提,就是Controller中的@RequestMapping("/path"),path不能和你存放html的位置相同啦。例如我在webapp下创建一个static文件夹存放html文件,如果我设置@RequestMapping("/static"),那样就会优先交由Controller处理啦。
在上面的条件下,本地运行的时候通过
localhost:8080/static/index.html
就可以直接访问到我的html了
测试过,如果把static文件夹放在webapp/WEB-INF下,用url就访问不了了,据说是因为WEB-INF有安全保护?
localhost:8080/WEB-INF/static/index.html
RESTful风格
我对RESTful风格的理解就是URL最后一级地址不用加任何后缀
例如像上面的访问,就需要加上html后缀组成完整的文件名才能找到html
如果在web.xml中设置了
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
那么URL就要带有.do后缀才能访问
localhost:8080/**/***/index.do
可能就是觉得这样有点丑,所以有了RESTful风格
为了实现RESTful风格,需要修改web.xml中的拦截,用 / 表示拦截所有请求
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这个时候还是可以通过一开始说的URL直接进行访问的,但是明显不符合风格
只使用路径进行访问的话,就要在Controller有相应的@RequestMapping设置了
@Controller
public class login{
@RequestMapping("/staticResources")
public String index(){
return "forward:/static/index.html"
//return "redirect:/static/index.html" 这样也ok,就是转发和重定向区别而已
}
}
好像通过下面的url就可以访问到index.html了,但事实上还是会404的
localhost:8080/staticResources
两个方法
修改dispatcher-servlet.xml
添加一句
<mvc:resources mapping="/static/**" location="/static/" />
mapping指的是访问路径,例如 localhost:8080/static/**
location指的是html存放的位置(/ 根目录指的是webapp)
修改web.xml
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
到这里,就可以了~