1

私はここで初心者です。mysqlとサーブレットとjavaを繋げる課題があります(javaコードとhtmlコードを分けたいので。以前は簡単にするためにコードをまとめて却下されました)ということで、基本的にmySqlではこう書きますが、

create table login2 (username varchar (30), password varchar(30), designation varchar(10));
insert into login2 values('lala','123','A');

そして、Eclipseを使用してサーブレットにloginDisp.javaを作成します。これが私の命令です

 package Servlet;

import java.io.*;
import java.util.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class loginDisp extends HttpServlet {
  public void service(HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException{
    //  String username=request.getParameter("Username");
     // String password=request.getParameter("Password");

  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<head><title>Servlet JDBC</title></head>");
  out.println("<body>");
  out.println("<h1>Servlet JDBC</h1>");
  out.println("</body></html>");  
  // connecting to database
  Connection con = null;  
  Statement stmt = null;
  ResultSet rs = null;
  try {
  Class.forName("com.mysql.jdbc.Driver");
  con =DriverManager.getConnection 
  ("url/tablename","uname","pssword");
  stmt = con.createStatement();
  rs = stmt.executeQuery("SELECT * FROM login2");
  // displaying records
  while(rs.next()){
  out.print(rs.getObject(1).toString());
  out.print("\t\t\t");
  out.print(rs.getObject(2).toString());
  out.print("<br>");
  }

  } catch (SQLException e) {
 throw new ServletException("Servlet Could not display records.", e);
  } catch (ClassNotFoundException e) {
  throw new ServletException("JDBC Driver not found.", e);
  } finally {
  try {
  if(rs != null) {
  rs.close();
  rs = null;
  }
  if(stmt != null) {
  stmt.close();
  stmt = null;
  }
  if(con != null) {
  con.close();
  con = null;
  }
  } catch (SQLException e) {}
  }
  out.close();
  }
  }

実行するとちゃんと表示されます。したがって、ユーザーがユーザー名とパスワードを挿入するための text.box を作成したいので、Login.jsp の作成を開始しました。これは私のコードです

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<body>
<center>
    <div class="wrapper">
    <br>
    <br>
    <h2>Doctor</h2>

    <form name="form1" method="post" action="loginDisp" > <!-- onsubmit="return validateForm()" -->
        <table width="326" border="1" align="center">
        <center> <tr>
                <th width="138" scope="row">Username</th>
                <td width="142"><input type="text" name="Username"></td>

            </tr>
            </center>


            <tr>
                <th height="31" style="width: 162px;"><span class="style2">Password</span>
                </th>

                <td width="142"><input type="password" name="Password"></td>
            </tr>

            <tr>


            </tr>
        </table>
        <p align="center">
                    <input type="submit" name="Submit" value="Submit">
                </p> ${message}
    </form>
    </div>
    </center>

</body>

</body>
</html>

mySQL からのデータが表示されます。サーブレットに別の log.java を追加します。なぜなら、呼び出されたときに jsp からデータベースにデータをフェッチして表示する必要があると考えたからです。これは log.java のコードです

package Servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class log extends HttpServlet {
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

 //Get username and password from the JSP page


String username=request.getParameter("Username");
String password=request.getParameter("Password");

//Print the above got values in console

System.out.println("The username is" +username);

System.out.println("\nand the password is" +password);
    }
}

login.jsp に挿入されたユーザー名とパスワードは mySQL に自動的に挿入されないため、 loginDisp.java を実行しようとすると、mySQL に手動で挿入したデータのみが表示されます。

4

3 に答える 3

1

フォームに間違ったアクションを入力しました。

フォームのアクション属性はサーブレットのパスを取るため、で指定された関連マッピングを指定する必要がありますweb.xml

action="loginDisplay.java"  

する必要があります action="/loginDisplay"

<form name="form1" method="post" action="loginDisplay.java" onsubmit="return validateForm()">

そのはず

<form name="form1" method="post" action="/loginDisplay" onsubmit="return validateForm()">

が web.xml の正確なマッピングでない場合/loginDisplayは、web.xml ファイルを確認し、loginDisplay のマッピングを確認して、そのパスをアクションとして指定します。

簡単な例

于 2013-09-05T07:09:29.433 に答える