web项目中,视图层中关于相对路径和绝对路径

1.在jfinal项目中

  因为一直使用的jfinal,没感觉路径问题。

  举个栗子,项目名字叫做test.访问一个Controller的映射为/user/add.这样,在浏览器地址栏直接:localhost:8080/user/add就可以直接访问到add方法了。当然,这样需要通过配置不同的端口来发布不同的项目,不然肯定冲突了。端口指定项目的路径。

比如:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="test" reloadable="true" /> 

  而之前学的ssh以及springmvc等,在tomcat中需要通过项目名识别项目。即localhost:8080/test/user/add。

这是因为:在jfinal中默认项目路径为/,然后项目中所有的路径都是相对项目的,即相对于test.

  所以,对于静态资源,web页面的引用js和img可以把webroot看做是/,比如图片位于webroot/img/1.jpg.在页面引用:/img/1.jpg.浏览器访问:localhost:8080/img/1/jpg.

对于服务请求接口,直接:/user/add.浏览器访问:localhost:8080/user/add.

2.一些测试

  /代表的是webapps。即tomcat中发布的默认根路径。

  所有的请求(静态资源也是请求)都要/test/请求相对于项目的路径。

  在html中:

      静态资源:等测试后再写,TODO--

  在jsp中:

      今天学习springmvc中,测试结果:

静态资源:需要相对路径或者相对于项目路径或者绝对路径。举例:

  • 绝对路径:            
1 <!-- 关于路径问题:/表示tomcat的webapps文件夹。如果/js/jq.js,控制台显示找不到localhost:8080/js/....肯定找不到,因为应该是test/js下的
2         可以使用相对路径,这里因为设置了bashPath,就是项目即test,所以页面直接写相对于项目的路径,即:js/jq.....
3      -->
4   <script type="text/javascript" src="/test/js/jquery-1.8.2.min.js"></script>
  • 相对路径直接相对于本jsp的位置写就可以了。这个在涉及动态跳转就会失效。不可以。
  • 正常使用的是相对于项目路径,即在head处:
 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
12   </head>
13 <body></body>
14 </html>

接口请求:

        同理,和静态资源加载一样,采用绝对路径的时候可以/test/user/add.

        推荐以及通常使用:在head出天价base标签,然后就可以这样请求接口:user/add

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极客慕白的成长之路

搭建自己的Git服务器

搭建Git服务器   让我们先看下服务器端SSH访问的配置。在这个例子中,我们使用authorized_keys的方法认证用户。我们假设你的服务器是一个标...

981
来自专栏从零开始学自动化测试

git使用教程1-本地代码上传到github

前言 不会使用github都不好意思说自己是码农,github作为一个开源的代码仓库管理平台,对代码的管理确实很方面。 问题来了:为什么越来越多的小伙伴喜欢开源...

3389
来自专栏杂烩

hadoop2.6.0 Eclipse下的开发

然后下载插件,我这里用的是2.6.0版本插件地址,下载完成后找到release文件夹,将其复制

451
来自专栏跟着阿笨一起玩NET

搭建windows server 2008 r2 FTP 后 开启防火墙无法访问的解决办法

转自http://kkworms.blog.51cto.com/540865/558477

4491
来自专栏Debian社区

配置 Debian Stretch 的安装源

采用最小化方式安装的 Debian,在没有接入网络的情况下,默认是没有配置 apt 安装源,也没有安装远程管理用的 SSH 服务的,这个时候就无法使用 apt-...

872
来自专栏ccylovehs

mysql启动报错The server quit without updating PID file

修改datadir=/var/lib/mysql     -- linux中mysql安装的默认路径

1.4K1
来自专栏Jay的后台开发笔记

简单的linux系统配置故障定位与排除

本文旨在通过一些常用命令的用法示例,让有一定linux基础的开发同学能对系统进行简单配置,也能够上服务器定位或者解决一些简单基础性的问题,做出初步故障排除,或者...

1044
来自专栏岑玉海

通过ambari安装hadoop集群(二)

开始安装,输入主机名字,然后选择私钥 ? ? 注意java_home那里需要改为/usr/jdk64/jdk1.6.0_31,然后点击确认,它会出一个警告提示,...

3256
来自专栏技术之路

[个人翻译]Redis 集群教程(中)

官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我...

2038
来自专栏木子昭的博客

Python3简单实现多任务(多进程篇)第一种:进程池快速创建(适合创建大量进程,简单,推荐!)第二种实现方式(Process创建进程,需要手动管理)第三种实现方式(windows无法使用,只能在类U

python多进程实现多任务 优点:稳定性高;提升程序执行效率 第一种:进程池快速创建(适合创建大量进程,简单,推荐!) ? image.png fro...

35810

扫码关注云+社区