{Netty}-使用Java将数据发送回HTTP客户端的正确方法是什么

时间:2019-08-27 23:31:02

标签: java html netty

这是我第一次尝试使用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");
    }
  }

}

0 个答案:

没有答案