3

私はこれらすべてのことにかなり慣れていませんが、それがどのように機能するかを理解するのを手伝ってくれることを願っています. field のフォームを取得しました。クライアントからデータを取得するにはどうすればよいですか? いくつかの情報を探していましたが、見つかりませんでした。

<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>

    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";
    });

フォームを送信した場合 (method=get) - すべて正常に動作します request.queryParams(XXXX) フォームを送信した場合 (method=post) - request.queryParams で - 何もありません

POSTリクエストで何をすべきか知っている人はいますか?

4

1 に答える 1

5

いろいろ間違っている可能性があります。Java コード、HTML マークアップなどにエラーがある可能性があります。他の情報を知らなくても、最善の策は、試行錯誤の方法論を試して、何が問題なのかをデバッグすることです。

ただし、それを試す前に、最初にできることはpost、フォームの送信内容を正確に印刷することです。

post("/login", (request, response) -> {
    System.out.println(request.body());
    ...

何も出力しない場合、クライアントは何も送信していないため、問題はビューにあります。

たとえば、文字列を出力する場合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 ...
于 2015-11-20T23:31:33.110 に答える