2016-05-11 19 views
-1

私はJavaの初心者です。 データベースの値とユーザーが入力した値を比較しています。 JSPファイルは正常に動作しますが、送信ボタンをクリックすると、サーブレットへのPOST要求は空白のページを返します。警告ボックスは表示されません。同じパターンで別のプロジェクトに書かれたサーブレットがもう1つあり、それは完璧に動作します。 Eclipse 7、Tomcat 7、MySQLデータベースを使用しています。何が間違っているのか分かりません。前もって感謝します。続き私はEclipse IDEを使用しています。 jspコードは実行されますが、サーブレットは空白のページを返します

は、サーブレットコード

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String DB_URL="jdbc:mysql://localhost/Demo"; 
    String USER = "root"; 
    String PASS = "root"; 

     String Id=request.getParameter("e1"); 
     int id = Integer.parseInt(Id); 
     String pos=request.getParameter("p1"); 
     String pr1=request.getParameter("e1"); 
     int pri = Integer.parseInt(pr1); 

     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 

     try{ Class.forName("com.mysql.jdbc.Driver"); 
      Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); 
      PreparedStatement ps=conn.prepareStatement("select * from users where id=?"); 
      ps.setInt(1, id); 
      ResultSet rs=ps.executeQuery(); 
      while(rs.next()){ 
      int eid = rs.getInt("id"); 
      String post = rs.getString("position"); 
      int pr = rs.getInt("priority"); 

     if(id==eid) 
      { 
       if((pos.equals(post))&&(pri==pr)) 
       { 
        out.print("<html><head>"); 
        out.print("<script type=\"text/javascript\">alert(" + "Details Authenticated" + ");</script>"); 
        out.print("</head><body></body></html>"); 
       } 
      } 
     } 
     rs.close(); 
     conn.close(); 
     } 

私のJSPファイル....このJSPファイル要求POSTサービスです。送信ボタンをクリックするとブローカーURLがhttp://localhost:8080/Demo2/responseと表示されます。

<form method="POST" action="miniProj"> 
<h1>Valid User</h1> 
<b>Enter details to sign the message</b><br> 
    Employee Id:<input type=text name=e1><br> 
    Employee Post:<input type=text name=p1><br> 
    Employee Priority:<input type=text name=pr1><br> 
<input type=submit value="submit" /> 
<input type=button value="exit" /> 
</form> 

Deployement記述子ファイルweb.xml。これは、(別名、パッケージ名を含める)> WEB_INF

<web-app> 
    <servlet> 
    <servlet-name>compLogin</servlet-name> 
    <servlet-class>miniProj</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>compLogin</servlet-name> 
    <url-pattern>/miniProj</url-pattern> 
    </servlet-mapping> 
    </web-app> 
+0

すべての関連コードをポストする... id変数はどこから来ますか?サーブレット名をレスポンスとは異なるものに変更してください...レスポンスオブジェクトと衝突する可能性があります –

+0

リクエストがtomcatに届いていますか(私はtomcatがapache/nginxの背後にないと仮定しています)?ブラウザの開発バーに表示されるHTTPレスポンスはどれですか?それは "サーブレットへのリダイレクト"ではない方法で、これはPOSTリクエストです。 – reallynice

+0

@AngeloOparah私は上記のコードを編集しました。名前をminiProjに変更しました。それでもなお同じ問題が残る。ありがとう –

答えて

0

は、サーブレットの完全修飾クラス名でサーブレットクラスのフィールドを交換してみてくださいはWebContentに配置されます。

私もまたresponse object

<web-app> 
    <servlet> 
     <servlet-name>compLogin</servlet-name> 
     <servlet-class>yourPackageNameHere.response</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>compLogin</servlet-name> 
     <url-pattern>/response</url-pattern> 
    </servlet-mapping> 
</web-app> 

で競合が発生しないresponseは異なるものにその名前を変更することをお勧めは、(whileループからHTMLを「吐く」というコードの部分を抽出してみてくださいそれ以来私はifの文ではなく、whileループを使用することをお勧めします(ユニークな?)の識別子id、何らかのに基づいてデータを取得している。

int eid; 
String post = ""; 
int pr; 
if(rs.next()){ 
    eid = rs.getInt("id"); 
    post = rs.getString("position"); 
    pr = rs.getInt("priority"); 
} 
if(id==eid) 
{ 
    if((pos.equals(post))&&(pri==pr)) 
    { 
     out.print("<html><head>"); 
     out.print("<script type=\"text/javascript\">alert(" + "Details Authenticated" + ");</script>"); 
     out.print("</head><body></body></html>"); 
    } 
} 
+0

ありがとう、まだ動作していません –

+0

@BandanaSinghサーブレットのクラス名を変更したときにリファクタリングしたのですか、名前を変更しましたか? –

+0

私はリファクタリングしました。 –

関連する問題