почему он показывает эту ошибку.
введите отчет об исключении
message An exception occurred processing JSP page /GGCheckLogin.jsp at line 19
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /GGCheckLogin.jsp at line 19
16:
17: try {
18: String query = "select * from credentials where login=? and password=?";
19: PreparedStatement ps = (PreparedStatement) con.prepareStatement(query);
20: ps.setString(1, login);
21: ps.setString(2, pw);
22: ResultSet rs = ps.executeQuery();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
javax.servlet.ServletException: java.lang.NullPointerException
org.apache.jsp.GGCheckLogin_jsp._jspService(GGCheckLogin_jsp.java:95)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
java.lang.NullPointerException
org.apache.jsp.GGCheckLogin_jsp._jspService(GGCheckLogin_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
это моя xml-страница
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-apppackage assignment_2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListner implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
String driverName="com.mysql.jdbc.Driver";
String conURL ="jdbc:mysql://localhost:3306/";
ServletContext context = event.getServletContext();
String dbname = context.getInitParameter("dbname");
String user = context.getInitParameter("user");
String pass = context.getInitParameter("pw");
Connection conn= null;
try{
Class.forName(driverName);
conn = DriverManager.getConnection(conURL+dbname, user,pass);
System.out.println("Connection successfull");
}
catch(ClassNotFoundException ex){
System.out.println("this error class not found "+ex);
}
catch(SQLException sqle){
System.out.println("this error sql "+sqle);
}
context.setAttribute("conn", conn);
}
public void contextDestroyed(ServletContextEvent event){
}
}
0.xsd"
id="WebApp_id" version="3.0">
<context-param>
<param-name>dbname</param-name>
<param-value>ggame</param-value>
</context-param>
<context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>******</param-value>
</context-param>
</web-app>
это метод в ресурсах Java для инициализации контекста
package assignment_2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListner implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
String driverName="com.mysql.jdbc.Driver";
String conURL ="jdbc:mysql://localhost:3306/";
ServletContext context = event.getServletContext();
String dbname = context.getInitParameter("dbname");
String user = context.getInitParameter("user");
String pass = context.getInitParameter("pw");
Connection conn= null;
try{
Class.forName(driverName);
conn = DriverManager.getConnection(conURL+dbname, user,pass);
System.out.println("Connection successfull");
}
catch(ClassNotFoundException ex){
System.out.println("this error class not found "+ex);
}
catch(SQLException sqle){
System.out.println("this error sql "+sqle);
}
context.setAttribute("conn", conn);
}
public void contextDestroyed(ServletContextEvent event){
}
}
это моя страница jsp, где я проверяю имя пользователя и пароль
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.sql.*" %>
<!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>check-login</title>
</head>
<body>
<%
String login = request.getParameter("Username");
String pw = request.getParameter("password");
Connection con = (Connection)pageContext.getServletContext().getAttribute("conn");
try {
String query = "select * from credentials where login=? and password=?";
PreparedStatement ps = (PreparedStatement) con.prepareStatement(query);
ps.setString(1, login);
ps.setString(2, pw);
ResultSet rs = ps.executeQuery();
if(rs.next()){
response.sendRedirect("success.jsp");
}
else{
response.sendRedirect("http://www.google.ca");
}
}
catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
finally{
}
%>
</body>
</html>
я не уверен, что когда мы запускаем проект, выполняется ли метод myServletContextListner. он показывает исключение нулевого указателя; возможно, он не получает атрибут соединения из servletcontext. Спасибо за помощь