简介
ctx作用是获取应用上下文的根路径。ctx变量是FDP框架的基础变量,被大量使用。
在web应用中,浏览器中的页面需要请求某个js、css静态资源、访问某个contorller时,ctx变量会给你很大的帮助。
传统的简单使用 绝对路径、相对路径都地法满足复杂java web开发的需求,今天我们使用ctx变量就可完美的解决问题。
基本思路是,在url路径使用应用上下文的根路径(request.getContextPath())作为基础路径。
特点
ctx变量有3套,可以js、jsp、java文件中使用。如你在js文件进行ajax请求有了js版的ctx,路径问题不在是困扰。
ctx变量表
变量名 | 说明 | 是否可在jsp中使用 | 是否可在js 中使用 |
---|---|---|---|
ctx | 应用的根路径 | 是 | 是 |
ctxa | 管理后台的根路径 | 是 | 是 |
ctxs | 商家后台的根路径 | 是 | 是 |
ctxm | 会员中心的根路径 | 是 | 是 |
ctxf | 前台的根路径 | 是 | 是 |
ctxsso | sso系统 | 是 | 是 |
ctxw | wap 系统的根路径 | 是 | 是 |
ctxu | upload系统的根路径 | 是 | 是 |
ctxStatic | 静态资源的根路径 | 是 | 是 |
ctxfs | 文件系统的根路径 | 是 | 是 |
fdp.properties 核心配置文件中定义了4个基础路径:
#管理后台基础路径, 定期修改可起到隐藏管理后台的作用,能有限度的提高网站管理后台的安全。
adminPath=/admin
#商家后台基础路径, 定期修改可起到隐藏商家后台的作用,能有限度的提高网站管理后台的安全。
sellerPath=/seller
#会员中心基础路径,会员中心的登录Filter就是拦截的这个路径,此路径下的controller都需要登录后访问
memberPath=/member
#前台基础路径,前台路径建议空达到url美观的目的,此路径下的controller都可匿名访问,无需登录
frontPath=
#sso基础路径
ssoPath=/sso
#wap系统基础路径
wapPath=
#upload系统基础路径
uploadPath=
使用Global取得这6个路径(java)
Global.getAdminPath()
Global.getSellerPath()
Global.getMemberPath()
Global.getFrontPath()
Global.getSsoPath()
Global.getWapPath()
fns标签取得这6个路径(jsp)
${fns:getAdminPath()}
${fns:getSellerPath()}
${fns:getMemberPath()}
${fns:getFrontPath()}
${fns:getSsoPath()}
${fns:getWapPath()}
taglib.jsp 中定义了ctx变量,可在jsp中使用
<c:set var="ctx" value="${pageContext.request.contextPath}"/> 应用的根路径
<c:set var="ctxa" value="${pageContext.request.contextPath}/admin"/> 管理后台的根路径
<c:set var="ctxs" value="${pageContext.request.contextPath}/seller"/> 商家后台的根路径
<c:set var="ctxm" value="${pageContext.request.contextPath}/member"/> 会员中心的根路径
<c:set var="ctxf" value="${pageContext.request.contextPath}/front"/> 会员中心的根路径
<c:set var="ctxStatic" value="${pageContext.request.contextPath}/static"/> 静态资源的根路径
<c:set var="ctxfs" value="${fns:getConst('FILESTORAGE_BASE_URL')}"/> 文件系统的根路径
<
c:set
var
=
"ctxsso"
value
=
"/front
${fns:getSsoPath()}
"
/> SSO系统的根路径
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<c:set var="ctxa" value="${true?'/admin':''}${fns:getAdminPath()}"/>
<c:set var="ctxs" value="${false?'/seller':''}${fns:getSellerPath()}"/>
<c:set var="ctxm" value="${false?'/seller':''}${fns:getMemberPath()}"/>
<c:set var="ctxf" value="${false?'/seller':''}${fns:getFrontPath()}"/>
<c:set var="ctxsso" value="${false?'/seller':''}${fns:getSsoPath()}"/>
<c:set var="ctxu" value="/upload"/>
<c:set var="ctxStatic" value="/static/static"/>
<c:set var="ctxfs" value="${ctxu}${fns:getConfig('filestorage.dir')}"/>
<c:set var="ctxw" value="/wap${fns:getWapPath()}"/>
使用示例
<form action="
${ctx}
/member/memberUser/saveAddScore.do"/> 提交表单时
<img src="
${ctxfs}
/01/00/12/abc.jpg
@!117x40" width="117" height="40"/> 显示图片时
<link rel="stylesheet" type="text/css" href="
${ctxStatic}
/admin/css/style.css"> 加载css时
head.jsp 中定义了ctx变量,可在js文件使用
<script type="text/javascript">
var jsValidate= true , ctx= '${ctx}' ,ctxa= '${ctxa}' , ctxs= '${ctxs}' , ctxm= '${ctxm}' , ctxf= '${ctxf}' , ctxu= '${ctxu}' , ctxStatic= '${ctxStatic}' , ctxfs= '${ctxfs}' , ctxsso= '${ctxsso}' ;
</script>
使用示例
window.location.href= ctx + "/procut/del.do?id=100";
Controller类中
BaseController是所有控制器的父类,在Controller可以以下变量快捷访问这4个路径
管理后台基础路径 adminPath
商家后台基础路径 sellerPath
会员中心基础路径 memberPath
前台基础路径 frontPath
sso基础路径ssoPath
wap基础路径wapPath
upload基础路径uploadPath
使用示例
return "redirect:" +
adminPath
+ "/gen/genScheme.do?repage";
return "redirect:" +
memberPath
+ "/custservice/custSer.htm";
注意,${ctxfs}后面不需要加/,因为${product.image}是以/开头的
< img src = "${ctxfs}${product.image}@!170X170" onerror = "javascript:this.src='${ctxStatic}/images/default_goods.png';" />