nutz 过滤器使用例子
程序员文章站
2022-05-30 23:13:52
...
3. 过滤器
在入口函数(使用了过滤器的入口函数)执行前执行,并可以根据需要决定不执行入口函数。
3.1. 自定义过滤器
要实现ActionFilter接口,该接口仅有一个方法。
例:
3.2. 使用方法是在主模块、或子模块、或入口函数用如下定义:
@Filters({@By(type=自定义过滤器类1.class),@By(type=自定义过滤器类2.class)})
例:
3.3. 例子说明
上面两步中的例子,是配套的,省略了web.xml、主模块,具体见有关的hello mvc方面的完整例子。
使用时:
(1)输入http://localhost:8084/HelloNutz4/yousay?go=no ,返回UTF8JsonView定义的视图,输出”dd”信息;
(2) 输入 http://localhost:8084/HelloNutz4/yousay?go=yes,返回ServerRedirectView视图。打开index.jsp网页,该网页在工程根目录下。
(3) 输入http://localhost:8084/HelloNutz4/yousay时,执行接口函数tellMore(),输出“yousay”信息。
(4) 以ajax方式,请求时,服务器无法重定向。即,以ajax方式提交http://localhost:8084/HelloNutz4/yousay?go=yes,网址,在浏览器中无法跳转到index.jsp网页。
(5) 上面中的http://localhost:8084/HelloNutz4 表示,服务器于本地,工程项目为HelloNutz4.不同的工程,这里不同
在入口函数(使用了过滤器的入口函数)执行前执行,并可以根据需要决定不执行入口函数。
3.1. 自定义过滤器
要实现ActionFilter接口,该接口仅有一个方法。
public View match(HttpServletRequest request, Method method)
例:
import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import org.nutz.json.JsonFormat; import org.nutz.mvc.ActionFilter; import org.nutz.mvc.View; import org.nutz.mvc.view.ServerRedirectView; import org.nutz.mvc.view.UTF8JsonView; public class MyFilter implements ActionFilter { @Override public View match(HttpServletRequest request, Method method) { // 可用,直接加入HttpServletRequest参数,nutz能传值给它 // return new View() { // @Override // public void render(HttpServletRequest req, HttpServletResponse resp, Object obj) // throws Exception { // resp.sendRedirect("index.jsp"); // resp.flushBuffer(); // } // }; ServerRedirectView v1=new ServerRedirectView("/index.jsp"); String go=request.getParameter("go"); if (go==null) return v1; if (go.equals("no")) { UTF8JsonView v=new org.nutz.mvc.view.UTF8JsonView(new JsonFormat() ); v.setData("dd");//json 格式 return v; } return null; } }
3.2. 使用方法是在主模块、或子模块、或入口函数用如下定义:
@Filters({@By(type=自定义过滤器类1.class),@By(type=自定义过滤器类2.class)})
例:
import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.By; import org.nutz.mvc.annotation.Filters; import org.nutz.mvc.annotation.Ok; @Ok("json") @Filters({@By(type=MyFilter.class)}) public class HelloWorld { @At("/yousay") public String tellMore(){ return "yousay"; } }
3.3. 例子说明
上面两步中的例子,是配套的,省略了web.xml、主模块,具体见有关的hello mvc方面的完整例子。
使用时:
(1)输入http://localhost:8084/HelloNutz4/yousay?go=no ,返回UTF8JsonView定义的视图,输出”dd”信息;
(2) 输入 http://localhost:8084/HelloNutz4/yousay?go=yes,返回ServerRedirectView视图。打开index.jsp网页,该网页在工程根目录下。
(3) 输入http://localhost:8084/HelloNutz4/yousay时,执行接口函数tellMore(),输出“yousay”信息。
(4) 以ajax方式,请求时,服务器无法重定向。即,以ajax方式提交http://localhost:8084/HelloNutz4/yousay?go=yes,网址,在浏览器中无法跳转到index.jsp网页。
(5) 上面中的http://localhost:8084/HelloNutz4 表示,服务器于本地,工程项目为HelloNutz4.不同的工程,这里不同