freemarker获取绝对路径_JavaWeb项目获取绝对路径basePath(示例代码)

1. freemarker获取系统相对路径方式

spring-mvc.xml 中配置

其中

value="request" />是关键。

ftl页面中设置

首页

js文件中获取path

var base = document.getElementById("base").href;

// 与后台交互

_send = function(async, url, value, success, error) {

$.ajax({

async : async,

url : base + ‘/‘ + url,

contentType : "application/x-www-form-urlencoded; charset=utf-8",

data : value,

dataType : ‘json‘,

type : ‘post‘,

success : function(data) {

success(data);

},

error : function(data) {

error(data);

}

});

};

使用绝对路径方式

1.问题来源

用域名直接访问系统,修改tomcat7配置文件使用http://localhost/index.html方式,即配置默认80端口和虚拟项目名称为空。

server.xml配置

修改后var base = document.getElementById("base").href;获取的base值是http://localhost/index.html但

id="base" href="${base}">这里的href=""所以导致ajax的请求url : base + ‘/‘ +

url,出现了问题。

2.解决方案

(1)增加spring拦截器,获取HttpServletRequest,拼装绝对路径放在request的attribute属性中,ftl文件中直接${basePath}取值就可以了,静态文件

href="${basePath}/static/bower_components/bootstrap/dist/css/bootstrap.min.css"

rel="stylesheet">body中的隐藏表单

id="base" value="${basePath}" />,js获取path也可以通过隐藏表单获取var base = $(‘#base‘).val();

拦截器代码

public class BasePathInterceptor extendsHandlerInterceptorAdapter {private static Logger logger = Logger.getLogger(BasePathInterceptor.class);public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throwsException {

String scheme=request.getScheme();

String serverName=request.getServerName();int port =request.getServerPort();

String path=request.getContextPath();

String basePath= scheme + "://" + serverName + ":" + port +path;

logger.info(basePath);

request.setAttribute("basePath", basePath);return true;

}

}

spring-mvc.xml中配置拦截器,拦截顺序至上而下

用上绝对路径之后,就会避免很多因为引用路径上带来的问题。

(2)通过继承freemarker视图解析类org.springframework.web.servlet.view.freemarker.FreeMarkerView,重写exposeHelpers方法,在spring里配置自己的freemarker的视图解析器,在模板中就可以通过${base}获取。

MyFreeMarkerView 代码

public class MyFreeMarkerView extendsFreeMarkerView {private static final String CONTEXT_PATH = "base";

@Overrideprotected void exposeHelpers(Mapmodel,

HttpServletRequest request)throwsException {

model.put(CONTEXT_PATH, request.getContextPath());super.exposeHelpers(model, request);

}

}

spring-mvc.xml配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值