Подтвердить что ты не робот

Ответ сервлета на JSP

<html>
<head>
</head>
<body>
<form name="loginform" method="post" action="WelcomeServlet">
<br><br>
<table align="center"><tr><td><h2>Login Authentication</h2></td></tr></table>
<table width="300px" align="center" style="border:1px solid #000000;background-color:#efefef;">
<tr><td colspan=2></td></tr>
<tr><td colspan=2>&nbsp;</td></tr>
    <tr>
        <td><b>Login Name</b></td>
        <td><input type="text" name="username" ></td>
    </tr>
    <tr>
        <td><b>Password</b></td>
        <td><input type="password" name="password"></td>
    </tr>

    <tr>
        <td></td>
        <td><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    <tr><td colspan=2>&nbsp;</td></tr>
</table>
</form>


</body>
</html>

то этот сервлет

import java.io.*;
import java.util.*;
//import java.io.PrintWriter;
 import javax.servlet.*;
//import javax.servlet.ServletConfig;
//import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WelcomeServlet extends HttpServlet {
/* 
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
 */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* Get the value of form parameter
*/
response.setContentType("text/html");

PrintWriter out = response.getWriter();
//out.println("I am on welcome servlet...");
String username = request.getParameter("username");
String password =request.getParameter("password");

out.println("<html>");
         out.println("<head>");
         out.println("<title> A very simple servlet example</title>");
         out.println("</head>");
          out.println("<body>");
            out.println("</body>");

      if((username.equals("kiran"))&&(password.equals("kiran")))
       {

         String welcomeMessage = "Welcome "+username+" thanks for login...";
         out.println("<h1>"+welcomeMessage+"</h1>");
      request.getRequestDispatcher("/login.jsp").include(request, response);

    }else
      {
         out.println("<h1> You are not the valid user...</h1>");
    request.getRequestDispatcher("/login.jsp").include(request, response);

        }

            out.println("</html>");
            out.close();





}

public void destroy() {

}
} 

Я хочу получить ответ от сервлета, который отображается под таблицей авторизации входа в страницу jsp

4b9b3361

Ответ 1

Это не совсем правильно. Вопреки тому, что многие учебные пособия сервлетов пытаются позволить вам поверить, servlet должен не использоваться для вывода чистого HTML. Это противоречит идеологии MVC. Для этого нужно использовать JSP.

В этом конкретном случае вы должны позволить сервлету установить сообщение, которое вы хотите отобразить в JSP в области запроса, а затем перенаправить запрос/ответ на JSP. В JSP вы можете использовать JSTL для динамического управления выходом HTML и использовать EL ${} для доступа и отображения сообщения.

Вот пример запуска того, как должен выглядеть сервлет:

public class WelcomeServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String message = null;

        if ((username.equals("kiran")) && (password.equals("kiran"))) {
            message = "Welcome "+username+" thanks for login...";
        } else {
            message = "You are not the valid user...";
        }

        request.setAttribute("message", message);
        request.getRequestDispatcher("/login.jsp").forward(request, response);
    }

} 

и отредактируйте свой login.jsp, чтобы добавить следующее:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

...

<c:if test="${not empty message}">
    <h1>${message}</h1>
</c:if>

Объявление taglib должно быть в верхней части. <c:if> можно просто разместить там, где вы хотите отобразить <h1>.

См. также: