簡體   English   中英

從jsp頁面獲取值到java servlet

[英]Getting values from jsp page to java servlet

嗨,實際上我在從 jsp 頁面獲取值到 java servlet 時遇到了問題。 在下拉列表中只有一個下拉值我能夠得到所有其他值都為空。 不明白我哪里出錯了。 誰能幫幫我嗎。

在上傳頁面中,所有值都很好。 但問題僅在於檢索頁面。 我無法檢索數據,因為數據沒有從 html 傳遞到 servlet。

這是我的 html 代碼:

<form method="post"   enctype='multipart/form-data'>

        <label>select Board:</label>
        <select id="onelevel" name="onelevel" class="changeElem"></select>
        <br>
         <label>select Syllabus:</label>
        <select id="twolevel" name="twolevel" class="showElem changeElem"></select>
        <br>
         <label>select class:</label>
         <select id="threelevel" name="threelevel" class="showElem changeElem"></select>
         <br>
          <label>select state:</label>
         <select id="sixlevel" name="sixlevel" class="showElem changeElem"></select>
           <br>
            <label>select subjects:</label>
         <select id="fourlevel" name="fourlevel" class="showElem changeElem"></select>
         <br>
          <label>select chapters:</label>
          <select id="fivelevel" name="fivelevel" class="showElem changeElem"></select>
          <br>

           <label>select terms:</label>
          <select id="sevenlevel" name="sevenlevel" class="showElem changeElem"></select>
          <br>







<button  id="retrieve">Submit</button>





</form>

這是我的 servlet 代碼:

package fileretrieve;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import org.apache.tomcat.util.http.fileupload.IOUtils;

import dbConnection.Dbconn;

@MultipartConfig
public class FileRetrieve extends HttpServlet {



    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
          response.setContentType("application/octet-stream");


          PrintWriter out = response.getWriter();        
          String onelevel=request.getParameter("onelevel"); 
          String twolevel=request.getParameter("twolevel"); 
          String threelevel=request.getParameter("threelevel"); 
          String fourlevel=request.getParameter("fourlevel"); 
          String fivelevel=request.getParameter("fivelevel"); 
//          
//      
//          





          Connection conn = null; // connection to the database
          String message = null;
          Statement st = null;// message will be sent back to client



          try {
              // connects to the database
              conn = Dbconn.getConnection();
                st = conn.createStatement();

                 PreparedStatement ps=conn.prepareStatement("select data,filename,extension from files1 where board=? AND syllabus=? AND class=? AND subject=? AND chapters=? ");
                 ps.setString(1,onelevel);
                 System.out.println("2"+twolevel);
                 System.out.println("3"+threelevel);
                 System.out.println("4"+fourlevel);
                 System.out.println("5"+fivelevel);

                 ps.setString(2,twolevel);
                 ps.setString(3,threelevel);
                 ps.setString(4,fourlevel);
                 ps.setString(5,fivelevel);
                 //out.print("<table width=25% border=1>");
                // out.print("<center><h1>Result:</h1></center>");



                 ResultSet rs=ps.executeQuery();                
                 /* Printing column names */
                 ResultSetMetaData rsmd=rs.getMetaData();
                 int count=0;
                 String filenames="\"";
                 String paths="\"";
                 while(rs.next())
                    {
                     count=count+1;
                     String extension;
//                   if(rs.getString(2)=="docx"){
//                       extension=".docx";
//                   }else if(rs.getString(2)=="pdf"){
//                       extension=".pdf";
//                   }

                     extension=rs.getString(2).substring(rs.getString(2).lastIndexOf(".") + 1).toLowerCase();



                     FileOutputStream fos = new FileOutputStream("C:\\Users\\JR00432239\\Desktop\\trial\\WebContent\\filetest"+count+"."+extension);
                     fos.write(rs.getBytes(1));  

                     fos.close();

//                 out.print("<tr>");
//                 out.print("<td>"+rsmd.getColumnName(1)+"</td>");
//                    out.print("<td><a href=\"file:///C:/Users/JR00432239/Desktop/trial/src/temp/test.pdf\" target=\"_self\">"+rs.getString(2)+"</a></td></tr>");
//                    getServletContext().getRequestDispatcher("/home.html").forward(request, response);
                     System.out.println("writing...");
                     System.out.println(rs.getString(2));
                     filenames=filenames+rs.getString(2)+";";
                     paths=paths+"http://localhost:8087/trial/filetest"+count+"."+extension+";";

//                   filenames=filenames+rs.getString(2)+";";
//                   paths=paths+"http://localhost:8087/trial/filetest"+extension+";";
//                    
//                         
                 }
                 filenames=filenames+"\"";
                 paths=paths+"\"";
                 response.getWriter().write("{\"name\":"+filenames+",\"path\":"+paths+"}");


//                 out.print("</table>");
//                 


          }catch (Exception e2)
            {
                e2.printStackTrace();
            }

          finally{

//            request.setAttribute("data", data);
//            RequestDispatcher rd =request.getRequestDispatcher("userview.jsp");
//            

              out.close();
            }


          // forwards to the message page
        //  getServletContext().getRequestDispatcher("/home.html").forward(request, response);
   }

}  

我可以看到沒有為表單映射任何操作。 您確定在 form/web.xml 中映射的操作 url 正確嗎? 另外,我沒有看到 select 標簽的任何選項標簽,它們是動態傳遞的嗎?

看來您錯過了選項標簽。 每個 Select 標簽應至少包含一個 option 標簽。 有關任何說明,請檢查此鏈接

消除:

 enctype='multipart/form-data'

這就是為什么您只能獲取第一個參數的原因。 將它添加到表單會使 servlet 處理表單,就好像它有文件一樣,並且從我所見,您沒有任何文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM