Java Url Rewrite Tool : UrlRewriteFilter
来源:互联网 发布:js获取img的src属性值 编辑:程序博客网 时间:2024/05/16 06:44
Url rewrite is a common requirement in the web development. Apache Web Server uses its module mod_rewrite to offere a powerful Url rewrite function. In this post, i make some introduction to UrlRewriteFilter which is a very powerful tool just like Apache's mod_rewrite.
Here is the detailed manul UrlRewriteFilter. It is east to use in your Java web project following the steps. It is also apparently that UrlRewriteFilter takes great advantage of Java Servlet's filter. In the following recipe, i want to highligh the java annotation implementation.
UrlRewriteFilter provides three kinds of annotations: @HttpUrl , @HttpParam @HttpJson
@Retention(RetentionPolicy.SOURCE)@Target(ElementType.METHOD)public @interface HttpUrl { String value(); /** * A weighting to be applied to the url, if higher it will move this url to the "top" if lower more towards the * "bottom". * * @return weight */ int weight() default 0;}
@Retention(RetentionPolicy.SOURCE)@Target(ElementType.PARAMETER)public @interface HttpParam { /** * If not set will use the name of the parameter (case insensitive). * can be a expression ie, $1 (the first group of @HttpUrl regexp), %{header:user-agent} (the user agent header). * * @return value */ String value() default "[ unassigned ]";}
@Retention(RetentionPolicy.SOURCE)@Target(ElementType.METHOD)public @interface HttpJson { String value() default "[ unassigned ]"; /** * A weighting to be applied to the url, if higher it will move this url to the "top" if lower more towards the * "bottom". * * @return weight */ int weight() default 0;}For those annotions, UrlRewriteFilter project creates a annotation processor named UrlRewriteAnnotationProcessor to handle them.
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if (isBlank(dest)) { if (roundEnv.processingOver()) infoMsg(getClass().getSimpleName() + ": -AurlrewriteDest not specified, annotations ignored"); return true; } debugMsg("process"); Set<? extends Element> urlDeclarations = roundEnv.getElementsAnnotatedWith(HttpUrl.class); for (Element element : urlDeclarations) { processedAnnotations.add(new ProcessedHttpUrlAnnotation(element)); } Set<? extends Element> jsonDeclarations = roundEnv.getElementsAnnotatedWith(HttpJson.class); for (Element element : jsonDeclarations) { processedJsonAnnotations.add(new ProcessedHttpJsonAnnotation(element)); } Set<? extends Element> exceptionDeclarations = roundEnv.getElementsAnnotatedWith(HttpExceptionHandler.class); for (Element element : exceptionDeclarations) { httpExceptionHandlers.add(new ProcessedHttpExceptionAnnotation(element)); } if (roundEnv.processingOver()) { if (processedAnnotations.size() > 0) { infoMsg("Got " + processedAnnotations.size() + " @HttpUrl annotations"); } if (processedJsonAnnotations.size() > 0) { infoMsg("Got " + processedJsonAnnotations.size() + " @HttpJson annotations"); processedAnnotations.addAll(processedJsonAnnotations); } Collections.sort(processedAnnotations); if (httpExceptionHandlers.size() > 0) { infoMsg("Got " + httpExceptionHandlers.size() + " @HttpExceptionHandler annotations"); Collections.sort(httpExceptionHandlers); } try { File destFile = new File(dest); if (!destFile.exists()) { checkDirsExistMkdir(destFile.getParentFile()); destFile.createNewFile(); } if (!destFile.canWrite()) { throw new IOException("cannot write to " + destFile.getName()); } if (errorDuringProcessing) { errorMsg("Error occured during processing deleting generated file."); destFile.delete(); } else { PrintWriter pw = new PrintWriter(destFile); infoMsg("Writing to " + destFile); outputRules(pw); outputExceptionHandlers(pw); pw.close(); } } catch (FileNotFoundException e) { errorMsg(e); e.printStackTrace(); } catch (IOException e) { errorMsg(e); e.printStackTrace(); } } return true; }
- Java Url Rewrite Tool : UrlRewriteFilter
- UrlRewriteFilter url过滤
- 用 UrlRewriteFilter 实现 URL 重写
- 用 UrlRewriteFilter 实现 URL 重写
- Url Rewrite
- URL Rewrite
- URL rewrite
- url rewrite
- URL REWRITE
- URL Rewrite
- URL Rewrite
- url rewrite
- URL Rewrite
- URL Rewrite
- URL rewrite
- Java伪静态--urlrewritefilter
- UrlRewriteFilter
- UrlRewriteFilter
- 用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
- Redhat安装oracle 10g
- 马云邮件阿里巴巴年终奖
- Eclipse中web-inf和meta-inf文件夹的信息
- 卡方检验用于特征选择
- Java Url Rewrite Tool : UrlRewriteFilter
- ThinkPHP学习笔记(十六)使用视图(数据库视图)和缓存
- 栈的简单应用——四则运算(二)
- Wp8开发环境搭建总结
- 实时操作系统主流调度方法RMS
- 51单片机程序下载、ISP及串口基础知识
- Codeforces Round #165 (Div. 1)
- Divide Two Integers
- 定制initd.img