如何从JSP中的scriptlet向servlet发送请求
这是一个简单的问题,但它让我卡住了。我希望从JSP中执行servlet,因此我尝试了以下方法:如何从JSP中的scriptlet向servlet发送请求,jsp,servlets,scriptlet,Jsp,Servlets,Scriptlet,这是一个简单的问题,但它让我卡住了。我希望从JSP中执行servlet,因此我尝试了以下方法: <% //Fetch server name port from request //Fetch email_addr from DB request * * * //Forward request to servlet sendWelcomeMsg
<%
//Fetch server name port from request
//Fetch email_addr from DB request
*
*
*
//Forward request to servlet sendWelcomeMsg
RequestDispatcher rd = getServletContext().getRequestDispatcher("/sendWelcomeMsg?
recipient=" + email_addr +
"&contentServerName=" + request.getServerName() +
"&contentServerPort=" + request.getServerPort());
rd.forward(request, response);
%>
上面的工作原理是,如果我手动刷新页面,页面的其余部分将被呈现,但只有在我进行刷新的情况下。所以,我的问题是
我决定在页面中添加一个表单,允许用户随意调用servlet(servlet发送一条欢迎消息,作为测试,用户可能希望发送几条)。从JSP转发到servlet是不正常的。应该是相反的。否则,servlet将完全接管响应处理。轮到JSP时,您可能会在servet日志中看到
IllegalStateException
错误
但是,您可以在JSP中包含servlet的输出(请注意,有问题的servlet可以也不应该修改响应头):
不过,这不是正常的做法。如果您打算在JSP中显示结果之前对GET请求执行业务任务,那么您需要将该任务放入servlet的doGet()
中,并将其转发给JSP。请求应该首先到达控制器,该控制器通常是一个servlet,而该servlet又会转发到视图,该视图通常是一个JSP。你可以在中找到一个例子
rd.include(request, response);