星抹微云 2017-10-24 01:25 采纳率: 100%
浏览 1276
已采纳

webuploader用 servlet转发给jsp,jsp页面收不到呢?

图片说明
这是servlet 代码

 package com.servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


public class UploadServlet extends HttpServlet {
        @SuppressWarnings({ "rawtypes", "null" })
        public void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            PrintWriter out=response.getWriter();
            try{
            final long MAX_SIZE = 3* 1024 * 1024;// 设置上传文件最大为 3M
            // 允许上传的文件格式的列表
            final String[] allowedExt = new String[] {"jpg","jpeg","gif"};
            response.setContentType("text/html");
            // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
            DiskFileItemFactory dfif = new DiskFileItemFactory();
            dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
            dfif.setRepository(new File(request.getRealPath("/")+ "upload"));// 设置存放临时文件的目录,web根目录下的upload目录
            System.out.println("临时目录:"+new File(request.getRealPath("/")+ "upload"));
            // 用以上工厂实例化上传组件
            ServletFileUpload sfu = new ServletFileUpload(dfif);
            // 设置最大上传尺寸
            sfu.setSizeMax(MAX_SIZE);
            // 从request得到 所有 上传域的列表
            List fileList = null;
            try {
                fileList = sfu.parseRequest(request);   
            } catch (FileUploadException e) {// 处理文件尺寸过大异常
                if (e instanceof SizeLimitExceededException) {
                    out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节!");
                    return;
                }
                e.printStackTrace();
            }
            // 没有文件上传
            if (fileList == null || fileList.size() == 0) {
                out.println("请选择上传文件!");
                return;
            }
            // 得到所有上传的文件
            Iterator fileItr = fileList.iterator();
            System.out.println("fileList:"+fileList);
            // 循环处理所有文件 

            while (fileItr.hasNext()) {
                FileItem fileItem = null;
                String path = null;
                long size = 0;
                // 得到当前文件
                fileItem = (FileItem) fileItr.next();
                // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
                if (fileItem == null || fileItem.isFormField()) {
                    continue;
                }
                // 得到文件的完整路径
                path = fileItem.getName();
                // 得到文件的大小
                size = fileItem.getSize();
                if ("".equals(path) || size == 0) {
                    out.println("请选择上传文件!");
                    return;
                }
                // 得到去除路径的文件名
                String t_name = path.substring(path.lastIndexOf("//") + 1);//kaola.jpeg
                System.out.println("t_name:"+t_name);
                // 得到文件的扩展名(无扩展名时将得到全名)
                String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);//jpeg
                System.out.println(t_ext);
                // 拒绝接受规定文件格式之外的文件类型
                 String tmp=Arrays.toString(allowedExt);
                 Pattern p = Pattern.compile(t_ext);  
                 Matcher m = p.matcher(tmp); 
                 if (m.find()==true) {
                    //如果符合上传的格式
                        String now=new SimpleDateFormat("yyyyMMddhhmmssSSS").format(new Date());
                        System.out.println(now);
                        // 根据系统时间生成上传后保存的文件名
                        String prefix = now;
                        // 保存的最终文件完整路径,保存在web根目录下的upload目录下
                        String u_name = request.getRealPath("/") + "upload/"
                                + prefix + "." + t_ext;
                        String dwc;
                        dwc=u_name;

                     **  //转发给jsp页面
                        request.setAttribute("dwc",dwc);                                                   

                        request.getRequestDispatcher( "/files1/xinzengchandizhengmingg**uanli.jsp").forward(request,response); 


                        System.out.println("最终保存目录:"+u_name);
                        try {
                            File file = new File(u_name);
                            // 保存文件
                            fileItem.write(file);
                            out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext
                                    + " &nbsp;&nbsp;文件大小: " + size + "字节<p />");                                    
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                }else {
                    System.out.println("不符合规定");
                    out.print("上传文件不符合规定!");
                }
            }
            }catch(Exception e){
                out.print("系统异常,请稍后再试!");
                e.printStackTrace();
            }
        }             
    }

