SpringMVC请求页⾯路径问题
springmvc选择题1. spring boot web项⽬,在没有使⽤模板的情况下,页⾯默认路径在resources⽂件夹下的static⽂件夹
springboot访问静态资源,默认有两个默认⽬录,
⼀个是  classpath/static ⽬录 (src/mian/resource)
⼀个是 ServletContext 根⽬录下( src/main/webapp )
这⾥简要的介绍下,classpath 即WEB-INF下⾯的classes⽬录,在springboot项⽬中可能就是,src/main/resource ⽬录。
main下的java与resources会被构建到classpath(idea的classpath为编译后的⽂件存放路径target/classes/)
则在 properties⽂件⾥⾯设置  sources.static-locations 就可以配置⽬标资源默认位置,浏览器访问的资源与controller返回的资源将定位到该⽂件夹下的资源。
2. spring.mvc.view.prefix=/ :带有“/”,路径前缀为“static/”,controller中返回的页⾯字符串不能出现多余的“/”
如Controller:
访问该in时,return “index”;会直接定位到static⽂件夹下的index.html
此种⽅式,浏览器能够直接访问到static下的资源,导致不⽤登陆,就可以直接访问⽬标页⾯
3. 当使⽤thymeleaf模板时,服务器controller返回的资源默认在templates中查
static中的静态资源可以被直接访问
templates中的资源必须通过服务访问
4. webapp与WEB-INF的区别
webapp可以直接通过浏览器访问,WEB-INF必须要通过后端服务访问
通常情况下我们的项⽬结构是将css/js/html放在WEB—INF下⾯,因为WEB—INF是webapp的安全⽬录。所谓安全⽬录就是客户端⽆法访问的⽬录,只有服务端可以访问,当静态资源放在WEB—INF下⾯
的时候,外部是不能访问的,我们⼀般通过springmvc配置⽂件配置资源映射,如下所⽰:
<!-- 资源映射 -->
<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
⽽webapp则可以通过浏览器直接访问到。
然⽽,其实静态资源我们没有必要⾮得放在WEB—INF下⾯,因为前端我们就是要展⽰给客户的;之所以⼤家会把他放在WEB-INF下⾯主要原因有两个:
远古时代的模式会把业务逻辑,数据库连接等敏感信息写在jsp⾥⾯,被⽤户直接访问会有安全问题。现代模式⾥这个不再成为问题,不应该成为问题。
jsp是在服务器端运⾏的,⽽且通常都需要其他程序⽀持——⽐如后台处理好数据再让jsp渲染等,⽤户直接访问⼀则没有意义,⼆则会抛异常,这些都浪费服务器资源。
备注:
在l中配置静态资源是不管⽤的:
<servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
如果你⾮要在l中配置资源,那么你需要在l中加⼀个这样的配置:<!-- 允许对静态资源⽂件的访问 -->
<!--将静态资源交给defaultServlet处理,不给springmvc处理-->
<mvc:default-servlet-handler/>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。