精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
Hi, I am making database connectivity in struts and getting error : javax.servlet.ServletException: java.lang.NullPointerException, code: 嗨,我在struts制作数据库连接和获取错误:javax.servlet.ServletException:显示java.lang.NullPointerException,代码:
config.xml:
<form-beans> <form-bean name="DemoTestForm" type="DemoTestForm"/> </form-beans> <action-mappings> <action input="/index.jsp" name="DemoTestForm" parameter="testMethod" path="/test" scope="request" type="DemoTestAction"> <forward name="success" path="/welcomeStruts.jsp"/> <forward name="fail" path="/Failure.jsp"/> </action> </action-mappings>
DBConnect.java:
import java.sql.*;
public class DBConnect
{
Connection con=null;
String result;
public String checkUser(String name,String pass)
throws Exception
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection
("jdbc:oracle:thin@localhost:1521:xe", "system", "java");
}catch(ClassNotFoundException cnf)
{
cnf.getMessage();
}
finally
{
con.close();
}
return(result);
}
}
DemoAction.java:
public class DemoTestAction
extends org.apache.struts.action.Action {
@Override
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
DemoTestForm f = (DemoTestForm)form;
String name = f.getTextName();
String pass = f.getTextPass();
String logic=null;
DBConnect db=new DBConnect();
db.checkUser(name, pass);
Statement stmt=null;
ResultSet rs=null;
stmt=db.con.createStatement();
rs=stmt.executeQuery("select * from admin");
while (rs.next())
{
pass.equals(rs.getString(3))))
if (name.equals(rs.getString(2)) && pass.equals(rs.getString(3))) {
logic="success";
break;
}
else
{
logic="fail";
}
}
return mapping.findForward(logic);
}
}
index.jsp:
<html:form action="/test"> Name: <html:text property="textName"/><br> Password: <html:password property="textPass"/><br> <html:submit property="loginButton" value="Login Here"/> </html:form >
Please help solve my problem. 请大家帮忙解决我的问题。
added some formatting; needs more. 增加了一些格式;需要更多。
Try debugging it. Somewhere in this, you are accessing an object that has not been initilised, hence null pointer. 尝试调试它。某处在此,您访问尚未initilised的对象,因此,空指针。
i have already debug my program and i have initialized all object .....so plzz check my prog ... 我已经调试我的程序,我已经初始化所有的对象.....所以plzz检查我PROG ...
There is alot of information missing: 有资料丢失了很多:
- Stack trace? - 堆栈跟踪?
- If you have debugged, what line throws the exception? - 如果你已经调试,哪一行抛出异常?
Please add these to the question - click the green 'Improve question' text and maybe I, or someone, can see where the problem lies. 请把这些加入到这个问题 - 点击绿色的“改善问题”的文字,也许我还是有人,可以看到问题所在。
Finally, try spelling words in full and using capitalisation. There is nothing to get people more annoyed on cp then 'i', 'plzz' or 'gizus codz'. 最后,尝试拼写单词全部使用大写字母。没有什么可以让人们对CP更恼火然后'我','plzz'或'gizus codz“。
And I've formatted your code for you. 我已经格式化你的代码你。
Look at the following code: 请看下面的代码:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection
("jdbc:oracle:thin@localhost:1521:xe", "system", "java");
}
catch (ClassNotFoundException cnf) {
cnf.getMessage();
}
finally
{
con.close();
}
return(result);
Every time the code is executed the finally block is executed. It is there to clean up after a try block and is executed irrespective of if there has been an exception or not. 每次执行代码时的最终块被执行。它是有一个try块后清理,并不管是否出现了异常或不执行。
So after opening a DB connection you close it. 所以打开后关闭它一个数据库连接。
Also, even though it's not used, result is not being set. 另外,即使它没有被使用,结果是不被设置。