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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 支持向量回归(Support Vector Regression)

    支持向量回归(Support Vector Regression)支持向量回归(SupportVectorRegression)支持向量机除了能够分类,还可以用于回归。回归的目的是得到一个能够尽量拟合训练集样本的模型f(x)f(\mathbf{x})f(x),通常用的方法是构建一个样本标签与模型预测值的损失函数,使损失函数最小化从而确定模型f(x)f(\mathbf{x})f(x)。例如,在线性回归模型中,损失函数(L2损失,L1损失,huber损失)由模型输出f(x)f(\mathbf{x})f(x)与真实输出yyy之间的差别来计算,通过最小化损失函数来确

    2022年6月5日
    76
  • c语言建立二叉树的算法代码(C语言数据结构二叉树实现)

    构造二叉树结点结构typedefstructBT{chardata;structBT*l_chrild;structBT*r_chrild;}BT;创建二叉树BT*Create_tree()//创建二叉树{BT*bt;charx;scanf(“%c”,&x);getchar();if(x

    2022年4月12日
    57
  • Win10 快捷键大全(史上最全)「建议收藏」

    Win10 快捷键大全(史上最全)「建议收藏」windows10常用快捷键。win10正式版是微软续已发布的Windows系统的最新版操作系统。windows10(win10正式版)让人感到最意外的就是直接跳过了win9。那么今天我为大家讲解他推出的常用快捷键。希望能够帮到大家。复制、粘贴和其他常规键盘快捷方式按此键执行此操作Ctrl+X剪切选定项Ctrl+C(或Ctrl+Insert)复制选…

    2022年5月30日
    39
  • Flow Control(流控)

    Flow Control(流控)Backpressure(背压)只是解决FlowControl的其中一个方案。就像小学做的那道数学题:一个水池,有一个进水管和一个出水管。如果进水管水流更大,过一段时间水池就会满(溢出)。这就是没有FlowControl导致的结果。而解决FlowControl有几种思路呢?(1)Backpressure,就是消费者需要多少,生产者就生产多少。这有点类似于TCP里的流量控制,接收方根据自己的…

    2022年6月6日
    31
  • mybatis-plus超详细讲解[通俗易懂]

    mybatis-plus超详细讲解[通俗易懂]mybatis-puls超详细讲解本文笔记都是观看狂神老师视频手敲的,敲完的时候发现一件挺奔溃的事,视频地址:https://www.bilibili.com/video/BV17E411N7KN视频地址这个老师讲课真的很好,学java后端的都可以去看一下,从基础到架构很详细,推荐给大家https://space.bilibili.com/95256449/狂神说最近做项目听到老师讲到使用…

    2022年5月5日
    44
  • Could not find artifact com.sun:tools:jar:1.5.0

    Could not find artifact com.sun:tools:jar:1.5.0【mavenpackage】,则依然报错,但报的是另外一个错误:[INFO]Scanningforprojects…[INFO][INFO]BuildingStruts2BlankWebapp1.0-SNAPSHOT[INFO][INFO]BUILDFAILURE[INFO][IN…

    2022年9月29日
    3

发表回复

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

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