Servlet.service()引发了java.lang.NullPointerException java.lang.NullPointerException

毕设遇到了两个问题,希望能帮我看看!
第一个是
Servlet.service()引发了java.lang.NullPointerException java.lang.NullPointerException
说缺少standard-1.1.2.jar和另一个包我照做了没用
第二个是
: Access denied for user 'root'@'localhost' (using password: YES)
密码是对的,但是还是有错!

img

img


代码在这

img

img

img

  • 你连接对象获取代码在哪里,每次数据库操作都要获取一个连接呀,你的代码没有看到
  • 连接对象conn,调用close之前,先判空,再使用
if (null != conn)
     conn.close();
  • stmt 需要预处理一下, 而不是直接使用sql
    PreparedStatement statement = conn.prepareStatement(sql);

    // 查询 
    statement.executeQuery();

    // 新增,删除,更新
    statement.executeUpdate();

你这俩错应该都是你的数据库链接获取失败导致的空指针

检查下你的mysql数据库用户名密码是否正确,是否开启远程访问。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/689865
  • 这篇博客也不错, 你可以看下Servlet.service() for servlet jsp threw exception java.lang.NullPointerException
  • 除此之外, 这篇博客: 一个简单错误的产生原因java.lang.NullPointerException中的 错误标签:java.lang.NullPointerException 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这个错误代表所代表的大致意义是空指针报错。


    错误样例代码:


    这个代码是将字符串进行长度比较并按升序排列

    import java.util.*;
    class English implements Comparable<English>
    {
    	private String s;
    	English(){}
    	English(String s)
    	{
    		this.s=s;
        }
        public String toString()
    	{
    		return s+" ";
    	}
    	public int compareTo(English o1)
    	{
            if(this.getS().length()-o1.getS().length()>0)
            return 1;
            if(this.getS().length()-o1.getS().length()<0)
            return -1;
            
            return 0;
    		//return 0;
        }
        public void setS(String s)
    	{
    		this.s=s;
    	}
    	public String getS()
    	{
    		return s;
    	}
    }
    
    public class Main
    {
    	public static void main(String args[])
    	{
    		Scanner sc=new Scanner(System.in);
    		//String b="#";
            English n[]=new English[5];//此处出现空指针,必须输入5个值,否则会出现空指针或者指针超出范围!!
            int i=0;
            for(i=0;i<5;i++)
            n[i]=new English();
            String a;
            i=0;
    		while(sc.hasNext())
    		{
    			 a=sc.next();
    			if(a.compareTo("#")==0)
    			break;
    			n[i]=new English(a);
    			i++;
    		}
    	
    	    Arrays.sort(n);
    		for(i=0;i<n.length;i++)
    		{
    			System.out.println(n[i].toString());
    		
    	    }
    }
    }
    

    样例及报错情况如下:

    adsa
    dsdsd
    fddfdf
    ds
    #
    Exception in thread "main" java.lang.NullPointerException
            at English.compareTo(Main.java:61)
            at English.compareTo(Main.java:47)
            at java.base/java.util.ComparableTimSort.binarySort(ComparableTimSort.java:262)
            at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java:189)
            at java.base/java.util.Arrays.sort(Arrays.java:1249)
            at Main.main(Main.java:100)
    

    解析:起初以为是比较器错误查了好几遍,又用collections.sort并用comparator又写了另一种用List的排列方法发现没问题。
    最后锁定问题出在数组指针上,于是就对数组指针进行了多次更改。最后发现,数组指针定义的长度如果确定,就会出空指针错误或者超出位数的错误,所以问题出在这道题不该用定义好的数组长度上,所以此题应该用动态数组ArraysList解决而不能使用确定的数组长度。

  • 以下回答由chatgpt基于相关博客总结生成:

    对于第一个问题,异常信息"Servlet.service()引发了java.lang.NullPointerException java.lang.NullPointerException"表示在Servlet执行过程中发生了空指针异常,需要找到引发异常的代码位置并对其进行修复。可以通过查看异常堆栈信息来获取异常发生的位置,然后检查代码中是否存在对空对象的访问和操作。一般可以通过添加空指针判断来规避该问题,例如:

    if (object != null) { // 对非空对象进行操作 }

    对于第二个问题,可能存在密码验证逻辑有误的情况。需要检查代码中密码验证的实现,看是否存在密码比对时忽略大小写、空格等情况,以及是否对密码进行加密存储等问题。可以考虑使用已有的安全框架或库来简化密码验证的实现,例如Spring Security或bcrypt加密算法等。另外,也可以通过打印日志或调试来定位问题所在,以进一步修复问题。