Java servlet:服务器遇到内部错误,无法满足此请求

Java servlet:服务器遇到内部错误,无法满足此请求,java,jsp,servlets,Java,Jsp,Servlets,我已经用jsp页面和servlet创建了注册页面,我得到的错误如下 说明服务器遇到内部错误,无法满足此请求 exception java.lang.NullPointerException com.javatpont.RegisterUser.register(RegisterUser.java:13) com.javatpont.CreateServlet.doGet(CreateServlet.java:33) javax.servlet.http.HttpServ

我已经用jsp页面和servlet创建了注册页面,我得到的错误如下 说明服务器遇到内部错误,无法满足此请求

exception

java.lang.NullPointerException
    com.javatpont.RegisterUser.register(RegisterUser.java:13)
    com.javatpont.CreateServlet.doGet(CreateServlet.java:33)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
这是-->Register.jsp页面

<form  name=F1 onSubmit="return dil(this)" action="CreateServlet">
    <table height="350" cellspacing="5" cellpadding="3">
        <tr>
            <td>USER NAME:</td><td> <input type="text" name="username"/></td>
        </tr>
        <tr>
            <td>PASSWORD:</td><td> <input type="password" name="password"/></td>
        </tr>
        <tr>
            <td>RE-PASSWORD:</td><td> <input type="password" name="repassword"/></td>
        </tr>
        <tr>
            <td>PHONE:</td><td> <input type="text" name="phone"/></td>
        </tr>
        <tr>
            <td>ADDRESS:</td><td> <textarea rows=4 cols=40 wrap=virtual name="adderess"></textarea></td>
        </tr>
        <TR>
            <TD> Select your designation:</TD> 
            <TD> 
                <SELECT NAME="syd"> 
                    <option>student
                    <option>professor
                    <option>Associate-Professor
                    <option>lecturer
                    <option>non-teaching staff
                </SELECT> 
            </TD>
        </TR>
        <tr><td></td><td><input type="submit" value="Submit"/>
        <INPUT TYPE=RESET VALUE="CLEAR"></td></tr>
    </table>
</form>
这是RegisterUser.java

 package com.javatpont;
    import java.sql.*;
    public class RegisterUser {
    static int status=0;
    //int accountno=1;
    public static int register(String username,String password,String repassword,double phone,String adderess,String syd){
        //public static int register(String email,String password,String gender,String country,String name){

        Connection con=GetCon.getCon();
        PreparedStatement ps;

        try {
System.out.println("here is the problem line number 13");
  //line number13->         ps = con.prepareStatement("Insert into NEWMEMBER values(?,?,?,?,?,?,?)");
            int nextvalue1=GetCon.getPrimaryKey();
            ps.setInt(1,nextvalue1);
            ps.setString(2,username);
            ps.setString(3,password);
            ps.setString(4,repassword);
            ps.setDouble(5,phone);
            ps.setString(6,adderess);
            ps.setString(7,syd);

            status=ps.executeUpdate();
            System.out.println(status);
        } catch (SQLException e) {

            e.printStackTrace();
        }
        return status;

    }
    }
这是->GetCon.java

public class GetCon {
private GetCon(){}

public static Connection con;
static{
    try {
        Class.forName(DBIntializer.DRIVER);
        con=DriverManager.getConnection(DBIntializer.CON_STRING,DBIntializer.USERNAME,DBIntializer.PASSWORD);
    } catch (ClassNotFoundException e) {

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

        System.out.println("Exception in GetCon");
    }

}
public static Connection getCon(){
    return con;
}



public static int getPrimaryKey(){
    int nextvalue=0;
    Connection con=GetCon.getCon();
    PreparedStatement ps2;
    try {

    ps2=con.prepareStatement("select ff from dual");

    ResultSet rs=ps2.executeQuery();
    rs.next();
    nextvalue=rs.getInt(1);



} catch (SQLException e) {

        e.printStackTrace();
    }
return nextvalue;

}
}

嗨,我想你真正的问题在这里

Connection con=GetCon.getCon();
您可以获得连接,但仍尝试执行此操作

ps = con.prepareStatement(...)
我们需要首先找出连接失败的原因。。检查您提供的URL,如以下jdbc所示:mysql://localhost/DATABASE_NAME .. 如果数据库位于您的计算机本身或该ip上,则为localhost。。还要确保类路径中有所需的jdbc驱动程序

编辑:

看到最新的注释和代码,它看起来像是一个缺少jar的问题。。您需要将连接器库添加到运行时类路径`

java -cp .;mysql-connector-java-5.1.25-bin.jar GetCon` 

我的示例使用Windows类路径分隔符;,在其他系统上可能有所不同:在Linux上。它还假设mysql-connector-java-5.1.25-bin.jar位于同一文件夹中。如果不是这样,则将路径放在库中,而不是普通名称。

它是NullPointerException。@viraj数据库初始化器公共接口dbinitializer{String DRIVER=com.mysql.jdbc.DRIVER;String CON_String=jdbc:mysql://location:3306:demo;字符串用户名=根;字符串密码=根;}是的,先生,这是一个空指针,但请检查可能的原因@BoristheSpider在投票表决前至少看一看代码。@user4751433您能替换字符串CON_String=jdbc吗:mysql://location:3306:demo 字符串CON_String=jdbc时:mysql://localhost/demo 试着。。我很确定我们会继续这样做。@viraj我按照您的建议尝试过,但再次出现同样的错误,RegisterUser的第13行是…?@boristesspider我在RegisterUser.java页面中提到,第13行ps=con.prepareStatementInsert为新成员值?,?,?,?,?,?,?;这并没有太大帮助,因为现在这行已经被注释了。con显然为null-GetCon.GetCon返回null。为什么?我假设您的代码在GetCon中输出异常。你完全忽视了这一点,并且想知道你为什么会有错误。@Boristeider这是我最初的想法,你投票否决了我。。。
java -cp .;mysql-connector-java-5.1.25-bin.jar GetCon`