2017-12-21 09:26
方法一
拦截器
inv.getController().getResponse().addHeader("Access-Control-Allow-Origin", "*");//指定域名
--------------------------------------------------------------------------------
方法二
1, JFinal的Controller返回的时候如下:
这里的content就是我的Json字符串
renderJson("innerSignCallBack(" + content + ")");//跨域的请求,jsonp
2, 页面的Ajax如下:
var url = 'http://xxx.com/getJson';
$.ajax({
type : "get", //必须get,不填也行
url : url,
dataType : "jsonp",
jsonp:'innerSignCallBack', //服务器端获取回调函数名的key
jsonpCallback:'innerSignCallBack', //回调函数名
success:function(data) { //成功
alert('成功')
},
error : function(msg) {//失败
alert('失败');
}
});
3, 测试, 打完收工
2017-12-21 09:13
我这边都是用NGINX做的:
server {
listen 80;
server_name www.jfinal.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://127.0.0.1:1011;
}
location /msg {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://127.0.0.1:2011;
}
# 依次往下推 /xxx
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2017-12-18 17:23
PS: 不推荐斜杠(/参数)和横杠(-)挂参的原因:
ActionMapping.java 中 》 getAction:
/**
* Support four types of url
* 1: http://abc.com/controllerKey ---> 00
* 2: http://abc.com/controllerKey/para ---> 01
* 3: http://abc.com/controllerKey/method ---> 10
* 4: http://abc.com/controllerKey/method/para ---> 11
* The controllerKey can also contains "/"
* Example: http://abc.com/uvw/xyz/method/para
*/
public Action getAction(String url, String[] urlPara) {
Action action = mapping.get(url);
if (action != null) {
return action;//《《 如果取到了就直接返回了
}
// -------- 没有的话。。还得找,裁剪判断。。后面取值的时候也是一顿split
int i = url.lastIndexOf('/');
if (i != -1) {
action = mapping.get(url.substring(0, i));
urlPara[0] = url.substring(i + 1);
}
return action;
}
2017-12-18 16:55
@混世侃 不推荐这样使用, 使用传统挂参形式会方便功能扩展管理:
http://localhost/controllerKey/method?a=3.1425&b=2.568
由于开发环境中一般不会使用NGINX等做动静分离,
所以ActionHandler.java 》 handle 中使用:
if (target.indexOf('.') != -1) {
return ;
}
做了一个判断, 不处理带 . 的路径,也没有使用正则,为保持性能。
如果业务一定需要这样的参数形式, 那就自己继承Handler处理一下
YouJFinalConfig 中》 configHandler:
@Override
public void configHandler(Handlers me) {
// 自己处理
me.add(new YouHandler());
。。。
}
具体操作见手册: 2.7 configHandler (Handlers me)
2017-12-15 09:21
老铁,这个是前端技术了!
比如使用JS 进行 post提交:
function post(URL, PARAMS) {
var temp = document.createElement("form");
temp.action = URL;
temp.method = "post";
temp.target = "_blank";
temp.style.display = "none";
for (var x in PARAMS) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
// alert(opt.name)
temp.appendChild(opt);
}
document.body.appendChild(temp);
temp.submit();
return temp;
}
2017-12-08 23:46
你可以页面加载完后,调用js 进行跳转:
$(document).ready(function(){
//走你, 比如后台用setArr(xx...
scrollTo('.${xxx}');
});
送你个 JS函数:
/**点击滑动到某个位置
1.滑动id为item 用法: scrollTo('#item',300);
2.滑到某个标签item 用法: scrollTo('.item');
* */
function scrollTo(ele, speed){
if(!speed) speed = 300;
if(!ele){
$("html,body").animate({scrollTop:0},speed);
}else{
if(ele.length>0) $("html,body").animate({scrollTop:$(ele).offset().top},speed);
}
return false;
}
//------------------
建议使用 Jfinal模版引擎Enjoy , 感觉好到爆!
如果是其他原因导致你不能直接使用, 你可以使用:
JFinal使用技巧-在JSP中使用Enjoy
2017-12-06 13:49
DruidPlugin druidPlugin = new DruidPlugin( jdbcUrl, userName, passWord);
druidPlugin.start();
DruidDataSource dataSource = (DruidDataSource)druidPlugin.getDataSource();
Properties properties = new Properties();
properties.setProperty("remarks", "true");
properties.setProperty("useInformationSchema", "true");
dataSource.setConnectProperties(properties);
DataSource dataSource = getDataSource();
MetaBuilder metaBuilder = new MetaBuilder(dataSource);
// 没有主键的 表可以排除
metaBuilder.addExcludedTable("courseplan_back");
// 默认是Mysql, 如果是其他的, 就换
//metaBuilder.setDialect(new MysqlDialect());
// 表的 集合
List< TableMeta> build = metaBuilder.build();
// List 转 Map 然后 静态存起来, 供其他地方使用, 例:
Map< String, TableMeta> tableMetas = new HashMap< String, TableMeta>();
for (TableMeta tableMeta : build) {
tableMetas.put(tableMeta.name, tableMeta);
}
// 使用
TableMeta tableMeta = tableMetas.get("test");
可以看下Jfinal源码中字典等生成器