Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

filter过滤器 #284

Closed
jicu7766240 opened this issue Aug 1, 2012 · 21 comments
Closed

filter过滤器 #284

jicu7766240 opened this issue Aug 1, 2012 · 21 comments
Milestone

Comments

@jicu7766240
Copy link

举个例子:当我需要拦截WebROOT/admin/* 这个路径时,下面包含1.html,2..html,3.jsp等等多个资源文件时,我访问的路径是admin/1.html,控制台输出:DEBUG org.nutz.mvc.impl.UrlMappingImpl - find mapping (null) for path '/4'。然后filter继而交由了tomat底层在处理,所以我能成功的访问到1.html的这个文件。我期望的是能够将1.html或3.jsp控制起来。filter 的过滤器使用不是很方便。

@wendal
Copy link
Member

wendal commented Aug 1, 2012

你是觉得这个log不太爽,希望不做无用功?

@jicu7766240
Copy link
Author

不是log的问题。是过滤器不能控制html这些文件,如果要控制a.html 在通过mvcs的工具类获取出来的是 "/a" ,然后前台依然能访问a.html,是因为后面的返回false,nutz的filter没有继续处理。

@zozoh
Copy link
Member

zozoh commented Aug 1, 2012

你添加个

<init-param>
    <param-name>ignore</param-name>
    <param-value>^.+\\.(jsp|png|gif|jpg|js|css|jspx|jpeg|swf|ico|html)$</param-value>
</init-param>

就能过滤掉 html 文件哦

@jicu7766240
Copy link
Author

不是忽略jsp,html文件。在 /admin/下面有 a.html ,浏览器访问路径为 http://localhost/test/a.html 。 ^.+.(png|gif|jpg|js|css|jspx|jpeg|swf|ico)$ 我是这样的,因为我不要过滤掉html和jsp文件,我要进行判断,如果没有登录的话,就不能访问http://localhost/test/a.html ,需要提示他没有权限。继续我实现ActionContext接口,在MainMoudle里使用了@filters({@by(AdminFilter.Class)}),调试了一下,当访问 http://localhost/test/a.html ,控制台输出:DEBUG org.nutz.mvc.impl.UrlMappingImpl - find mapping (null) for path '/admin/a' ,由于没有找到,所以就没有执行到我写的AdminFilter这个,然后继续返回到Tomcat的Filter处理,由于存在 /admin/a.html。tomcat就返回a.html的数据!致使我不能控制a.html。不知道我这样描述清楚不。

@zozoh
Copy link
Member

zozoh commented Aug 2, 2012

你有写一个入口函数控制 a.html 没?
你贴一下相关代码吧,入口函数, web.xml 等

@jicu7766240
Copy link
Author

web.xml:
ignore
^(.+[.])(png|gif|jpg|js|css|jspx|jpeg)$

MainModule 类:
@filters({@by(type=AdminFilter.class)})
public class MainModule {

}

就只有这儿配置了Filters。

@wendal
Copy link
Member

wendal commented Aug 2, 2012

这种需求用原生的Filter更好,没必要放进ActionFilter处理

@zozoh
Copy link
Member

zozoh commented Aug 2, 2012

你在 MainModule 里写个入口函数呗

@At("/admin/a")
public void admin_a(){}

就能响应 URL 了

@zozoh
Copy link
Member

zozoh commented Aug 3, 2012

@jicu7766240 咋样?

@jicu7766240
Copy link
Author

在入口函数写不是理想的处理方式,如果下面有多个html或者jsp那我得写好多。用原生的filter不是不行,觉得有点别扭。另外dao的执行事件我还是比较希望官方能提供接口,像我这样的小白就可以直接在你们基础上面进行扩展。修改daoexector不是不行,是我写的不一定大众化。

@jicu7766240
Copy link
Author

好吧,就用原生的filter吧。。。

@zozoh
Copy link
Member

zozoh commented Aug 3, 2012

@jicu7766240 如果希望监视 SQL 效率等,建议用 Druid 连接池

@jicu7766240
Copy link
Author

肯定不只是监视SQL效率,我预想还可以加缓存,静态页面生成等功能。1.a.33我加了个缓存,发现我自己考虑的跟不上版本的更新,我想你们提供的一个接口肯定不会变。

@wendal
Copy link
Member

wendal commented Aug 3, 2012

楼上, 38的Dao大改..................

@jicu7766240
Copy link
Author

就是因为这样, 我不知道以后是否还会大改,所以,我期望官方能提供。

@zozoh
Copy link
Member

zozoh commented Aug 3, 2012

恩,这样哦,先留着这个 Issue , 我们考虑下 ...

@zozoh zozoh reopened this Aug 3, 2012
@jicu7766240
Copy link
Author

不好意思,弱弱的问句,在one to one 的时候,可否这样处理。当然,需要确切的进行描述然后才这样处理。在处理一对一的时候,通过开发人员在@one的注解上进行描述,然后在执行SQL语句的时候,只发一条SQL语句,查询出来的结果集大概是这样
id name a.id a.nickname a.pwd ...
1 小俊 1 admin admin
然后通过a.id 中间的 "." 号进行判断封装数据。
我看帮助文档有点我非常喜欢,就是不用构建pojo查询数据库,这样可以提高开发速度和查询效率。感谢nutz。

@zozoh
Copy link
Member

zozoh commented Aug 6, 2012

呃,这个不行哦,one 2 one 现在是发两条 SQL 的

@jicu7766240
Copy link
Author

现在是不行,不知道可否加一个这样子的功能。发一条总比发两条好。因为在程序设计中,经常会遇到这样的事情。这样处理可能比较麻烦。因为考虑的东西有点多。

@zozoh
Copy link
Member

zozoh commented Aug 6, 2012

呵呵,轻巧的代价嘛。其实对你来说,你代码也木有怎么多写,不过是多执行了一条 SQL
而这样效率未必低哦,因为如果数据库优化得当,联和查询未必比单表查询快的

@zozoh zozoh modified the milestones: 1.b.51, 1.b.50 Apr 12, 2014
@zozoh zozoh modified the milestones: 1.b.51, 1.b.52 Oct 12, 2014
@zozoh zozoh modified the milestones: 1.b.52, 1.b.53 Mar 16, 2015
@zozoh zozoh modified the milestones: 1.b.53, 1.b.52 Mar 16, 2015
@wendal
Copy link
Member

wendal commented Jul 2, 2015

貌似都好了吧

@wendal wendal closed this as completed Jul 2, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants