我对所有这些事情都很陌生,但希望你们能帮我理解它是如何运作的.我有一个带字段的表格.我如何从客户端获取数据?正在寻找一些信息,但无法找到.
<form action="/login" method="POST">
<fieldset>
<legend>MemberId</legend>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_memberid" class="control-label">MemberId</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_memberid" name="txt_memberid" placeholder="MemberId" type="text" value="" />
<span class="text-danger"></span>
</div>
</div>
</div>
<legend>Login</legend>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_username" class="control-label">Username</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_username" name="txt_username" placeholder="Username" type="text" value="" />
<span class="text-danger"></span>
</div>
</div>
</div>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_password" class="control-label">Password</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_password" name="txt_password" placeholder="Password" type="password" value="" />
<span class="text-danger"></span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-12 col-sm-12 text-center">
<input id="btn_login" name="btn_login" type="submit" class="btn btn-default" value="Login" />
<input id="btn_cancel" name="btn_cancel" type="reset" class="btn btn-default" value="Cancel" />
</div>
</div>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
get("/login", (request, response) -> {
ConsoleLog.consoleLog(log, request);
HashMap model = new HashMap();
model.put("content", new VelocityTemplateEngine().render(new ModelAndView(new HashMap(),"templates/form_login.vtl")));
return new ModelAndView(model, "templates/base.vtl");
}, new VelocityTemplateEngine());
post("/login", (request, response) -> {
ConsoleLog.consoleLog(log, request);
Integer memberId = -1;
String username = "";
String password = "";
try {
username = request.queryParams("txt_username");
password = request.queryParams("txt_password");
memberId = new Integer(request.queryParams("txt_memberid"));
} catch (Exception e) {}
log.info("MemberId="+memberId+" UserName="+username+" Password="+password);
if (new MemberDAO().isAuth(new Auth(username,password,memberId))) {
request.session(true);
request.session().attribute("txt_memberid", memberId);
request.session().attribute("txt_username", username);
}
return "process";
});
Run Code Online (Sandbox Code Playgroud)
如果我发送表单(方法=获取) - 所有工作正常request.queryParams(XXXX)如果我发送表单(方法=帖子) - 在request.queryParams - 没有
也许有人知道我应该在POST请求中做什么?
小智 5
可能有很多错误.Java代码,HTML标记或其他任何内容都可能存在错误.在不知道任何其他信息的情况下,最好的办法是尝试使用试错法来调试出错的地方.
但是,在尝试之前,您可以做的第一件事就是打印出post表单发送给您的确切内容:
post("/login", (request, response) -> {
System.out.println(request.body());
...
Run Code Online (Sandbox Code Playgroud)
如果它什么都没打印出来,那么客户端什么也没有发送给你,因此问题出现在视图中.
例如txt_username=john&txt_password=pass,如果它打印出一个字符串,那么客户端就会向您发送数据,因此您真正需要做的就是使用Spark提供的请求对象的方法从中提取数据.因此,要进行调试,请使用上述的试错法:
post("/login", (request, response) -> {
System.out.println(request.contentType()); // What type of data am I sending?
System.out.println(request.params()); // What are the params sent?
System.out.println(request.raw()); // What's the raw data sent?
// etc ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8574 次 |
| 最近记录: |