【问题标题】:getting error while trying to insert in mysql using servlet and jsp尝试使用 servlet 和 jsp 插入 mysql 时出错
【发布时间】:2013-03-26 04:49:11
【问题描述】:

嗨,我想在数据库中插入几个字段名,为此我正在使用 java bean、jsp 和 servlet,但我得到了错误。我尝试使用preparedStatement,然后我尝试使用语句,但在这两种情况下我都得到了error>请指出错误在哪里。我的代码如下。我使用的是eclipse juno IDE

register1.java

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

import DB.DataBaseConnection;

/**
 * Servlet implementation class register
 */
@WebServlet(register1.REGISTER1)
public class register1 extends HttpServlet {
    static final String REGISTER1 = "/register1";
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public register1() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out=response.getWriter();
        try{
        DataBaseConnection db=new DataBaseConnection();
        java.sql.Connection con= db.connet();
        String FirstName=request.getParameter("FirstName");
        String LastName=request.getParameter("LastName");
        String DOB=request.getParameter("DOB");
        String Qualification=request.getParameter("Qualification");
        String RegistrationNo=request.getParameter("RegistrationNo");
        String CountryOfRegistration=request.getParameter("CountryOfRegistration");
        String PracticeName=request.getParameter("PracticeName");
        String Phone=request.getParameter("Phone");
        String Email=request.getParameter("Email");
        String Address=request.getParameter("Address");
        String Street=request.getParameter("Street");
        String City=request.getParameter("City");
        String State=request.getParameter("State");
        String Country=request.getParameter("Country");
        String PinCode=request.getParameter("PinCode");
        String HowDoYouKnow=request.getParameter("HowDoYouKnow");
        String Comments=request.getParameter("Comments");


out.println(FirstName);







        //ps = (PreparedStatement) con.prepareStatement("insert into registration values(?,?,?)");
Statement st=con.createStatement();
st.executeUpdate("insert into registration values(v,v,v,v,v,v,v,v,v,v,v,v,v,v,v,v,v)");
//      PreparedStatement ps=(PreparedStatement) con.prepareStatement("insert into registration values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
//      out.println(FirstName);
//
//  ps.setString(1, FirstName);
//  out.println(FirstName);
//
//  ps.setString(2,LastName);
//  ps.setString(3,DOB);
//  out.println(FirstName);
//
//  ps.setString(4,Qualification);
//  ps.setString(5, RegistrationNo);
//  ps.setString(6, CountryOfRegistration);
//  ps.setString(7, PracticeName);
//  ps.setString(8, Phone);
//  ps.setString(9, Email);
//  ps.setString(10, Address);
//  ps.setString(11, Street);
//  ps.setString(12, City);
//  ps.setString(13, State);
//  ps.setString(14, Country);
//  ps.setString(15, PinCode);
//  ps.setString(16, HowDoYouKnow);
//  ps.setString(17, Comments);
//  ps.executeUpdate();

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

}
}

javabean

package register;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

import DB.DataBaseConnection;
public class registration {


