问题来源
我从 Android 转到了 Java Web 后台开发,也没有写博客了,我一般是记录在本子上,因为我觉得方便,想怎么记就怎么记,不过现在慢慢的转变了,我想每个人在学习的过程中都会有问题,我以后就把我的笔记记录在博客上,原因有:
1. 是方便查找。
2. 后面的人遇到相同的问题时,可以参考下。
好,进入正题。
因为 Web 项目,在客户端和服务端运行,前端运行在客户端,后台运行在服务端,其中 “\” 根目录的意义就有所不同了,我之前也比较迷糊,不知那个时候用相对地址还是绝对地址。
假期找了实习,做的是 Java Web 后台开发,前端是写好的,我按照以前的经验,把所有的 HTML 改为 JSP, 把 HTML 中所有的资源引用,全是换为绝对地址,就像下面一样:
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
这种确实方便,什么都不用管,都是用的绝对地址。但最近我觉得 JSP 这种模式很不好,前台写完以后,我要把所有的 HTML 改为 JSP,虽然说 JSP 是动态网页,这只是相对于前台和后台的说法,在后台中确实是动态的,但是前台都是静态页面,当有什么更新的值,那么就只有全局刷新。而且 JSP 不是客户端直接访问的,JSP 要变为 Servlet,然后 Tomcat 再进行分发。
取舍 JSP
在公司接触了 AJAX,然后我感觉整个前台和后端的交互逻辑可以变成一种清晰的架构,请看下图:
解释一下,
前端用: HTML + CSS + JS 进行开发。
后端用: 后端语言开发,比如Java,Python,Golang 等等都可以。
前端用 AJAX 进行表单的提交数据和进行页面的局部更新。
前端与后端数据的交换用 JSON。
JSP 变为 HTML 的问题
由上面可以看到,整个 Web 架构就清晰多了,前端写前端的,后端写后端的。
不过在前端的资源引用就不能用 JSP 的特性来获得绝对路径了,要改为相对路径了,就会涉及到 “\” 根目录的问题。例如以下的路径
./ . 代表当前路径
../ .. 代表上一级路径
/ 根目录这个就不好说了。
“\” 根目录快速识别
接下来我就用最简介的语言说清楚,根目录的识别。
客户端解析 "\" Web 容器根目录
服务端解析 "\" 当前 Web 引用的根目录
解释下,谁解析 “\” 就代表不同的意思。
比如:
客户端在访问时,访问的是 Web 容器,所以在客户端是 "\" 代表的是 Web 容器的根目录
服务端在被访问时, Web 容器中,各个项目是独立存在的,所以单个项目中 "\" 为当前的 Web 项目的根目录
结束语
小弟不才,如果有问题,谢谢大家提出,最后谢谢大家观看!