最近做了个项目,外网访问内容放在iis里面(都是静态页面),内网访问内容放在tomcat里面(项目第一期和第二期的厂家不一样);
客户提出这么个需求:在外网首页加上一个用户访问量,本来也没什么,一般都很好实现,但是在这里就涉及到了跨域访问,之前也没弄类似的东西,后来搞了好半天才实现,在这里备注一下。
首先,在外网首页写上这么一段ajax远程访问代码:
// 更新访问统计量
function flushVisitCount(){
$.ajax({
url:"http://XX.XXX.XX:8080/XXX/home/XXX!visitCount.action",
type: "GET", // 跨域不能用post方式
async:true,
dataType:"jsonp", // 数据传送方式
jsonp:"jsonpcallback",// 为嘛一定要有这个?
success: function(data) {
//alert(data.count);
$("#visitCount").text(data.count);
}
});
}
其次,在后台代码中实现这个方法:
protected void visitCount() {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType( "application/json;charset=UTF8" );
String jsoncallback = getRequest().getQueryString();// 得到的数据格式如下:jsoncallback =jsonp123456789
jsoncallback = jsoncallback.substring(jsoncallback.indexOf("=")+1);// 我们只要“jsonp123456789”
try {
// 格式很重要:返回的格式为 jsonp123456789({"count":1211})
response.getWriter().write(jsoncallback + "({\"count\":"+object+"})");
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
}