-1

Java プロジェクトを Java Web アプリケーションのソース パッケージに添付しました。「システム」と呼ばれる単一のサーブレットを作成しました。私がやろうとしているのは、バックエンド アプリケーションのフロント エンドを作成することです。

しかし、私が抱えている問題は、「processregister」フォームで、送信アクションで「processreadregister」の 2 番目のアクションにリダイレクトできないことです。したがって、ユーザーがフォームに入力すると、情報を取得して、バックエンドが登録を行うようにセットを呼び出すことができます。明らかに、それが成功したかどうかを確認できます。

サーブレットに慣れていないので、おそらく完全に間違っていて、間違ったアクションを呼び出しているのでしょう。

コードサンプル:

package HPC;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import hpcproject.HPCSystem;
import hpcproject.JobRequest;
import hpcproject.User;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 *
 * @author Kieran
 */
@WebServlet(name = "System", urlPatterns = {"/System"})
public class System extends HttpServlet {

    HPCSystem System = new HPCSystem();

    public enum OPCode {
// specify enums to methods

        BOOKING, READBOOKING, NOTHING;

        public static System.OPCode resolve(String str) {
            try {
                return valueOf(str.toUpperCase());
            } catch (Exception e) {
                return NOTHING;
            }
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        switch (System.OPCode.resolve(request.getParameter("action"))) {
            case REGISTER:
                processRegister(request, response);
                break;
            case READREGISTER:
                processReadRegister(request, response);
                break;

        }
    }


    protected void processRegister(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        User testUser = new User();
        System.RegisterUserWithSystem(testUser);
        // point where it goes

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Register Process</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<FORM NAME ='register' ACTION ='readregister' METHOD='POST>'");
        // SORT OUT ISSUE HERE!!!
        out.println("<input type='hidden' name='action' value='readregister'>");
        out.println("<br>");
        out.println("Login ID:");
        out.println("<INPUT TYPE='TEXT' name='user'>");
        out.println("<br>");
        out.println("Password:");
        out.println("<INPUT TYPE='PASSWORD' name='password'>");
        out.println("<br>");
        out.println("Department:");
        out.println("<INPUT TYPE='TEXT' name='department'>");
        out.println("<br>");
        out.println("Email:");
        out.println("<INPUT TYPE='TEXT' name='email'>");
        out.println("<br>");
        out.println("First name:");
        out.println("<INPUT TYPE='TEXT' name='fname'>");
        out.println("<br>");
        out.println("Last name:");
        out.println("<INPUT TYPE='TEXT' name='lname'>");
        out.println("<br>");
        out.println("<INPUT TYPE='SUBMIT' VALUE='Submit' onclick=setType('readregister') >");
        out.println("</FORM>");
        out.println("</body>");
        out.println("</html>");
    }

    protected void processReadRegister(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        User testUser = new User();


            String id = request.getParameter("user");
            String password = request.getParameter("password");
            String department = request.getParameter("department");
            String email = request.getParameter("email");
            String myfirstname = request.getParameter("fname");
            String mylastname = request.getParameter("lname");

            testUser.setUserID(id);
            testUser.setUserPassword(password);
            testUser.setUseDepartment(department);
            testUser.setUserEmail(email);
            testUser.setUserFname(myfirstname);
            testUser.setUserLname(mylastname);

            if (System.RegisterUserWithSystem(testUser)) {
                out.println("User added successfully");
            } else {
                out.println("Failed to add user");
            }
             out.println("<html>");
        out.println("<head>");
        out.println("<title>Charts</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<p>View Charts</p>");
        out.println("</body>");
        out.println("</html>");


    }


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
4

1 に答える 1

0

タグ内のaction属性"は、フォームが送信されたときにフォームデータを送信する場所を指定します"。aを使用して to を実行しようとしていますが、そのためのマッピングがないため意味がありません。サーブレットのマッピング先の属性を変更してみてください。<form>ACTION ='readregister'POSTreadregisteraction/System

他にも小さな間違いがあります:

    out.println("<FORM NAME ='register' ACTION ='readregister' METHOD='POST>'");

する必要があります

    out.println("<FORM NAME ='register' ACTION ='readregister' METHOD='POST'>");

'の前に一重引用符があることに注意して>ください。

JSP と、Java サーブレット用のさまざまな HTML レンダリング テクノロジを実際に検討する必要があります。HTML を Java に直接書き込むのは、本当に悪い習慣です。

于 2013-03-05T15:11:22.193 に答える