如何解决Intellij:将我的getConnection代码链接到MySQL数据库Web应用程序J2EE时出现问题
您好,请将我的登录代码链接到数据库时出现问题。 我的sql列名称匹配。我确保了这一点。我使用macOS的mysql工作台创建了连接。
public class User {
private int userId;
private String userName;
private String password;
private String email;
private String address;
private String phone;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
private boolean logged = false;
public Connection getConnection() throws Exception {
//My Connection to the database
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/OnlineBookStore","root","root");
}
public void login() {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = getConnection();
preparedStatement = connection.prepareStatement("select userid,email,phone,address from users where uname = ? and pwd= ?");
preparedStatement.setString(1,userName);
preparedStatement.setString(2,password);
ResultSet rs = preparedStatement.executeQuery();
logged = false;
if (rs.next()) {
userId = rs.getInt("userid");
email = rs.getString("email");
address = rs.getString("address");
phone = rs.getString("phone");
logged = true;
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public String registerUser() {
Connection con = null;
PreparedStatement ps = null;
try {
con = getConnection();
userId = getNextUserid(con);
ps = con.prepareStatement("insert into users values (?,?,?)");
ps.setInt(1,userId);
ps.setString(2,userName);
ps.setString(3,password);
ps.setString(4,email);
ps.setString(5,address);
ps.setString(6,phone);
ps.executeUpdate();
logged = true;
return null;
} catch (Exception ex) {
return ex.getMessage();
}
}
public boolean isLogged() {
return logged;
}
public int getNextUserid(Connection con) throws Exception
{
PreparedStatement ps = null;
ps = con.prepareStatement("select nvl( max(userid),0) + 1 from users");
ResultSet rs = ps.executeQuery();
rs.next();
int nextuserid = rs.getInt(1);
rs.close();
return nextuserid;
}
}
我的输出逻辑与logedIn布尔表达式有关。我在index.jsp文件中创建了输出表达式(如果要从数据库登录的用户名和密码正确,则应该连接),但输出总是输出为“否”,我的数据库连接就可以了。
输出是我的JSP文件中的Setup:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
</head>
<body bgcolor="beige">
<div style="text-align: center;">
<jsp:useBean id="user" class="obs.User" scope="session" />
<jsp:setProperty name="user" property="*" />
<%
user.login();
if (!user.isLogged()){
out.print("No");
} else{
out.print("yes");}
%>
<h3>Invalid Login. Click <a href=index.html>here</a> to try again! </h3>
</div>
</body>
</html>
Finally this is my index.html :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body bgcolor="beige">
<h2>New User Registration </h2>
<hr>
<form action="register.jsp" method="post">
<table>
<tr>
<td>
User Name
<td>
<input type=text name=uname size=20>*
</tr>
<tr>
<td>
Password
<td>
<input type=password name=pwd size=20>*
</tr>
<tr>
<td>
Confirm Password
<td>
<input type=password name=pwd2 size=20>*
</tr>
<tr>
<td>
Email Address
<td>
<input type=text name=email size=30>*
</tr>
<tr>
<td>Mailing Address
<td>
<textarea name="address" rows=3 cols=30></textarea>*
</td>
</tr>
<tr>
<td>
Phone Number
<td>
<input type=text name=phone size=30>
</tr>
</table>
<p>
<input type=submit value="Register">
<input type=reset value="Clear All">
<p>
<a href="login.html">Go Back</a>
</form>
</center>
</body>
</html>
我也将它作为依赖项添加到了pom.xml文件中:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
请检查一下为什么输出为“否”的逻辑,并且看起来正确,请在此平台上发布此问题以征求意见,或者我的逻辑是否错误。另外,如果我的getConnection代码错误或要更改mysql连接器,请先谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。