问题遇到的现象和发生背景
应该是 Statement stmt=conn.createStatement();这句代码有错,但是不知道怎么改
用代码块功能插入代码,请勿粘贴截图
<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<jsp:useBean id="DBConn" class="conn.DBConnAccess" scope="request"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'checkuser.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String username=request.getParameter("loginName");
String password=request.getParameter("password");
String checkcode=request.getParameter("checkcode");
String piccode=request.getSession().getAttribute("piccode").toString();
String role=request.getParameter("role");
String dbpath=request.getRealPath("/")+"DB.accdb";
Connection conn=DBConn.getConnToAccess(dbpath);
Statement stmt=conn.createStatement();
String sql="select * from userinfo";
sql+="where loginname='"+username+"'and password='"+password+"' and role='"+role+"'";
ResultSet rs=stmt.executeQuery(sql);
if(checkcode.equals(piccode)&&rs.next())
{
session.setAttribute("userName",username);
if(role.equals("admin"))
{
response.sendRedirect("admin/main.jsp");
}
else if(role.equals("client"))
{
response.sendRedirect("client/main.jsp");
}
}
else{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
运行结果及报错内容
HTTP Status 500 -
type Exception report
message
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 /checkUser.jsp at line 36
33: String role=request.getParameter("role");
34: String dbpath=request.getRealPath("/")+"DB.accdb";
35: Connection conn=DBConn.getConnToAccess(dbpath);
36: java.sql.Statement stmt=conn.createStatement();
37: String sql="select * from userinfo";
38: sql+="where loginname='"+username+"'and password='"+password+"' and role='"+role+"'";
39: ResultSet rs=stmt.executeQuery(sql);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.NullPointerException
org.apache.jsp.checkUser_jsp._jspService(checkUser_jsp.java:103)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
Apache Tomcat/6.0.13
我的解答思路和尝试过的方法
将 Statement stmt=conn.createStatement(); 改为
java.sql.Statement stmt=conn.createStatement(); 但是还是不行 【!我是用MyEclipse Tomcat运行的!】
我想要达到的结果
希望可以正常运行,谢谢大家