Перенаправление на другой сервлет на основе действия страницы HTML - PullRequest
0 голосов
/ 07 февраля 2020

Здесь у меня есть 2 сервлета

@WebServlet("/Login")
public class Login extends HttpServlet {

.........
.........

}


@WebServlet("/Create")
public class Create extends HttpServlet {

.........
.........

}

И вот такая страница HTML.

<form name="loginForm" method="post" action="Login">
  <table width="20%" bgcolor="0099CC" align="center">
    <tr>
      <td colspan=2>
        <center>
          <font size=4><b>HTML Login Page</b></font>
        </center>
      </td>
    </tr>
    <tr>
      <td>Username:</td>
      <td><input type="text" size=25 name="username"></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><input type="Password" size=25 name="password"></td>
    </tr>
    <tr>
      <td><input type="submit" onclick="return check(this.form)" value="Login"></td>
    </tr>
    <tr>
      <td><input type="submit" onclick="return check(this.form)" value="Create profile"></td>
    </tr>

  </table>
</form>

Я хочу перенаправить на сервлет Create, когда пользователь нажимает на кнопку create профиль. Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Вам необходимо выбрать действие, основанное на нажатой кнопке. Вы можете сделать это, используя JavaScript. Ниже приведен минимальный рабочий пример, который вы можете расширить согласно вашему требованию:

HTML

<!DOCTYPE html>
<html>
    <head>
    <meta charset="UTF-8">
    <script>
        function check(form, button){
            if(button.id=='login'){
                form.action="Login";
            }else if(button.id=='create'){
                form.action="Create";
            }
            form.submit();
        }
    </script>
    <title>Insert title here</title>
    </head>
    <body>
        <form name="loginForm" method="post">
            <table width="20%" bgcolor="0099CC" align="center">
                <tr>
                    <td colspan=2>
                        <center>
                            <font size=4><b>HTML Login Page</b></font>
                        </center>
                    </td>
                </tr>
                <tr>
                    <td>Username:</td>
                    <td><input type="text" size=25 name="username"></td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td><input type="Password" size=25 name="password"></td>
                </tr>
                <tr>
                    <td><input type="button" id="login" onclick="check(this.form,this)"
                        value="Login"></td>
                </tr>
                <tr>
                    <td><input type="button" id="create" onclick="check(this.form,this)"
                        value="Create profile"></td>
                </tr>

            </table>
        </form>
    </body>
</html>

Login. java

package servlets;

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;

@WebServlet("/Login")
public class Login extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("Login");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}

Создать. java

package servlets;

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;

@WebServlet("/Create")
public class Create extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("Create");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}
0 голосов
/ 07 февраля 2020

У вас есть одна форма, и вы хотите go для двух разных сервлетов. Вы не можете сделать это. Если вы хотите сначала войти в сервлет входа в систему, а затем перейти к созданию сервлета. Вы можете сделать это с помощью requestDispatcher или httpServletresponse.sendRedirect ()

RequestDispatcher rd=request.getRequestDispatcher("servlet Name")
rd.forward(request, response);

или

response.sendRedirect("/url");

Или, если вы вообще не хотите go входить в сервлет и напрямую хотите go для создания, затем используйте две формы, одну для вашего логина, а другую для вашего профиля. <form name="loginForm" method="post" action="Create"> <tr> <td><input type="submit" onclick="return check(this.form)" value="Create profile"></td> </tr>

...