Skip to main content
 首页 » 编程设计

jsp之Servlet 向 JSP 发送响应

2025年05月04日63zhoujg

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

那么这个servlet
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 页面登录身份验证表下方

请您参考如下方法:

这并不完全正确。与许多基本 servlet 教程试图让您相信的相反,servlet应该不是 用于输出纯 HTML。这与 MVC 意识形态相矛盾。那里JSP应该用于。
在这种特殊情况下,您需要让 servlet 设置您希望在请求范围内的 JSP 中显示的消息,然后将请求/响应转发到 JSP。在 JSP 中,您可以使用 JSTL动态控制 HTML 输出并使用 EL ${}访问和显示消息。
下面是 servlet 应该是什么样子的启动示例:

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> 的位置.
也可以看看:
  • Our Servlets wiki page - 包含一个包含基本验证的 Hello world。