这是我第一次尝试使用Netty并随着我们的学习而学习,因此希望您可以减少一点懈怠。
我从事的项目实质上是使用Netty进行网络连接。通过浏览器使用HTML(前端)以电子邮件和密码的形式获取用户凭据,以使其由Java(后端)进行处理,然后将其与MYSQL数据库进行比较。
我想要做的是,当用户输入正确的凭据时,然后让服务器将其重定向到HTML页面,以便他们可以做进一步的事情。
我只是不确定如何正确处理它,我是否让后端发送一个在后端编码的新HTML页面?还是让后端简单地重定向到已经制作好的HTML页面?以及是否可以通过Netty做到这一点?
我正在使用以下HTML代码:仅获取用户的电子邮件和密码。然后将其发送到Java中的后端代码,以解析数据并将其与MYSQL数据库进行比较。
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="style.css">
<body>
<div class = "loginbox">
<form method = "POST" action ="http://localhost:8080/login">
<div class = email>
<i class="fa fa-user-o user" style="color:grey;"></i>
<input type= "email" name="Email" placeholder="Email Address" required>
</div>
<div class = password>
<i class="fa fa-lock lock" style ="color:grey;"></i>
<input type= "password" name="Password" placeholder="Password" required>
</div>
<div class = submit>
<input type= "submit" value="submit">
</div>
</form>
</div>
</body>
</head>
</html>
后端代码(处理程序):
public class loginHandler implements serverHandler{
@Override
public void handlePacket(ChannelHandlerContext ctx, Object msg) {
String login = null;
String password = null;
String sqlLogin = null;
String sqlPassword = null;
HttpPostRequestDecoder decoder = new HttpPostRequestDecoder((HttpRequest) msg);
try{
List<InterfaceHttpData> postList = decoder.getBodyHttpDatas();
for(InterfaceHttpData data : postList){
MixedAttribute value = (MixedAttribute)data;
if (value.getName().equalsIgnoreCase("email")){
login = value.getValue();
} if (value.getName().equalsIgnoreCase("password")){
password = value.getValue();
}
}
decoder.destroy();
}
catch(Exception e){
}
try{
Connection con = database.connectToDB();
PreparedStatement ps = con.prepareStatement("SELECT * FROM login;");
ResultSet rs = ps.executeQuery();
while(rs.next()){
sqlLogin = rs.getString("login");
sqlPassword = rs.getString("password");
}
rs.close();
ps.close();
con.close();
} catch(SQLException e){
System.out.println(e);
}
//Compare logic
if (login.equalsIgnoreCase(sqlLogin) && password.equalsIgnoreCase(sqlPassword)){
//Send HTML re-direct or Send HTML contents ?
} else {
System.out.println("Either email or/and password is wrong. Please Try again or register");
}
}
}