web.xml中的register部分如下:
RegisterServlet
servlet.RegisterServlet
RegisterServlet
/registerServlet
Register.java代码段如下
public class RegisterServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setContentType("gb2312");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
if(new DB().insertUser(username, pwd)){
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
运行之后,浏览器没啥反应,我估计是Register.java中的if判断语句出现了问题,于是我添加了如下代码:
if(new DB().insertUser(username, pwd)){
response.sendRedirect("login.jsp");
}else{
response.sendRedirect("success.jsp");
}
果然返回了success.jsp界面。 其中register.jsp代码段如下:
其中DB.java的数据库连接代码段如下:
Connection con;
PreparedStatement pstmt;
public DB(){
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433; DatabaseName=JSP";
String username = "load";
String password = "hww";
//加载驱动程序以连接数据库
try {
Class.forName(driverName);
con = DriverManager.getConnection(url, username, password);
}
//捕获加载驱动程序异常
catch (ClassNotFoundException e){
System.err.println("加载JDBC/ODBC驱动程序失败。");
e.printStackTrace();
System.exit(1);
}
//捕获连接数据库异常
catch (SQLException e){
System.err.println("无法连接数据库");
e.printStackTrace();
System.exit(1);
}
}
判断是否添加注册用户的代码段如下:
public boolean insertUser(String username,String pwd){
try{
pstmt = con.prepareStatement("insert into[userTable]values(?,?)");
pstmt.setString(1, username);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
请问在哪里出错了,搞不明白。谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
通过你的描述,可以发现时
insertUser方法的问题,看你贴的方法返回false是抛出了异常,确切的说是SQLException,出现异常调用的可能点:con.prepareStatement("insert into[userTable]values(?,?)")pstmt.setString(index, value)pstmt.executeUpdate()下面是这3点的异常在Javadoc中的描述:
从你的代码来看,异常的原因应该是:
你在代码中捕获了异常,加了一个
e.printStackTrace(),好吧,去控制台看日志就知道原因了。PS: 不知你是否是刚接触这种常见的前端Web+后台DB的Java编程,碰到问题好好分析一下代码,然后根据打印出的日志,一般能很快找出原因,而且在这个过程能锻炼到自己。这种自己独立分析问题,解决问题的方法很重要,再不行,还有google,求助论坛,问答网站这种及时性相对较差的方式应该是最后的选择。而且,自己独立解决问题,哪怕再小而简单的问题,难道不是一件很爽的事情吗?
In this particular case of ClassNotFoundException looks like mysql driver jar file is missing from Classpath. If you pay attention you will find that we use method Class.forName (“driver”) to load the driver class which resides in a particular jar in case of this its mysql-connector.jar and if that jar is not in classpath or not accessible to JVM it will throw java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Read more: http://javarevisited.blogspot.com/2011/08/classnotfoundexception-in-java-example.html#ixzz2hOHKaEa3