jfinal如何过滤对JSPhtml的请求?

jfinal如何过滤对JSPhtml的请求?,第1张

public void index() {

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 给点意见啊。目前还有不少工作需要做,特别是错误信息统一化问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11414377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存