Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将值从Servlet传递到JSP_Java_Javascript_Jsp - Fatal编程技术网

Java 将值从Servlet传递到JSP

Java 将值从Servlet传递到JSP,java,javascript,jsp,Java,Javascript,Jsp,我试图将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码 使用输入页面选择文件 验证上载的文件 调用upload.java将上传的文件保存在WEB-INF中 对于上载的文件,选定的文件保存为my.txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 upload.java <div id="editor">${File_Text}</div> <form method="post" name="my

我试图将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码

  • 使用输入页面选择文件
  • 验证上载的文件
  • 调用upload.java将上传的文件保存在WEB-INF中
  • 对于上载的文件,选定的文件保存为my.txt
  • 使用缓冲区读取文件内容并将其保存到变量
  • 将其传递到JSP页面
  • upload.java

     <div id="editor">${File_Text}</div>
    
    <form method="post" name="myform" action="upload" target="_blank" enctype="multipart/form-data" style="position: absolute; right: -5%; top: 2%;">
     Left File :     <input type="file" name="dataFile1" id="fileChooser1" /><br><br>
     Right File : <input type="file" name="dataFile2" id="fileChooser2" /><br><br>
     Config File :<input type="file" name="dataFile3" id="fileChooser3" /><br><br>
    <button type="button" onclick="ValidateFile()">Click to Upload files</button>
    </form>
    <script type='text/javascript'>
    
    function ValidateFile()
    {
    var FileName1 = document.getElementById('fileChooser1').value;
    var FileName2 = document.getElementById('fileChooser2').value;
    var FileName3 = document.getElementById('fileChooser3').value;
    
    if(FileName1.length == 0 && FileName2.length == 0 && FileName3.length == 0)
    {
        alert("No files have been selected to upload"); 
    }
    
    else
    {
    if(FileName1 == FileName3 ||  FileName2 == FileName3)
        {
            alert("Configuration file should not be same as left or right files. Please check your uploads");
        }
    else
        {
            document.myform.submit();
        {
    
    }
    }
    </script>
    
    上传文件后

    response.setContentType("text/html");
    String LINE = "<br>";
    String filename = "/WEB-INF/my.txt";
    fileTxt = "";
    ServletContext context = getServletContext();
    InputStream is = context.getResourceAsStream(filename);
    if (is != null) {
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader reader = new BufferedReader(isr);
    PrintWriter writer = response.getWriter();
    String text = "";
    while ((text = reader.readLine()) != null) {
    fileTxt = text + LINE;
    }
    request.setAttribute("File_Text", fileTxt);
    RequestDispatcher rd = request.getRequestDispatcher("mypage.jsp");
    rd.forward(request, response);
    
    }
    
    response.setContentType(“text/html”);
    字符串行=“
    ”; 字符串filename=“/WEB-INF/my.txt”; fileTxt=“”; ServletContext=getServletContext(); InputStream=context.getResourceAsStream(文件名); 如果(is!=null){ InputStreamReader isr=新的InputStreamReader(is); BufferedReader读取器=新的BufferedReader(isr); PrintWriter=response.getWriter(); 字符串文本=”; 而((text=reader.readLine())!=null){ fileTxt=文本+行; } setAttribute(“文件\文本”,fileTxt); RequestDispatcher rd=request.getRequestDispatcher(“mypage.jsp”); 转发(请求、响应); }
    mypage.jsp

    <div id="editor"></div>
    
    <form method="post" name="myform" action="upload" target="_blank" enctype="multipart/form-data" style="position: absolute; right: -5%; top: 2%;">
     Left File :     <input type="file" name="dataFile1" id="fileChooser1" /><br><br>
     Right File : <input type="file" name="dataFile2" id="fileChooser2" /><br><br>
     Config File :<input type="file" name="dataFile3" id="fileChooser3" /><br><br>
    <button type="button" onclick="ValidateFile()">Click to Upload files</button>
    </form>
    <script type='text/javascript'>
    
    function ValidateFile()
    {
    var FileName1 = document.getElementById('fileChooser1').value;
    var FileName2 = document.getElementById('fileChooser2').value;
    var FileName3 = document.getElementById('fileChooser3').value;
    
    if(FileName1.length == 0 && FileName2.length == 0 && FileName3.length == 0)
    {
        alert("No files have been selected to upload"); 
    }
    
    else
    {
    if(FileName1 == FileName3 ||  FileName2 == FileName3)
        {
            alert("Configuration file should not be same as left or right files. Please check your uploads");
        }
    else
        {
            document.myform.submit();
        }
    
    var filecontent =   ${File_Text};
    var divv = document.getElementById("editor");
    divv.innerHTML = filecontent;
    
    }
    }
    </script>
    
    
    左侧文件:

    右文件:

    配置文件:

    单击以上载文件 函数ValidateFile() { var FileName1=document.getElementById('fileChooser1').value; var FileName2=document.getElementById('fileChooser2').value; var FileName3=document.getElementById('fileChooser3').value; if(FileName1.length==0&&FileName2.length==0&&FileName3.length==0) { 警报(“未选择要上载的文件”); } 其他的 { 如果(FileName1==FileName3 | | FileName2==FileName3) { 警报(“配置文件不应与左侧或右侧文件相同。请检查您的上载”); } 其他的 { document.myform.submit(); } var filecontent=${File_Text}; var divv=document.getElementById(“编辑器”); divv.innerHTML=文件内容; } }
    现在,当我点击上传按钮完成所有这些操作后,它就不起作用了,点击根本无法被识别,但是当我删除文件访问代码时,按钮就可以正常工作了

  • 为什么会这样?怎么办
  • 这是在JSP中访问servlet值的正确方法吗
  • ===================================================编辑=======================================

    只是为了进一步澄清,

  • 用户上传一个文件
  • 该文件另存为my.txt
  • 我正在打开此文件,读取其内容
  • 将这些内容添加到我的ACE编辑器中
  • 试试这个:

    while ((text = reader.readLine()) != null) {
    fileTxt = text + LINE;
    }
    request.setAttribute("File_Text", fileTxt);
    RequestDispatcher rd = request.getRequestDispatcher("mypage.jsp");    
    rd.forward(request, response);                                            
    

    Upload.java中没有更改

     <div id="editor">${File_Text}</div>
    
    <form method="post" name="myform" action="upload" target="_blank" enctype="multipart/form-data" style="position: absolute; right: -5%; top: 2%;">
     Left File :     <input type="file" name="dataFile1" id="fileChooser1" /><br><br>
     Right File : <input type="file" name="dataFile2" id="fileChooser2" /><br><br>
     Config File :<input type="file" name="dataFile3" id="fileChooser3" /><br><br>
    <button type="button" onclick="ValidateFile()">Click to Upload files</button>
    </form>
    <script type='text/javascript'>
    
    function ValidateFile()
    {
    var FileName1 = document.getElementById('fileChooser1').value;
    var FileName2 = document.getElementById('fileChooser2').value;
    var FileName3 = document.getElementById('fileChooser3').value;
    
    if(FileName1.length == 0 && FileName2.length == 0 && FileName3.length == 0)
    {
        alert("No files have been selected to upload"); 
    }
    
    else
    {
    if(FileName1 == FileName3 ||  FileName2 == FileName3)
        {
            alert("Configuration file should not be same as left or right files. Please check your uploads");
        }
    else
        {
            document.myform.submit();
        {
    
    }
    }
    </script>
    
    ${File\u Text}
    左侧文件:

    右文件:

    配置文件:

    单击以上载文件 函数ValidateFile() { var FileName1=document.getElementById('fileChooser1').value; var FileName2=document.getElementById('fileChooser2').value; var FileName3=document.getElementById('fileChooser3').value; if(FileName1.length==0&&FileName2.length==0&&FileName3.length==0) { 警报(“未选择要上载的文件”); } 其他的 { 如果(FileName1==FileName3 | | FileName2==FileName3) { 警报(“配置文件不应与左侧或右侧文件相同。请检查您的上载”); } 其他的 { document.myform.submit(); { } }
    您想要什么有点不清楚。是否要将文件从桌面上载到服务器?是否再次希望在浏览器页面中以文本形式显示文件内容?是否有任何其他参数或数据要显示在页面上?请提及您试图实现的功能。为什么在转发时使用printwriter i通过请求调度器将请求发送到jsp?嘿,我刚刚添加了一个澄清。我只使用print writer检查它是否工作……使用浏览器中的inspect调试器检查它显示了什么错误。你知道jquery吗……因为它们有简单的ajax方法。嘿@Deepak213谢谢你的回答。我会尝试一下,并让你知道。嘿,deepak这是可行的,但所有文本都打印在同一行中…我很高兴你能帮我。嘿,我知道了。谢谢。@Zedai while循环中必须有什么?