        private String FirstName;
        private String LastName;
        private String DOB;
        private String Qualification;
        private String RegistrationNo;
        private String CountryOfRegistration;
        private String PracticeName;
        private String Phone;
        private String Email;
        private String Address;
        private String Street;
        private String City;
        private String State;
        private String Country;
        private String PinCode;
        private String HowDoYouKnow;
        private String Comments;
        public registration()
        {
            this.FirstName=FirstName;
            this.LastName=LastName;
            this.DOB=DOB;
            this.Qualification=Qualification;
            this.RegistrationNo=RegistrationNo;
            this.CountryOfRegistration=CountryOfRegistration;
            this.PracticeName=PracticeName;
            this.Phone=Phone;
            this.Email=Email;
            this.Address=Address;
            this.Street=Street;
            this.City=City;
            this.State=State;
            this.Country=Country;this.PinCode=PinCode;this.HowDoYouKnow=HowDoYouKnow;   
            this.Comments=Comments;
        }
        public void setFirstName(String FirstName)
        {
            this.FirstName=FirstName;
        }
        public String getFirstName()
        {
            return FirstName;
        }
        public void setLastName(String LastName)
        {
            this.LastName=LastName;
        }
        public String getLastName()
        {
            return LastName;
        }public void setDOB(String DOB)
        {
            this.DOB=DOB;
        }
        public String getDOB()
        {
            return DOB;
        }public void setQualification(String Qualification)
        {
            this.Qualification=Qualification;
        }
        public String getQualification()
        {
            return Qualification;
        }public void setRegistrationNo(String RegistrationNo)
        {
            this.RegistrationNo=RegistrationNo;
        }
        public String getRegistrationNo()
        {
            return RegistrationNo;
        }public void setCountryOfRegistration(String CountryOfRegistration)
        {
            this.CountryOfRegistration=CountryOfRegistration;
        }
        public String getCountryOfRegistration()
        {
            return CountryOfRegistration;
        }public void setPracticeName(String PracticeName)
        {
            this.PracticeName=PracticeName;
        }
        public String getPracticeName()
        {
            return PracticeName;
        }public void setPhone(String Phone)
        {
            this.Phone=Phone;
        }
        public String getPhone()
        {
            return Phone;
        }public void setEmail(String Email)
        {
            this.Email=Email;
        }
        public String getEmail()
        {
            return Email;
        }public void setAddress(String Address)
        {
            this.Address=Address;
        }
        public String getAddress()
        {
            return Address;
        }public void setStreet(String Street)
        {
            this.Street=Street;
        }
        public String getStreet()
        {
            return Street;
        }public void setCity(String City)
        {
            this.City=City;
        }
        public String getCity()
        {
            return City;
        }public void setState(String State)
        {
            this.State=State;
        }
        public String getState()
        {
            return State;
        }public void setCountry(String Country)
        {
            this.Country=Country;
        }
        public String getCountry()
        {
            return Country;
        }public void setPinCode(String PinCode)
        {
            this.PinCode=PinCode;
        }
        public String getPinCode()
        {
            return PinCode;
        }public void setHowDoYouKnow(String HowDoYouKnow)
        {
            this.HowDoYouKnow=HowDoYouKnow;
        }
        public String getHowDoYouKnow()
        {
            return HowDoYouKnow;
        }public void setComments(String Comments)
        {
            this.Comments=Comments;
        }
        public String getComments()
        {
            return Comments;
        }
        public String insert() throws ClassNotFoundException 
        {
            String output="";
        //public void insert(String FirstName,String LastName,String DOB) throws SQLException
        //{
        //DataBaseConnection db= new DataBaseConnection();
        //Connection con =(Connection) db.connet();
        //PreparedStatement ps=(PreparedStatement) con.prepareStatement("insert into registration values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        //PreparedStatement ps;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","sukanth","");
            //ps = (PreparedStatement) con.prepareStatement("insert into registration values(?,?,?)");
            PreparedStatement ps=(PreparedStatement) con.prepareStatement("insert into registration values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

        ps.setString(1, FirstName);
        ps.setString(2,LastName);
        ps.setString(3,DOB);

        ps.setString(4,Qualification);
        ps.setString(5, RegistrationNo);
        ps.setString(6, CountryOfRegistration);
        ps.setString(7, PracticeName);
        ps.setString(8, Phone);
        ps.setString(9, Email);
        ps.setString(10, Address);
        ps.setString(11, Street);
        ps.setString(12, City);
        ps.setString(13, State);
        ps.setString(14, Country);
        ps.setString(15, PinCode);
        ps.setString(16, HowDoYouKnow);
        ps.setString(17, Comments);
        ps.executeUpdate();
        output="sucess";

        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            output=e.toString();
        }
        /*public static void main(String args[]) throws SQLException
        {
            registration r=new registration();
            r.insert("s","k","n");
        }*/
        return output;
    }
//      public static void main(String args[]) throws SQLException, ClassNotFoundException
//      {
//          registration r=new registration();
//          r.insert();
//      }

}

数据来自这个jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><jsp:useBean id="registration" class="register.registration" scope="request">
<jsp:setProperty property="*" name="registration"/></jsp:useBean>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action ="register1" method="post">
FirstName<input type="text" name="FirstName">Lastname<input type="text" name="LastName"><br>
DOB<input type="text" name="DOB">Qualification<input type="text" name="Qualification"><br>
RegistrationNo<input type="text" name="RegistrationNo">CountryOfRegistration<input type="text" name="CountryOfRegistration"><br>
PracticeName<input type="text" name="PracticeName">Phone<input type="text" name="Phone"><br>
Email<input type="text" name="Email">Address<input type="text" name="Address"><br>
Street<input type="text" name="Street">City<input type="text" name="City"><br>
State<input type="text" name="State">Country<input type="text" name="Country"><br>
PinCode<input type="text" name="PinCode">HowDoYouKnow<input type="text" name="HowDoYouKnow"><br>
Comments<input type="text" name="Comments"><br>
<input type ="submit" name ="submit">
<input type="reset" name="reset">

