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-18 09:15

前端传的时候,参数名用不同的前缀, 如:
a.nema
b.nema

后端取的时候, 使用定义的前缀,如:
getModel(youModel.class, "a")
getModel(youModel.class, "b")
这样就可以了

2017-12-15 10:03

没看过log4j的源码,但
./ 这个就会返上一个文件夹, 如:
eclipse里面main运行的时候,就在 工程项目文件夹里面了。
用Tomcat的时候, 就在Tomcat的安装目录里面了

2017-12-15 09:22

http://www.jb51.net/article/75819.htm

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-07 12:31

https://www.oschina.net/p/t-io
使用谭老大的 t-io + Jfinal 一起用就知道有多好了

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源码中字典等生成器

2017-12-04 09:00

必须可以使用多种渲染方式哈,

查看手册: 3.10 render 系列 方法:
renderTemplate(”test.html”) 渲染名为 test.html 的视图,且视图类型为 JFinal
Template。
renderFreeMarker(”test.html”) 渲 染 名 为 test.html 的 视 图 , 且 视 图 类 型 为
FreeMarker。
renderJsp(”test.html”) 渲染名为 test.html 的视图,且视图类型为 Jsp。
renderVelocity(“test.html”) 渲染名为test.html 的视图,且视图类型为 Velocity。
renderJson() 将所有通过 Controller.setAttr(String, Object)设置
的变量转换成 json 数据并渲染。
renderJson(“users”, userList) 以”users”为根,仅将 userList 中的数据转换成 json
http://www.jfinal.com
数据并渲染。
renderJson(user) 将 user 对象转换成 json 数据并渲染。
renderJson(“{\”age\”:18}” ) 直接渲染 json 字符串。
renderJson(new
String[]{“user”, “blog”})
仅将 setAttr(“user”, user)与 setAttr(“blog”, blog)设
置的属性转换成 json 并渲染。使用 setAttr 设置的
其它属性并不转换为 json。
renderFile(“test.zip”); 渲染名为 test.zip 的文件,一般用于文件下载
renderText(“Hello JFinal”) 渲染纯文本内容”Hello JFinal”。
renderHtml(“Hello Html”) 渲染 Html 内容”Hello Html”。
renderError (404 , “test.html”) 渲染名为 test.html 的文件,且状态为 404。
renderError (500 , “test.html”) 渲染名为 test.html 的文件,且状态为 500。
renderNull() 不渲染,即不向客户端返回数据。
render(new XmlRender()) 使用自定义的 XmlRender 来渲染。

2017-12-03 15:44

如梦老师的作品就是简单易用

2017-12-03 00:51

@tosur 今天晚上睡不着... 看俱乐部直播的时候看见有人@ 我这篇文章了...
翻来看看... 你说的这种方式也是没有问题的, 然后我就扩展了一下

< jfinal:template>
#("你好 jfinal template")
< /jfinal:template>

@zhongshg

2017-11-28 08:53

@zhongshg 是的哈, 必须可以