第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Filter-緩存數(shù)據(jù)到內(nèi)存:學習筆記

標簽:
SQL Server

CacheFilter

import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.web.decorator.MyResponse;//单例public class CacheFilter implements Filter {    //实例变量[每个线程共享]    private Map<String,byte[]> cache = new HashMap<String,byte[]>();     public void destroy() {    }    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) res;        //NO1:取得客户端访问的资源路径        String uri = request.getRequestURI();        //NO2:根据uri去缓存中查询对应的页面资源有没有        byte[] data = cache.get(uri);        //NO3:如果没有        if(data==null){            //将请求和响应放行到web资源中               MyResponse myResponse = new MyResponse(response);            chain.doFilter(request,myResponse);            //NO4:将刚取得的数据放入到缓存中,便于下次重用            data = myResponse.getBuffer();            cache.put(uri,data);            System.out.println("从服务端取得资源");        //NO5:如果有,直接从缓存中了得数据        }        //NO6:向浏览器输出数据        response.getOutputStream().write(data);    }    public void init(FilterConfig filterConfig) throws ServletException {    }}

压缩资源:

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ShowServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        PrintWriter pw = response.getWriter();        ServletOutputStream sout = response.getOutputStream();        sout.write(data.getBytes("UTF-8"));        MyServletOutputStream mySout = myResponse.getOutputStream();    sout.write("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes());        //mySout.write("AAAAAA".getBytes[]);    }}

MyResponse

import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;//对response对象的装饰/包装public class MyResponse extends HttpServletResponseWrapper{    private HttpServletResponse response;    //缓存    private ByteArrayOutputStream bout = new ByteArrayOutputStream();    private PrintWriter pw;    public MyResponse(HttpServletResponse response) {        super(response);        this.response = response;    }    //重写父类方法,目的是将字节输出到缓存中去[字节]    public ServletOutputStream getOutputStream() throws IOException {        return new MyServletOutputStream(bout);    }    //重写父类方法,目的是将字符输出到缓存中去[字符]    public PrintWriter getWriter() throws IOException {        pw = new PrintWriter(new OutputStreamWriter(bout,"UTF-8"));        return pw;    }    //取得缓存中的数据    public byte[] getBuffer(){        if(pw!=null){            pw.flush();        }        return bout.toByteArray();    }}//带有缓存功能ServletOutputStreamclass MyServletOutputStream extends ServletOutputStream{    private ByteArrayOutputStream bout;    public MyServletOutputStream(ByteArrayOutputStream bout) {        this.bout = bout;    }    public void write(int b) throws IOException {    }    public void write(byte[] bytes) throws IOException {        //将字节数组的内容写入缓存        bout.write(bytes);        //确保所有字节数组内容进入缓存        bout.flush();    }}

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消