if (getPara() != null)
renderError404()
// other code here}办法二使用NoUrlPara拦截器:
@Before(NoUrlPara.class)
public void index() {
......}2、要过滤 .jsp等指定后缀的请求,除了可以通过配置 nginx以外,还使用Handler:
public class JspSkipHandler extends Handler {
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
int index = target.lastIndexOf(.jsp)
if (index != -1)
target = target.substring(0, index)
nextHandler.handle(target, request, response, isHandled)}}然后在YourJFinalConfig中配置一下这个JspSkipHandler即可,另外还可以使用JFinal提供的UrlSkipHandler 通过正则表达式来解决,例如,以下代码可以过滤所有对静态资源以及jsp、html等的请求:
me.add(new UrlSkipHandler(.+\\.\\w{1,4}, false))}上例中的正则将匹配带有扩展名的文件请求,扩展名最短1位,最长4位。你可根据需要灵活配置正则。
上传文件或图片进行重命名是我们在php上传中会碰到的一个问题了,在重命名无非就是对你上传的文件生成一个随机的字符串了,包括有Md5,随机,或按时间日期来重命名了,下面我来给大家介绍。如我们在上传文件页面中如下 *** 作:$name=$_FILES['userfile']['name'] //将所上传的文件名称赋予name然后我们要对它进行重命名//文件名的自动生成list($usec, $new_name) = explode(" ", microtime())if(@$extension_name){//限制文件类型为jpg、gif、png、bmpmove_uploaded_file($tmp_name,$new_dir.'/'.$new_name.'.'.$extension_name)//移动到目标文件夹echo '上传成功'这样我们就把文件名以时间日期生成了一个新的文件名了,例:以下是我添加的将文件名重命名为系统时间的代码: 0){echo "Return Code: " . $_FILES["uppic"]["error"] . "" }else{//echo "Upload: " . $_FILES["uppic"]["name"] . "" //echo "Type: " . $_FILES["uppic"]["type"] . "" //echo "Size: " . ($_FILES["uppic"]["size"] / 1024) . " Kb" //echo "Temp file: " . $_FILES["uppic"]["tmp_name"] . "" $uptype = explode(".", $_FILES["uppic"]["name"]) $newname = $date.".".$uptype[1] //echo($newname) $_FILES["uppic"]["name"] = $newname if (file_exists("pics/" . $_FILES["uppic"]["name"])) { echo $_FILES["uppic"]["name"] . " already exists. " }else { $_FILES["uppic"]["name"] = move_uploaded_file($_FILES["uppic"]["tmp_name"], "pics/" . $_FILES["uppic"]["name"]) echo "" echo "window.location.href=' }}}else{echo "Invalid file"}?>大家可以参考一下可以考虑参考TOP(淘宝开放平台)的规范,或者参考基于Spring实现的ROP的实现,通过post/get访问唯一入口,通过指定参数来派发到指定的action。服务端一律返回json串,目前在做一个基于JFinal实现的类似TOP的插件,这阵子太忙了。这阵子忙完了放出来。
先放一些预告片
配置插件
public void configPlugin(Plugins me) {
JopPlugin jop = new JopPlugin()
jop.addService("1.0", "hello", "/hello")
jop.addService("1.0", "user", "/user")
jop.extendsService("2.0","1.0")//版本2继承自版本1
jop.addMethod("2.0", "user.add", "/user/addV2")//版本2修改的服务
jop.setAppSecretManager(new SampleAppSecretManager())//安全认证服务
me.add(jop)
}
@Override
public void configRoute(Routes me) {
me.add("/api", ApiController.class)
me.add("/hello", HelloController.class)
me.add("/user", UserController.class)
}
这是唯一入口地址,jobrequestprocessor进行权限验证和请求转发。
public class ApiController extends Controller {
public void route() {
JopRequestProcessor.me().processRequest(this)
}
}
调用方式:
http://localhost:8080/api/route?v=2.0&method=user.add&app_key=00001&timestamp=20140918202830&nonce=343128&sign=B50FE891DDB0DCA4484229614EECDB470804B0F0
http://localhost:8080/api/route?v=1.0&method=user.add&app_key=00001&timestamp=20140918202830&nonce=343128&sign=F2687669CD9188EDBC7F34510B6FE8F273746861
第一个请求派发到/user/addV2,第二个请求派发到/usr/add
@JFinal 给点意见啊。目前还有不少工作需要做,特别是错误信息统一化问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)