不知这算不算怪问题,100求助,给点思路也给分 很明显:checkLogOn.jsp中空指针异常~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是验证登陆的JSP:<%@page contentType="text/html; charset=GBK" import="java.sql.*"%><html><head><title>check</title></head><jsp:useBean id="handleDatabase" scope="session" class="hrms.handleDatabase"></jsp:useBean><body><% request.setCharacterEncoding("gb2312"); //避免出现乱码 //----------------------------------------------------------------------------------- String userId = request.getParameter("userId"); //得到页面输入的用户名 String pwd = request.getParameter("pwd"); ///得到页面输入的密码 String selectType = request.getParameter("selectType"); //得到页面选择的登录类型 String userName = ""; //预定义的将要从数据库中得到的用户姓名 int userVisit = 0; //预定义的将要从数据库中得到的用户登录次数 boolean feedback = false; //判断登录是否成功 //----------------------------------------------------------------------------------- Connection con = handleDatabase.connect(); //与数据库建立连接 //----------------------------------------------------------------------------------- if (selectType.equals("老师")) { //如果是教师登录 PreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间 ps1.setString(1, userId); ps1.setString(2, pwd); ResultSet result1 = ps1.executeQuery(); //----------------------------------------------------------------------------------- if (result1.next()) { userVisit = result1.getInt("te_visit") + 1; //将用户访问次数加1 userName = result1.getString("te_name"); feedback = true; result1.close(); ps1.close(); PreparedStatement ps2 = con.prepareStatement("update teacher set te_visit=? where te_usr=?"); //将最新的访问次数返回数据库 ps2.setInt(1, userVisit); ps2.setString(2, userId); ps2.execute(); ps2.close(); con.close(); session.setAttribute("userName", userName); //将用户姓名和用户类型放进session session.setAttribute("type", selectType); String visitNo = Integer.toString(userVisit); session.setAttribute("visitNo", visitNo); session.setAttribute("isLog", new String("1")); //登录成功的标志 response.sendRedirect("logOnOk.jsp"); } //----------------------------------------------------------------------------------- else {%><script type="text/javascript" language="JavaScript"> alert("您的输入不正确,请核对后重新输入"); document.location.replace("logOn.jsp");</script><% } } //----------------------------------------------------------------------------------- else if (selectType.equals("管理员")) { //如果是管理员登录 PreparedStatement ps3 = con.prepareStatement(" SELECT ad_visit,ad_name FROM admin WHERE ad_usr = ? and ad_pwd=?"); ps3.setString(1, userId); ps3.setString(2, pwd); ResultSet result2 = ps3.executeQuery(); //----------------------------------------------------------------------------------- if (result2.next()) { userVisit = result2.getInt("ad_visit") + 1; userName = result2.getString("ad_name"); feedback = true; result2.close(); ps3.close(); PreparedStatement ps4 = con.prepareStatement("update admin set ad_visit=? where ad_usr=?"); ps4.setInt(1, userVisit); ps4.setString(2, userId); ps4.execute(); ps4.close(); con.close(); session.setAttribute("userName", userName); //将用户姓名和用户类型放进session session.setAttribute("type", selectType); String visitNo = Integer.toString(userVisit); session.setAttribute("visitNo", visitNo); session.setAttribute("isLog", new String("1")); //登录成功的标志 response.sendRedirect("logOnOk.jsp"); } //----------------------------------------------------------------------------------- else {%><script type="text/javascript" language="JavaScript"> alert("您的输入不正确,请核对后重新输入"); document.location.replace("logOn.jsp");</script><% } }%></body></html>程序应该没有问题,因为JB里面完全正常,而且我已经加载了在TM5.5.9中加载了驱动,且设好了环境变量,大家帮帮忙 到TOMCAT_HOME\work\Standalone\localhost\_目录下,打开checkLogOn_jsp文件,看第71行就是出错的地方我估计可能是Connection con = handleDatabase.connect(); 这一句如果是的话看看handleDatabase这个类部署的位置对不对 71行是: ps4.setString(2, userId); 怎么这个地方会有错?? 既然在jb中能运行,程序应该没有问题,可能是配置或环境设置的问题,你换成comcat4试一试。 这就是handleDatabase,应该没有错吧,JB里面完全正常的package hrms;import java.sql.*;public class handleDatabase { public handleDatabase() { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //装载驱动 } catch (Exception e) { e.toString(); } } //-----------------------------连接函数--------------------------------------------------------------------------------------------------------------------------- public Connection connect() throws Exception { //形参为服务器地址,端口号,数据库名称,用户名,密码 try { con = java.sql.DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=HRMS", "bn", "bn"); //建立连接 } catch (Exception e) { e.toString(); } return con; //返回连接 } 不是checkLogOn.jsp的71行,是TOMCAT_HOME\work\Standalone\localhost\_目录下相应文件的71行。 D:\Tomcat 5.5\work\Catalina\localhost\_下面有一个org目录和一个tldCache.ser文件,org目录里面是\apache\jsp,里面就是几个java 文件和class文件,我选择了checkLogOn.javaPreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间 也就是71行是这个PreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间这一句有错吗?为什么会有空指针?JB里面可以的阿 那句出错是因为:Connection con = handleDatabase.connect(); //与数据库建立连接这里没有取到连接con是null值确认你的驱动是否部署正确在handleDatabase类的catch中加入e.printStackTrace(),把错误打出来 最有可能的就是那个连接有问题,你在取得链接后system.out.print输出到控制台一条信息试试 我在JB里面一切正常,查不到错啊,只是将页面放到服务器ROOT页面下访问的时候出现的 唉,再说一遍出错的地方是Connection con = handleDatabase.connect(); //与数据库建立连接这里没有取到连接con是null值出错不是因为代码问题,因为你在jb里能跑,那肯定是环境部署问题最有可能的是你的数据库驱动jar包没有放在WEB-INF\lib下在handleDatabase类的catch中加入e.printStackTrace(),像这样catch (Exception e) { e.printStackTrace(); }把错误打出来看就很清楚了 我已经把Microsoft SQL Server 2000 Driver for JDBC的3个jar包放在WEB-INF\lib下了,也加上了 catch (Exception e) { e.printStackTrace(); },但是出错页面依然和原来是一样的 e.printStackTrace();打印出来的错误是在Tomcat控制台上的,不是在网页上 建议还是打成war文件后 部署到tomcat webapp下 首先谢谢大家,今天开机突然就好了,神秘啊!:)).PS:我觉得数据库不会有什么问题,因为JB同样在连接数据库,谢谢 关于查询结果删除记录的问题 如何替换掉JSP中的<% %> Openlayers如何实现不同大小加载不同图层? 看看我的代码是不是错误 请高手指点 请想要c#程序的网友进来看看 跪求myeclipse源代码。要做一个动态的。 初学,关于调用session对象属性的问题,在线等,解决即结贴! 请教下大家关于包的建立和文件存放规范的问题. 用JFreeChart生成柱状图,柱子的颜色怎么改,默认是红色的 ? 请问一下在Tomcat中servlet应该怎样部署? 各位大师:JSP中上传下载如何做呀? 帮我一下呀 50分 有没有通过jsp页面把excel的数据导入到数据库中?
<%@page contentType="text/html; charset=GBK" import="java.sql.*"%>
<html>
<head>
<title>check</title>
</head>
<jsp:useBean id="handleDatabase" scope="session" class="hrms.handleDatabase"></jsp:useBean>
<body>
<%
request.setCharacterEncoding("gb2312"); //避免出现乱码
//-----------------------------------------------------------------------------------
String userId = request.getParameter("userId"); //得到页面输入的用户名
String pwd = request.getParameter("pwd"); ///得到页面输入的密码
String selectType = request.getParameter("selectType"); //得到页面选择的登录类型
String userName = ""; //预定义的将要从数据库中得到的用户姓名
int userVisit = 0; //预定义的将要从数据库中得到的用户登录次数
boolean feedback = false; //判断登录是否成功
//-----------------------------------------------------------------------------------
Connection con = handleDatabase.connect(); //与数据库建立连接
//-----------------------------------------------------------------------------------
if (selectType.equals("老师")) { //如果是教师登录
PreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间
ps1.setString(1, userId);
ps1.setString(2, pwd);
ResultSet result1 = ps1.executeQuery();
//-----------------------------------------------------------------------------------
if (result1.next()) {
userVisit = result1.getInt("te_visit") + 1; //将用户访问次数加1
userName = result1.getString("te_name");
feedback = true;
result1.close();
ps1.close();
PreparedStatement ps2 = con.prepareStatement("update teacher set te_visit=? where te_usr=?"); //将最新的访问次数返回数据库
ps2.setInt(1, userVisit);
ps2.setString(2, userId);
ps2.execute();
ps2.close();
con.close();
session.setAttribute("userName", userName); //将用户姓名和用户类型放进session
session.setAttribute("type", selectType);
String visitNo = Integer.toString(userVisit);
session.setAttribute("visitNo", visitNo);
session.setAttribute("isLog", new String("1")); //登录成功的标志
response.sendRedirect("logOnOk.jsp");
}
//-----------------------------------------------------------------------------------
else {
%>
<script type="text/javascript" language="JavaScript"> alert("您的输入不正确,请核对后重新输入"); document.location.replace("logOn.jsp");
</script><%
}
}
//-----------------------------------------------------------------------------------
else if (selectType.equals("管理员")) { //如果是管理员登录
PreparedStatement ps3 = con.prepareStatement(" SELECT ad_visit,ad_name FROM admin WHERE ad_usr = ? and ad_pwd=?");
ps3.setString(1, userId);
ps3.setString(2, pwd);
ResultSet result2 = ps3.executeQuery();
//-----------------------------------------------------------------------------------
if (result2.next()) {
userVisit = result2.getInt("ad_visit") + 1;
userName = result2.getString("ad_name");
feedback = true;
result2.close();
ps3.close();
PreparedStatement ps4 = con.prepareStatement("update admin set ad_visit=? where ad_usr=?");
ps4.setInt(1, userVisit);
ps4.setString(2, userId);
ps4.execute();
ps4.close();
con.close();
session.setAttribute("userName", userName); //将用户姓名和用户类型放进session
session.setAttribute("type", selectType);
String visitNo = Integer.toString(userVisit);
session.setAttribute("visitNo", visitNo);
session.setAttribute("isLog", new String("1")); //登录成功的标志
response.sendRedirect("logOnOk.jsp");
}
//-----------------------------------------------------------------------------------
else {
%>
<script type="text/javascript" language="JavaScript"> alert("您的输入不正确,请核对后重新输入"); document.location.replace("logOn.jsp");
</script><%
}
}
%>
</body>
</html>程序应该没有问题,因为JB里面完全正常,而且我已经加载了在TM5.5.9中加载了驱动,且设好了环境变量,大家帮帮忙
这就是handleDatabase,应该没有错吧,JB里面完全正常的package hrms;
import java.sql.*;public class handleDatabase { public handleDatabase() {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //装载驱动
}
catch (Exception e) {
e.toString();
}
} //-----------------------------连接函数--------------------------------------------------------------------------------------------------------------------------- public Connection connect() throws Exception { //形参为服务器地址,端口号,数据库名称,用户名,密码
try {
con = java.sql.DriverManager.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=HRMS",
"bn", "bn"); //建立连接
}
catch (Exception e) {
e.toString();
}
return con; //返回连接
}
PreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间
PreparedStatement ps1 = con.prepareStatement(" SELECT te_visit,te_name FROM teacher WHERE te_usr = ? and te_pwd=?"); //将输入的用户名及密码在数据库中进行查找,并返回用户姓名及访问时间这一句有错吗?为什么会有空指针?JB里面可以的阿
Connection con = handleDatabase.connect(); //与数据库建立连接
这里没有取到连接con是null值确认你的驱动是否部署正确在handleDatabase类的catch中加入e.printStackTrace(),把错误打出来
这里没有取到连接con是null值出错不是因为代码问题,因为你在jb里能跑,那肯定是环境部署问题最有可能的是你的数据库驱动jar包没有放在WEB-INF\lib下
在handleDatabase类的catch中加入e.printStackTrace(),像这样
catch (Exception e) {
e.printStackTrace();
}
把错误打出来看就很清楚了
e.printStackTrace();
},但是出错页面依然和原来是一样的
打印出来的错误是在Tomcat控制台上的,不是在网页上