</form>
</body>
</html>

这是错误

Mar 26, 2013 5:48:53 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386::/usr/java/packages/lib/i386:/lib:/usr/lib
Mar 26, 2013 5:48:54 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:project1' did not find a matching property.
Mar 26, 2013 5:48:54 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:project2' did not find a matching property.
Mar 26, 2013 5:48:54 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:project3' did not find a matching property.
Mar 26, 2013 5:48:54 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Mar 26, 2013 5:48:54 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Mar 26, 2013 5:48:54 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 2844 ms
Mar 26, 2013 5:48:55 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Mar 26, 2013 5:48:55 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.37
Mar 26, 2013 5:48:55 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [117] milliseconds.
Mar 26, 2013 5:48:56 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Mar 26, 2013 5:48:56 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Mar 26, 2013 5:48:56 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1493 ms
java.lang.NullPointerException
    at register1.doPost(register1.java:77)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
java.lang.NullPointerException
    at register1.doPost(register1.java:77)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
java.lang.NullPointerException
    at register1.doPost(register1.java:77)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
java.lang.NullPointerException
    at register1.doPost(register1.java:77)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

这是 DataBaseConnection 类

package DB;
import  java.sql.*;
public class  DataBaseConnection
{public static void main(String[] args) throws SQLException, ClassNotFoundException
    {

    DataBaseConnection db= new DataBaseConnection();
    Connection  con=db.connet();
        if(!con.isClosed())
        {
            System.out.println("connectedn");
        }
        }
public Connection connet() 
{
    Connection con=null;

    try
    {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","sukanth","");
return con;
    }
    catch(Exception e)
    {
        return  con;
    }



}
}

【问题讨论】:

  • 它明确表示要检查第 77 行 register1.java。你试过在那里调试吗?
  • @HardikMishra 我试过但无法解决
  • @HardikMishra 早些时候它显示preparedStatement 错误,所以我改为声明。如果我使用 main 进行测试,那么数据会被插入到表中,你可以看到我已经评论了 main。
  • con 对象可能为空。确保您已连接到数据库。
  • 仅用于检查任何 Web 资源中的错误/异常,您应该在异常引用上使用 printStackTrace() 方法或在 JSP、SOP 中使用异常内置对象来获取错误/异常的点/位置。

标签: java mysql jsp servlets javabeans


【解决方案1】:
java.lang.NullPointerException
    at register1.doPost(register1.java:77)

错误清楚地表明NullPointerException

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out=response.getWriter();
        try{
        DataBaseConnection db=new DataBaseConnection();
        java.sql.Connection con= db.connet();
        //...... 
       //Statement st=con.createStatement(); // This may be the root cause of exception
       // check null here
      if(con!=null){
        // create statement or prepared statement
      }  
} 

修改DataBaseConnection.java

package DB;
import java.sql.*;
public class DataBaseConnection {
    public Connection connet() {
        Connection con=null;
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","sukanth","");
        }
        catch(Exception e)
        {
            e.printStacktrace();
        }
        return con;
    }
}

另外,请确保您的 CLASSPATH 中有 mysqljdbc.jar。将mysqljdbc.jar 复制到WEB-INF/lib

【讨论】:

  • 没有。您已经编辑了我发布堆栈跟踪的答案。编辑问题。
  • 向您显示我编辑问题的错误,我知道这不是正确的方法,抱歉
【解决方案2】:

您还没有提供Class.forName() 来在您的Register1.java 中加载驱动程序

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","sukanth","");
Statement st=con.createStatement();
//remaining codes

确保您在 JSP 页面中提供了所有值。还要确保数据库中的 DOB 字段是字符串,如果不是,将 servlet 中的 DOB 字段转换为日期格式

【讨论】:

  • OP 正在从一个名为 DataBaseConnection 的类创建 Db 连接,该类具有 Class.forName()
  • 哦。我没看到。他已将声明与getParameter 声明放在一起。
  • 由于他使用的是statement,他必须传递查询本身中的所有值,对吗?而且他必须提供所有的值,否则会显示NullPointerException
【解决方案3】:

