简介

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';" />