将值从Servlet传递到JSP

时间:2014-03-04 06:29:28

标签: java javascript jsp

我正在尝试将某些值从我的servlet传递到JSP页面并添加已传递给标记的值,阅读很多帖子我已经得到了以下代码。

  1. 使用输入法选择文件
  2. 验证上传的文件
  3. 调用upload.java以保存WEB-INF中的上传文件
  4. 将上传的文件保存为my.txt
  5. 使用缓冲区读取文件内容并将其保存到变量
  6. 将其传递给JSP页面
  7. upload.java

    上传文件后,

    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);
    
    }
    

    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>
    

    现在,完成所有这些操作后,当我点击我的上传按钮时,它只是无法正常工作,点击根本无法被识别,但当我删除文件访问代码时按钮工作正常..

    1. 为什么会这样?该怎么办?
    2. 这是在JSP中访问servlet值的正确方法吗?
    3. ====================================== EDIT ======== ===============================

      只是为了进一步澄清事情,

      1. 用户上传文件
      2. 该文件保存为my.txt
      3. 我正在打开此文件,阅读其内容
      4. 将这些内容添加到我的ACE编辑器中

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

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>