spring MVC开发中静态页面访问路径为什么出错?
今天在搭建springMVC项目练手的时候,碰到一个之前没遇到过的问题,在这里请教一下各位大神。
问题是这样,在web.xml中配置dispatcherServlet时,拦截所有请求,在页面上的资源加载和访问,请求路径都是写的相对路径,但是在经过controller返回页面的时候,此时所有的请求路径(包括静态资源)都会给我自动加上一个类似于struts中的namespace字段,导致路径异常访问不了
描述不是太清楚,大家配合截图,应该能更明了
项目结构:maven项目
项目首页:在这里是没有任何问题,因为这里是直接访问jsp页面,而并非是经过后台返回页面
学校controller:访问学生列表,从这里返回到前端list页面
学生列表:前端jsp页面,图中的js加载路径中加入“../”,直接从根目录获取js,这样也是没问题的
若是js看不太明显,这里大家可以看到,只要是访问http://localhost:8080/SSM/school/*.action之后,此时页面上的所有请求访问都会被限制到http://localhost:8080/SSM/school这里,因为写的是绝对路径
不知道大家有没有看明白。其实这个问题说起来也没有什么恶劣的影响,解决办法也很简单,我们只需要将项目的path设置“/”,这样直接访问http://localhost:8080即可,不用带上项目名称SSM,在所有的请求里面,也只需要在前面加上一个“/”。但是有一个问题,若是一台服务器上发布了一个以上的项目,这时候http://localhost:8080就不能确定到底访问的是哪一个项目了,所以就还是需要加上项目名称来区分,可是这样又会出现上述问题,好纠结,求大神指点一下。(之前一直没发现,是因为之前的项目中path就直接是“/”)
你的这个提问涉及的路径问题挺多,也是有些开发者经常会遇到的问题,按我的经验给你说下。
1.java web容器中项目部署时的访问路径
一般网站部署后,访问路径是不带项目名称的,比如最代码的服务器部署目录:/data/www/zuidaima/,在tomcat的conf/server.xml中host的访问配置是:
<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/data/www/zuidaima/" path="/">
</Host>
这样http的访问地址就是http://www.zuidaima.com/
而在eclipse jee集成tomcat版本本地开发时,eclipse的配置中path的配置是带有项目路径的
所以访问的时候除了要有端口外,还得带上项目路径,比如:http://localhost:8080/zuidaima/
建议Path设置为空,这样本地debug时,所有访问路径和线上是一致的,不会出现线上访问404的情况。
2.mvc开发中view层中访问路径的问题
比如jsp中配置静态页面的地址:
<link href="/resource/css/bootstrap.min.css" rel="stylesheet" />
则该文件在项目的本地目录则是:/data/www/zuidaima/resource/css/bootstrap.min.css,则其通过http访问是http://www.zuidaima.com/resource/css/bootstrap.min.css
其中/resource/css/bootstrap.min.css以/开头则表示是相对于项目根目录而言,则本地访问中,根目录配置是:/data/www/zuidaima/,而web网页http访问中根路径是http://www.zuidaima.com/。
但是如果出现resource/css/bootstrap.min.css的不以/开头的配置,则其访问路径是相对于当前访问目录而言的,比如在最代码首页,分享页,这样配置,所有文件都是可以访问的,因为首页当前目录就是/根目录,但是如果访问比如:http://www.zuidaima.com/user/2318804493993984.htm,这样访问就404错误,http真实访问目录是:http://www.zuidaima.com/user/resource/css/bootstrap.min.css,这样对照到服务器资源明显就是错误的路径,所以出现这样的配置:
<link href="../resource/css/bootstrap.min.css" rel="stylesheet" />
相当于http://www.zuidaima.com/user/../resource/css/bootstrap.min.css,这样和http://www.zuidaima.com/resource/css/bootstrap.min.css是一个作用,是否有点豁然贯通了?
所以建议在web开发中,尽量是用相对路径的根目录配置法,这样一目了然,http访问路径和服务器配置路径是一一对应的,当然在很多情况下,静态资源和动态请求是分开域名提供服务的,比如最代码的css是:http://static.zuidaima.com/resource/css/bootstrap.min.css,这样如果不在同一个域名那只能通过绝对路径访问了。
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?
- 完 关于springmvc下载大的文件(2G)爆出 溢出 请求帮助
- 等 部署maven springmvc项目抛出异常java.lang.IllegalStateException: ApplicationEventMulticaster not initialized?
- 等 关于springmvc文件上传的问题
- 等 springmvc + mybatis-spring-1.2.2 启动报错
- 完 Springmvc用户注销退出登录功能疑问
- 等 springmvc怎样整合才能把事务放在控制层?求大神指教!!!
- 等 Springmvc开发中java bean对象自动初始化失败求解
- 等 maven springMVC调用数据库实现用户登录,列表显示代码
- 完 springmvc从3.1.4.RELEASE升级到4.1.1.RELEASE版本后,ajax请求返回json时为什么报错?
- 等 SpringMVC中上传文件MultipartFile对象调用Inputstream方法失败问题
- 完 spring MVC中使用国际化为什么是乱码?
- 等 spring MVC中的@service和@autowired有什么联系么?