【发布时间】:2017-05-23 12:37:44
【问题描述】:
尝试使用 MySQL 创建一个简单的登录。我遇到了各种错误,想知道你们是否可以提供帮助。我是 JSP 和编程的超级新手(DBA 行业)。我已经在线添加了错误,当我尝试在 Eclipse 中运行代码时出现错误 500。
<%@ page import="java.sql.Date, java.sql.PreparedStatement, java.sql.ResultSet, java.sql.SQLException, java.sql.Statement, java.sql.Timestamp, java.text.SimpleDateFormat,
java.util.ArrayList, java.util.Calendar, java.util.HashMap, java.util.List, java.util.Map, java.util.Map.Entry, java.sql.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<%! String userdbName;
String userdbPsw;
String dbUsertype;
%>
<%
Connection con= null; //Connection cannot be resolved to a type
PreparedStatement ps = null; //PreparedStatement cannot be resolved to a type
ResultSet rs = null; //ResultSet cannot be resolved to a type
String driverName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/record";
String user = "root";
String dbpsw = "root";
String sql = "select * from userdetail where name=? and password=? and usertype=?";
String name = request.getParameter("name");
String password = request.getParameter("password");
String usertype = request.getParameter("usertype");
if((!(name.equals(null) || name.equals("")) && !(password.equals(null) ||
password.equals(""))) && !usertype.equals("select"))
{
try{
Class.forName(driverName);
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, dbpsw); //DriverManager cannot be resolved (x2?)
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, password);
ps.setString(3, usertype);
rs = ps.executeQuery();
if(rs.next())
{
userdbName = rs.getString("name");
userdbPsw = rs.getString("password");
dbUsertype = rs.getString("usertype");
if(name.equals(userdbName) && password.equals(userdbPsw) && usertype.equals(dbUsertype))
{
session.setAttribute("name",userdbName);
session.setAttribute("usertype", dbUsertype);
response.sendRedirect("welcome.jsp");
}
}
else
response.sendRedirect("error.jsp");
rs.close();
ps.close();
}
catch(SQLException sqe) //SQLException cannot be resolved to a type (x2)
{
out.println(sqe);
}
}
else
{
%>
<center><p style="color:red">Error In Login</p></center>
<%
getServletContext().getRequestDispatcher("/home.jsp").include(request,
response);
}
%>
</body>
</html>
此代码返回以下错误:
HTTP 状态 500 – 内部服务器错误
键入异常报告
消息处理JSP页面/Login.jsp在行发生异常 56
描述 服务器遇到了一个意外情况 阻止它完成请求。
异常 org.apache.jasper.JasperException:发生异常 在第 56 行处理 JSP 页面 /Login.jsp
53: 54: 55: 56: if((!(name.equals(null) || name.equals("")) && !(password.equals(null) || 57: password.equals(""))) && !usertype.equals("select")) 58: 59: {
堆栈跟踪: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因 java.lang.NullPointerException org.apache.jsp.Login_jsp._jspService(Login_jsp.java:192) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
注意根本原因的完整堆栈跟踪在服务器中可用 日志。
Apache Tomcat/8.5.14
【问题讨论】: