2017-10-03 12 views
-1

実際、jspページからjavaサーブレットに値を取得する際に問題に直面しています。 ドロップダウンリストでは、他のすべての値を取得できるドロップダウン値が1つだけnullになります。私が間違っているところを理解していない。誰でも助けてくれますか?jspページからjavaサーブレットへの値の取得

アップロードページですべての値が正常に入力されています。しかし、この問題は検索ページでのみ発生します。データがHTMLからサーブレットに渡されないため、データを取得できません。

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

} 
+0

「フォーム」タグサーブレット名を指定していませんか? – soorapadman

+0

ボタンIDを使用して、私はajax関数を書きました。その機能で私はサーブレット名を指定しました –

+0

問題がどこにあるのかを共有してください – soorapadman

答えて

0

私はフォームにマッピングされたアクションが存在しないことを見ることができる:

<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> 

はここに私のサーブレットのコードです:

は、ここに私のhtmlコードです。 form/web.xmlに正しいアクションURLがマップされていますか?また、selectタグのオプションタグは表示されません。動的に渡されますか?

+0

これらは静的なデータだけですが、ajax関数を使ってjsonデータから取得しています –

+0

アップロードサーブレットですべての値を取得しています最初の値、つまり1つのレベル。私が他のすべての値をコメントし、2つのレベルしか与えなかった場合、デフォルト値として1レベルの値を取っているので、インデックスから外れてエラーが発生しています –

0

あなたはオプションタグを見逃したようです。各Selectタグには、最低1つのoptionタグが含まれている必要があります。任意の明確化check this link

0

削除について:

enctype='multipart/form-data' 

これは、あなたが最初のパラメータだけを得ることができる理由です。これをフォームに追加すると、サーブレットはファイルを持っているかのようにフォームを処理し、そこからファイルを見ることはできません。

関連する問題