** //转发给jsp页面
request.setAttribute("dwc",dwc);

                    request.getRequestDispatcher( "/files1/xinzengchandizhengmingg**uanli

这也我想把上传成功的文件名传给jsp页面,然后添加到数据库,,试了好多方法,传不去过去值。

  • 写回答

6条回答 默认 最新

  • 星抹微云 2017-10-24 01:29
    关注

    jsp页面代码 特别长

     <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!--_meta 作为公共模版分离出去-->
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="renderer" content="webkit|ie-comp|ie-stand">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
        <meta http-equiv="Cache-Control" content="no-siteapp" />
        <link rel="Bookmark" href="<%=basePath %>favicon.ico" >
        <link rel="Shortcut Icon" href="<%=basePath %>favicon.ico" />
        <!--[if lt IE 9]>
        <script type="text/javascript" src="<%=basePath %>lib/html5.js"></script>
        <script type="text/javascript" src="<%=basePath %>lib/respond.min.js"></script>
        <![endif]-->
        <link rel="stylesheet" type="text/css" href="<%=basePath %>static/h-ui/css/H-ui.min.css" />
        <link rel="stylesheet" type="text/css" href="<%=basePath %>static/h-ui.admin/css/H-ui.admin.css" />
        <link rel="stylesheet" type="text/css" href="<%=basePath %>lib/Hui-iconfont/1.0.8/iconfont.css" />
    
        <link rel="stylesheet" type="text/css" href="<%=basePath %>static/h-ui.admin/skin/default/skin.css" id="skin" />
        <link rel="stylesheet" type="text/css" href="<%=basePath %>static/h-ui.admin/css/style.css" />
        <!--[if IE 6]>
        <script type="text/javascript" src="http://lib.h-ui.net/DD_belatedPNG_0.0.8a-min.js" ></script>
        <script>DD_belatedPNG.fix('*');</script><![endif]-->
        <!--/meta 作为公共模版分离出去-->
    
        <title>新增产品认证管理</title>
        <link href="<%=basePath %>lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css" />
        <script src="<%=basePath %>My97DatePicker/WdatePicker.js"></script>
    </head>
    <body>
    <div class="page-container">
        <form class="form form-horizontal" id="form-article-add" action="<%=basePath %>prove_origin/add.action" method="post">
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>编号:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.number">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>发证日期:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" id="" name="p.certificate_time" onclick="WdatePicker()" placeholder="YYYY-MM-DD">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>产地编号:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.origin_num">
                </div>
            </div>
            <!-- <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>产地(乡、村):</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.origin">
                </div>
            </div> -->
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>产地(乡、村):</label>
                <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
                    <select name="" class="select">
                        <option value="0">项目</option>
                        <option value="1">人手</option>
                        <option value="2">原料挑选台</option>
                        <option value="3">切割机</option>
                        <option value="4">脱水机</option>
                        <option value="4">干燥机</option>
                        <option value="4">分选机</option>
    
                    </select>
                    </span> </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>生产者:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.producers">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>产品名称:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.product_name">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>数量(吨):</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.quantity">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>收获日期:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" id="" name="p.gain_time" onclick="WdatePicker()" placeholder="YYYY-MM-DD">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>质量检测类型:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.detection_type">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>质量检测结果:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.detection_result">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>运销商:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.marketing_agency">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>电话:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.tel">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>经办人:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" value="" placeholder="" id="" name="p.agent">
                </div>
            </div>
    
    <!--测试接收到servlet传值显示在text框中-->
    <input type="text" class="input-text" value='${dwc}' placeholder="" id="" name="">
    
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-2">图片上传:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <div class="uploader-list-container">
                        <div class="queueList">
                            <div id="dndArea" class="placeholder">
                                <div id="filePicker-2"></div>
                                <p>或将照片拖到这里,单次最多可选300张</p>
                            </div>
                        </div>
                        <div class="statusBar" style="display:none;">
                            <div class="progress"> <span class="text">0%</span> <span class="percentage"></span> </div>
                            <div class="info"></div>
                            <div class="btns">
                                <div id="filePicker2"></div>
                                <div class="uploadBtn">开始上传</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row cl">
                <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
                    <button class="btn btn-primary radius" type="submit"><i class="Hui-iconfont">&#xe632;</i> 保存</button>
                    <a href="<%=basePath %>prove_origin/showall.action" target="mainFrame"><button class="btn btn-default radius" type="button">&nbsp;&nbsp;取消&nbsp;&nbsp;</button></a>
                </div>
            </div>
        </form>
    </div>
    
    <!--_footer 作为公共模版分离出去-->
    <script type="text/javascript" src="<%=basePath %>lib/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="<%=basePath %>lib/layer/2.4/layer.js"></script>
    <script type="text/javascript" src="<%=basePath %>lib/webuploader/0.1.5/webuploader.min.js"></script>  
     <script type="text/javascript" src="<%=basePath %>lib/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script> 
    
    <script type="text/javascript" src="<%=basePath %>lib/jquery.validation/1.14.0/jquery.validate.js"></script>
    <script type="text/javascript" src="<%=basePath %>lib/jquery.validation/1.14.0/validate-methods.js"></script>
    <script type="text/javascript" src="<%=basePath %>lib/jquery.validation/1.14.0/messages_zh.js"></script>
    <script type="text/javascript" src="<%=basePath %>static/h-ui/js/H-ui.js"></script>
    <script type="text/javascript" src="<%=basePath %>static/h-ui.admin/js/H-ui.admin.page.js"></script></span>
    
    <!--/_footer /作为公共模版分离出去-->
    
    <!--请在下方写此页面业务相关的脚本-->
    <script type="text/javascript" src="<%=basePath %>lib/webuploader/0.1.5/webuploader.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.skin-minimal input').iCheck({
                checkboxClass: 'icheckbox-blue',
                radioClass: 'iradio-blue',
                increaseArea: '20%'
            });
    
            $list = $("#fileList"),
                    $btn = $("#btn-star"),
                    state = "pending",
                    uploader;
    
            var uploader = WebUploader.create({
                auto: true,
                swf: 'lib/webuploader/0.1.5/Uploader.swf',
    
                // 文件接收服务端。
                server: 'http://localhost:8080/Tjzhuisu/uploadServlet',
    
                // 选择文件的按钮。可选。
                // 内部根据当前运行是创建,可能是input元素,也可能是flash.
                pick: '#filePicker',
    
                // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
                resize: false,
                // 只允许选择图片文件。
                accept: {
                    title: 'Images',
                    extensions: 'gif,jpg,jpeg,bmp,png',
                    mimeTypes: 'image/*'
                }
            });
            ////////////////////////////////////////////
    
    
    
            ///////////////////////////////////////////
             // 当有文件添加进来的时候
            uploader.on( 'fileQueued', function( file ) {
                var $li = $(
                                '<div id="' + file.id + '" class="item">' +
                                '<div class="pic-box"><img></div>'+
                                '<div class="info">' + file.name + '</div>' +
                                '<p class="state">等待上传...</p>'+
                                '</div>'
                        ),
                        $img = $li.find('img');
                $list.append( $li );
    
                // 创建缩略图
                // 如果为非图片文件,可以不用调用此方法。
                // thumbnailWidth x thumbnailHeight 为 100 x 100
                uploader.makeThumb( file, function( error, src ) {
                    if ( error ) {
                        $img.replaceWith('<span>不能预览</span>');
                        return;
                    }
    
                    $img.attr( 'src', src );
                    alert('图片地址   '+src);
                }, thumbnailWidth, thumbnailHeight );
            });
    
            // 文件上传过程中创建进度条实时显示。
            uploader.on( 'uploadProgress', function( file, percentage ) {
                var $li = $( '#'+file.id ),
                        $percent = $li.find('.progress-box .sr-only');
    
                // 避免重复创建
                if ( !$percent.length ) {
                    $percent = $('<div class="progress-box"><span class="progress-bar radius"><span class="sr-only" style="width:0%"></span></span></div>').appendTo( $li ).find('.sr-only');
                }
                $li.find(".state").text("上传中");
                $percent.css( 'width', percentage * 100 + '%' );
            });
    
            // 文件上传成功,给item添加成功class, 用样式标记上传成功。
            uploader.on( 'uploadSuccess', function( file ) {
                $( '#'+file.id ).addClass('upload-state-success').find(".state").text("已上传");
            });
            //回调函数************************************************************
            uploader.on( 'uploadSuccess', function( file,response ) {
                var data = response.header;
                alert(data);
    
                alert(data.success);
            });
    
            // 文件上传失败,显示上传出错。
            uploader.on( 'uploadError', function( file ) {
                $( '#'+file.id ).addClass('upload-state-error').find(".state").text("上传出错");
            });
    
            // 完成上传完了,成功或者失败,先删除进度条。
            uploader.on( 'uploadComplete', function( file ) {
                $( '#'+file.id ).find('.progress-box').fadeOut();
            });
            uploader.on('all', function (type) {
                if (type === 'startUpload') {
                    state = 'uploading';
                } else if (type === 'stopUpload') {
                    state = 'paused';
                } else if (type === 'uploadFinished') {
                    state = 'done';
                }
    
                if (state === 'uploading') {
                    $btn.text('暂停上传');
                } else {
                    $btn.text('开始上传');
                }
            });
    
            $btn.on('click', function () {
                if (state === 'uploading') {
                    uploader.stop();
                } else {
                    uploader.upload();
                }
            });
    
        });
    
        (function( $ ){
            // 当domReady的时候开始初始化
            $(function() {
                var $wrap = $('.uploader-list-container'),
    
                // 图片容器
                        $queue = $( '<ul class="filelist"></ul>' )
                                .appendTo( $wrap.find( '.queueList' ) ),
    
                // 状态栏,包括进度和控制按钮
                        $statusBar = $wrap.find( '.statusBar' ),
    
                // 文件总体选择信息。
                        $info = $statusBar.find( '.info' ),
    
                // 上传按钮
                        $upload = $wrap.find( '.uploadBtn' ),
    
                // 没选择文件之前的内容。
                        $placeHolder = $wrap.find( '.placeholder' ),
    
                        $progress = $statusBar.find( '.progress' ).hide(),
    
                // 添加的文件数量
                        fileCount = 0,
    
                // 添加的文件总大小
                        fileSize = 0,
    
                // 优化retina, 在retina下这个值是2
                        ratio = window.devicePixelRatio || 1,
    
                // 缩略图大小
                        thumbnailWidth = 110 * ratio,
                        thumbnailHeight = 110 * ratio,
    
                // 可能有pedding, ready, uploading, confirm, done.
                        state = 'pedding',
    
                // 所有文件的进度信息,key为file id
                        percentages = {},
                // 判断浏览器是否支持图片的base64
                        isSupportBase64 = ( function() {
                            var data = new Image();
                            var support = true;
                            data.onload = data.onerror = function() {
                                if( this.width != 1 || this.height != 1 ) {
                                    support = false;
                                }
                            }
                            data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
                            return support;
                        } )(),
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已采纳回答 7月28日

悬赏问题

  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机