I think you simply mixed up the code. You put the connection and insertion related logic in yourregistration class, then what is there in DataBaseConnection class and what is its role? You are not clear with this code. Whateverregistration class insetrt()method is doing the same you are doing indoPost(-,-)` servlet 方法。

我认为不需要使用 bean 类来设置和获取表单组件的值。 只需使用一个包含两种方法的 bean 类,一种用于建立 DB 连接,另一种用于释放连接。 在 servlet 的 doGet(-,-) 方法中创建它的对象,并像使用 request.getParameter(-) 一样读取所有表单组件值 并使用 pstmnt.setXxx() 将这些值设置为查询的占位符,然后简单地执行查询。 执行成功后调用bean类的第二个方法释放连接。

试试这个,希望对你有帮助……

    //write a bean class in some package(p1)
    package p1;
    //import all required classes/interfaces
    public class DBConn{
    private Connection con;
    public Connection getConnection() throws SQLException{
    Class.forName("com.mysql.jdbc.Driver");
    con= DriverManager.getConnection("jdbc:mysql://host_ipaddress:port no./sid","username","password");
    return con;
    }

    public void releaseConnection() throws SQLException{

     if(con!=null)
     con.close();
      }
    }

//Take a form page(jsp/html) same as you have....

//write a servlet to insert the form page data in DB..


//import all classes and interfaces here...
public class register1 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
  try{  
        // set content type and get an output stream...      
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        //create bean class object and get a connection object...
        DBConn db=new DBConn();
        java.sql.Connection con= db.getConnection();

        // read all request parameter values from request...
        String FirstName=request.getParameter("FirstName");
        String LastName=request.getParameter("LastName");
        String DOB=request.getParameter("DOB");
        String Qualification=request.getParameter("Qualification");
        String RegistrationNo=request.getParameter("RegistrationNo");
        String CountryOfRegistration=request.getParameter("CountryOfRegistration");
        String PracticeName=request.getParameter("PracticeName");
        String Phone=request.getParameter("Phone");
        String Email=request.getParameter("Email");
        String Address=request.getParameter("Address");
        String Street=request.getParameter("Street");
        String City=request.getParameter("City");
        String State=request.getParameter("State");
        String Country=request.getParameter("Country");
        String PinCode=request.getParameter("PinCode");
        String HowDoYouKnow=request.getParameter("HowDoYouKnow");
        String Comments=request.getParameter("Comments");

        // get a pre-compiled query with the help of PreparedStatement ...
        PreparedStatement ps =con.prepareStatement("insert into <table name>
values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

   //set the place holder parameters values to the pre-compiled query..
    ps.setString(1, FirstName);
    ps.setString(2,LastName);
    ps.setString(3,DOB);
    ps.setString(4,Qualification);
    ps.setString(5, RegistrationNo);
    ps.setString(6, CountryOfRegistration);
    ps.setString(7, PracticeName);
    ps.setString(8, Phone);
    ps.setString(9, Email);
    ps.setString(10, Address);
    ps.setString(11, Street);
    ps.setString(12, City);
    ps.setString(13, State);
    ps.setString(14, Country);
    ps.setString(15, PinCode);
    ps.setString(16, HowDoYouKnow);
    ps.setString(17, Comments);
  int counter= ps.executeUpdate();

    if(counter>0)
    {
     out.println("Values inserted successfully...");
    db.releaseConnection();
    }
  else if(counter<=0)
   {
    out.println("Something went wrong, Values couldn't inserted in DB..");
    db.releaseConnection();
   }

    }
    catch(SQLException sqle)
    {
        sqle.printStackTrace();
    }
   catch(ServletException se)
   {
   se.printStackTrace();
    }
   catch(IOException ie)
   {
    ie.printStackTrace();
   }
   catch(Exception e)
   {
    e.printStackTrace();
   }

  }//doGet(-,-) closing.....

  protected void doPost(HttpServletRequest request, HttpServletResponse response) {
     doGet(request,response);
    }//doPost(-,-) closing...
}// servlet class closing...

// 不要忘记使用 URL 映射您的 servlet,并在您的表单页面上将其用作表单标签的操作值,以及应用程序的类路径和 lib 文件夹中的 MYSQL 相关连接器/J jar 文件或服务器的 lib 文件夹(最好将其放在应用程序的 lib 文件夹中)。 希望你能清楚。

【讨论】:

  • 我现在没有使用 java bean,流程来自 login.html ->jsp->servlet
  • databasesconnection 现在没有任何作用,所以我评论了它
  • 我应该删除 javabean,因为它会造成混乱吗?
  • 好的,我可以做一件事,我正在添加另一个答案,并会尝试为您提供所有逻辑,给我 15 分钟。因为我正忙于其他事情。
  • 我无法理解您发布的答案。您能否在此处发布代码。您知道流程以及拥有我的代码。请编辑相同的内容并在此处发布。如果你这样做,我会很高兴
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多