yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件

yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件###引入Maven依赖“`htmlcom.yahoo.platform.yuiyuicompressor2.4.8“`Java代码“`javapackagecom.itshidu.jeelite.common.web;importcom.itshidu.jeelite.common.util.Compres…

大家好,又见面了,我是你们的朋友全栈君。

使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件

### 引入Maven依赖

“`html

com.yahoo.platform.yui

yuicompressor

2.4.8

“`

Java 代码

“`java

package com.itshidu.jeelite.common.web;

import com.itshidu.jeelite.common.util.CompressorUtil;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.io.IOException;

import java.util.concurrent.ConcurrentHashMap;

/**

* 自动压缩JS与CSS

* 当访问指定的目录时,会自动压缩并重定向,我们正常开发访问即可

*/

@WebFilter(urlPatterns={“/res/*”})

public class YUICompressorFilter implements Filter{

//URL对应的文件最后修改时间是什么

private static ConcurrentHashMap LastModify = new ConcurrentHashMap();

/* —- Filter —- */

@Override

public void destroy() { }

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) arg0;

HttpServletResponse response = (HttpServletResponse) arg1;

ServletContext application = request.getServletContext();

//String basepath=request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+request.getContextPath()+”/”;

String distpath = “/WEB-INF/yuimin”;

String distDirAbs = application.getRealPath(distpath); //发布的真实文件路径

String path = request.getServletPath(); //访问的URL:/res/xx/xxxx.js

String srcabs = application.getRealPath(path);

File srcfile = new File(srcabs); //访问的源文件

File distfile = new File(distDirAbs,path); //最终发布在项目中的压缩文件

if(!path.endsWith(“.js”)&&!path.endsWith(“.css”)){

chain.doFilter(request,response);return;

}

if(!distfile.getParentFile().exists()){

distfile.getParentFile().mkdirs();

}

if(!srcfile.exists()){ //源文件不存在

chain.doFilter(request,response);return;

}

if(LastModify.get(path)==null#124;#124;srcfile.lastModified()!=LastModify.get(path)){ //如果源文件被修改

CompressorUtil.compress(srcfile,distfile);

LastModify.put(path,srcfile.lastModified());

System.out.println(“压缩:”+path);

}

request.getRequestDispatcher(distpath+path).forward(request,response);

}

@Override

public void init(FilterConfig arg0) throws ServletException { }

}

“`

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161216.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月18日 上午11:00
下一篇 2022年7月18日 上午11:00


相关推荐

  • 迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?[通俗易懂]

    迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?[通俗易懂]你是否正在寻找关于文件后缀的内容?让我把最实时的东西奉献给你:迅雷BT文件后缀是什么?BT是一个后缀名为.torrent的小文件,它里面保存了服务器地址、要下载的文件的大孝分成的块数以及各种下载参数设置,这个文件一般在20k-100k大小,可以把*.php直接改成*.torrent试试!要么就是文件制作出错!在去这个页面下载一次,当弹出迅雷下载的时候点取消.让Windows下载.会出现保存对话框…

    2025年8月11日
    7
  • protel99se精彩教程[通俗易懂]

    protel99se精彩教程[通俗易懂]网上盛行的那个protel99se精彩教程中,PCB通用封装在哪?

    2022年5月30日
    37
  • CMD命令行杀进程[通俗易懂]

    CMD命令行杀进程[通俗易懂]1、打开CMD,输入tasklist2、根据进程名杀进程taskkill/f/t/imGoogleCrashHandler.exe

    2025年7月26日
    5
  • java命令行执行 jar_java命令打包jar

    java命令行执行 jar_java命令打包jar摘要这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包。学会如何写一段转换jar包的程序,将你的jar包转换成你能使用java-jar命令运行jar包或象在windows系统上那样通过双击来运行jar包。你可以很容易地将一个应用的所有的类和资源打包到一个jar文件中去。事实上,这只是打包的一个原因。另一个原因是让用户很容易地执行包中的应用。那么在java的…

    2022年10月5日
    4
  • navicatpremium 15 mac 激活码(JetBrains全家桶)

    (navicatpremium 15 mac 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    74
  • c++int转换成char_字符数字转为int型

    c++int转换成char_字符数字转为int型1.通过ascii码:chara=’0′;intia=(int)a;/*notethattheintcastisnotnecessary–intia=awouldsuffice*/cout<<ia<<endl;结果如下:可以看出这种方法得到的其实是char对应的ascii码。因为ascii码…

    2022年10月2日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号