【问题标题】:How do retrieve vales from HTML Post method to Java with freemarker?如何使用 freemarker 从 HTML Post 方法检索值到 Java?
【发布时间】:2019-04-27 12:30:47
【问题描述】:

我正在尝试创建一个简单的注册表单并将用户的数据插入 mongodb。

    <html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Sign Up</title>
  <link href="/css/main.css" rel="stylesheet">
</head>
<body>
<h2>Sign Up</h2>
<#if user?? >
Your submitted data<br>
Name: ${user.user_id}<br>
Password: ${user.password}<br>
Email: ${user.email}<br>
<#else>
<form action="/form" method="post">
  First name:<br>
  <input type="text" name="Name">
  <br><br>
  Pasword:<br>
  <input type="text" name="password">
    <br><br>
  Email:<br>
  <input type="text" name="email">
  <br><br>
  <input type="submit" value="Submit">
</form>
</#if>
<script src="/js/main.js"></script>
</body>
</html>

我有一个 User 类,我想创建它的一个实例,以获取数据并将其插入到 mongodb。这是我不知道该怎么做的部分。如何创建控制器以将数据从 HTML 传递到 User 实例?

这是我目前所拥有的 -

//sign up page
        Spark.get(new Route("signup") {
            @Override
            public Object handle(Request request, Response response) {
                StringWriter writer = new StringWriter();
                User user = new User(); // create user to fetch results
                try{
                    Template signupTemplate = configuration.getTemplate("signup.ftl");

                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });
            }

我该如何从这里继续?我可以只使用freemarkersparkjava 吗?

【问题讨论】:

    标签: java html model-view-controller freemarker spark-java


    【解决方案1】:

    要将表单数据发布到服务器,您应该定义一个 spark 路由来监听 POST 方法。

    spark 路由由三个实体 (see doc's) 组成,

    • 动词:获取、发布、放置、删除等
    • path:Route 应用的请求路径
    • 回调:当传入请求匹配路径时将调用的处理程序类。

    在你的情况下应该是,

    Spark.post("/form", new Route() {
            @Override
            public Object handle(Request request, Response response) {
                // process request and return response
            }
        });
    

    如果您使用 Java 8,您可以简化上述操作,

    Spark.post("/form", (request, response) -> {
            // process request and return response
        });
    

    现在要读取表单数据,您可以通过获取原始请求 (HttpServletRequest) 并在 handle 方法中使用 getParameter() 来实现。

    HttpServletRequest httpRequest = request.raw();
    String name = httpRequest.getParameter("Name");
    String email = httpRequest.getParameter("email");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      相关资源
      最近更新 更多