zoukankan      html  css  js  c++  java
  • 第三方控件

    1. Fileitem接口

    FileItem是一个接口,处理表单内容以及文件内容的的方法。在应用过程中,每一个表单中的单个字段袁术,都会被封装成一个FileItme类的对象,通过调用FileItem对象的相关方法可以得到相关表单字段元素的数据。

    FileItem常用接口

     

    方法   返回类型     说明
    getFieldName() String 返回表单字段元素NAME属性值
    isFormField() boolean

    判断FileItem封装的数据是属于普通表单字段还是文件表单字段

    普通字段:true;

    文件表单字段:false;

    getName() String 返回上传文件字段中的文件名,文件名通常是不含路径信息的,取决于浏览器
    write(File file) void 将FileItem对象中的恶内容保存到指定的文件中
    getString(String encoding) String 按照指定编码格式将内容转换成字符串返回

     

     

     

     

     

     

     

    2.FileIteFactory接口与DiskFileItemFactory类

    FileItemFactroy是一个接口,用于构建FileItem实例工厂。

    DiskFileItemFactroy类是FileItemFactory接口的实现类,在使用过程中,可以使用DiskFileItemFactory构造一个FileItemFactory接口类型实例:

    FileItemFactory factory =new DiskFileItemFactory();

    3.ServletFileUpload类

     ServletFileUpload类是Apache文件上传组件中,用于处理文件上传的一个核心类。它的作用是以List形式返回每一个被封装成FileItem类型的表单元素集合。

    ServletFileUpload类的构造语法:

    public ServletFileUpload(FileItemFactory fileitemFactory)

    ServletFileUpload 常用方法                                                    

     方法 返回类型  说明
    isMultpartContent(HttpServletRequest request)  boolean 静态方法 ,用去判断请求数据中的内容是否multipart/from-data
    parseRequest(HttpServletRequest request) List 将请求数据中的每一个字段,单独封装成FileItem对象,并以集合方式返回

     1.复制Commons-io-2.4.jar,commons-fileupload-1.2.2.jar两个包到WEB-INT/lib下,Buil path引用两个包。

    表单<From>标签中

    action="<%request.getcontextpath() %>jsp/adimn/daAdd.jsp" method="post" enctype="multype/form-data"
    //action提交地址...enctype="multipart/form-data"表示明确表单提交时采用二进制进行数据传输,简单说就是表单提交时可以多部分内容进行提交,可能是普通表单,也可能是包含文件表单

    设置上传文件标签

    <input type="file" name="picpath" value=""/>

     

     

    //导入相关的包

    <%@page import="java.io.*,java.util.*,org.apache.commons.fileupload.*" %>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>

    boolean bRet = false;
    boolean bUpload = false;
    String uploadFileName = "";
    String fieldName = "";
    News news = new News();//实例化封装属性的News对象
    news.setCreatedate(new Date());//新闻创建时间
    //读取request请求,判断是否 是多部分表达提交(二进制进行数据传输,可能是普通表单,也可能是包含文件表单)
    boolean isMultipart=ServletFileUpload.isMultipartContent(request);
    //获得文件夹的位置(上传的图片保存在该文件夹中)
    String uploadFilePath = request.getSession().getServletContext().getRealPath("/upload/" );
    if (isMultipart == true) {
        //创建FileItemFactory实例
        FileItemFactory factory = new DiskFileItemFactory();
        //创建ServletFileUpload实例
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            //解析Request请求中的数据(返回一个集合)获取客户端提交过来的所有表单元素
            List<FileItem> items = upload.parseRequest(request);
            for(FileItem item:items){
                //判断表单元素类型,true为普通表单元素,false为文件
                if (item.isFormField()){
                    //获取表单元素名字
                    fieldName = item.getFieldName();
                    //如果表单元素名字为title(判断元素 名称 与表单元素的对应关系)
                    if (fieldName.equals("title")){
                        //设置编码为UTF-8
                        news.setTitle(item.getString("UTF-8"));
                    }else if(fieldName.equals("id")){
                        String id = item.getString();
                        if (id != null && !id.equals("")){
                            //转换为Int类型
                            news.setId(Integer.parseInt(id));
                        }
    
                    }else if (fieldName.equals("categoryId")){
                        news.setCateforyId(Integer.parseInt(item.getString()));
                    }else if (fieldName.equals("summary")){
                        news.setSummary(item.getString("UTF-8"));
                    }else if (fieldName.equals("newscontent")){
                        news.setContent(item.getString("UTF-8"));
                    }else if(fieldName.equals("author")){
                        news.setAuthor(item.getString("UTF-8"));
                    }
                }else{
                    //读取文件元素的名称
                    String fileName = item.getName();
                    if (fileName != null && !fileName.equals("")) {
                        //获取上传文件的名称,并通过名称创建一个新File实例
                        File fullFile = new File(item.getName());
                        //从路径中提取文件本身名称,并构建一个新的file实例
                        File saveFile = new File(uploadFilePath, fullFile.getName());
                        //写入文件,开始 上传
                        item.write(saveFile);
                        //获取上传文件名称
                        uploadFileName = fullFile.getName();
                        //新闻对象中保存上传文件名称
                        news.setPicpath(uploadFileName);
                        //上传图片
                        bUpload = true;
                    }
                }
                
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    System.out.println("上传成功后的文件名是::"+news.getPicpath());
    
        //调用后台方法,将新闻信息插入数据库
        bRet=newsService.addNews(news);
    %>
    
    <%
    if (bRet) {
        //新闻添加成功跳转新闻列表页
        response.sendRedirect("newsDetailList.jsp");
    } else {
        //失败跳转到新闻添加的页面
        response.sendRedirect("newsDetailCreate.jsp");
    }
    %>
  • 相关阅读:
    Shell编程-05-Shell中条件测试与比较
    Shell编程-04-Shell中变量数值计算
    Shell编程-03-Shell中的特殊变量和扩展变量
    Shell编程-02-Shell变量
    Shell编程-01-Shell脚本初步入门
    Windows与Linux相互远程桌面连接
    awk基础05-自定义函数和脚本
    使用Kafka Connect创建测试数据生成器
    设置KAFKA
    Apache Kafka使用默认配置执行一些负载测试来完成性能测试和基准测试
  • 原文地址:https://www.cnblogs.com/lgxstudy/p/4265764.html
Copyright © 2011-2022 走看看