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-2026 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,求助论坛,问答网站这种及时性相对较差的方式应该是最后的选择。而且,自己独立解决问题,哪怕再小而简单的问题,难道不是一件很爽的事情吗?