美文网首页
uploadListener

uploadListener

作者: xiongsirui | 来源:发表于2016-08-28 14:41 被阅读102次

    一、过滤器简介
    二、编码步骤
    1、 实现接口javax.servlet.Filter
    2、在web.xml中配置需要过滤的资源
    三、过滤器的执行过程
    //目标资源执行前执行
    chain.doFilter(request,response)
    //目标资源执行后执行
    四、串联过滤器
    五、4个简单案例
    1、解决POST和响应输出的中文编码过滤器
    2、控制动态资源不要缓存
    3、控制静态资源的缓存时间
    4、自动登入
    六、过滤器配置细节
    FORWARD INCLUDE ERROR REQUEST
    七、巩固装饰设计模式
    八、4个案例
    1、解决get请求方式的中文编码
    2、脏话过滤器
    3、html标记过滤器
    4、gzip过滤器
    一、文件上传原理分析
    1、文件上传的前提:(记住)
    a、表单的method必须是post
    b、表单的enctype属性必须是multipart/form-data
    c、表单中提供<input type="file"上传>


    image.png

    2、form表单的enctype属性
    该属性的作用是用来告知服务器,请求正文内容的MIME类型的。相当于请求消息头Content-Type。

    该属性的作用是用来告知服务器,请求正文内容的MIME类型的。相当于请求消息头Content-Type。


    image.png

    enctype=application/x-www-form-urlencoded(Content-Type=application/x-www-form-urlencoded)默认值。

    username=abc&password=123

    服务器端:String vlaue = request.getParameter(String name)只能读取请求正文是application/x-www-form-urlencoded类型的数据。

    enctype=multipart/form-data(Content-Type=multipart/form-data)


    image.png

    二、利用第三方组件实现文件上传
    1、apache的:commons-fileupload组件。
    依赖:commons-io组件


    image.png

    2、开发主要的步骤


    image.png

    三、文件上传中需要考虑的几个问题
    1、保证服务器的安全
    解决:把上传的文件放到用户访问不到的地方(放到WEB-INF目录下)

    2、重名文件被覆盖的问题


    image.png

    解决办法:把文件名弄成唯一即可。
    a.txt----------------------->UUID_a.txt

    GUID也就是UUID。都能生成唯一的标识符。

    3、避免一个文件夹中的文件过多
    方案一:按照日期分目录存储
    方案二:按照文件名的hashCode随机生成目录。

    1010 1011 1111 1011 1010 1011 1111 1011
    0000 0000 0000 0000 0000 0000 0000 1111 &


    0000 0000 0000 0000 0000 0000 0000 1011------------------>00001111--->015

    1010 1011 1111 1011 1010 1011 1111 1011
    0000 0000 0000 0000 0000 0000 1111 0000 &


    0000 0000 0000 0000 0000 0000 1111 0000 >>

    0000 0000 0000 0000 0000 0000 0000 1111------------------>00001111--->015

    4、限制文件的类型:并不能严格做到
    a、文件的扩展名
    b、文件的MIME类型(text/html.image/*)

    5、上传文件大小限制
    web方式上传的文件不易过大。
    a、限制单个文件的大小:

    b、限制总文件的大小:


    image.png

    6、中文乱码
    a、普通字段
    FileItem.getString(String charset);
    b、上传的中文文件
    request.setCharacterEncoding("UTF-8");
    7、手工处理文件上传时的临时文件问题
    1、文件上传时需要用缓存。默认10Kb。
    2、默认的临时文件的存放目录,系统的临时目录。

    DiskFileItemFactory(int size,File tempDirecotry);

    FileItem.delete():清理临时文件。

    四、文件的下载

    五、观察者设计模式(监听器)
    Frame:触发事件的对象。事件源
    WindowListener:监听器。定义了一些方法,对应触发的事件。
    WindowEvent:事件对象。封装事件源。

    六、Servlet规范中的8个监听器
    1、监听ServleContxt、HttpSession、ServletRequest对象的创建和销毁的监听器
    ServletContextListener:
    HttpSessionListener:
    SerlvetRequestListener:

    2、监听ServletContext、HttpSession、ServletRequest属性(attributes)变化的监听器
    ServletContextAttributeListener:
    HttpSessionAttributeListener:
    SerlvetRequestAttributeListener:

    3、感知型监听器:不需要注册。
    HttpSessionBindingListener:实现该接口的类的实例,能够感知自己何时被放到了HttpSession域范围中,和何时从HttpSession域范围中删除。
    HttpSessionActivationListener:实现该接口的类的实例,能够感知自己何时随着HttpSession钝化和激活。

    注意:监听器要注册到事件对象上。web.xml中注册


    image.png

    七、监听器案例:踢人

    相关文章

      网友评论

          本文标题:uploadListener

          本文链接:https://www.haomeiwen.com/subject/iowzsttx.html