SpringMVC入门踩坑2

静态资源访问

主要是对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>

到这里,就可以了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值