前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件

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

作者头像
全栈程序员站长
发布2022-09-09 09:53:07
4380
发布2022-09-09 09:53:07
举报
文章被收录于专栏:全栈程序员必看

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

使用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.cn/161216.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档