我正在尝试使用MVC模型在我的JSP文件中使用Servlet,以便在doGet和doSet的输出发生更改时能够在不刷新页面的情况下连续更新UI。
我试图在Servlet中使用一个计时器(没有用),并且我试图在JSP文件中使用一个计时器,但是它也不起作用。我认为这将有助于每2秒调用一次“ doGet”以更新运行该程序时在屏幕上看到的输出。但是输出更改的唯一时间是当我手动刷新网站时。我希望这个简单的程序能够在字符串“ blue”和“ red”之间进行更改并查看运行该程序的时间。
Servlet:
public class Servlet2 extends HttpServlet implements Servlet {
String msg = "blue";
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setAttribute("state", changeColor());
request.getRequestDispatcher("/test.jsp").forward(request, response);
}
public String changeColor(){
if(msg.equals("red"))
msg = "blue";
else msg = "red";
return msg;
}
@Override
protected void doGet(
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
还有JSP文件:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
ID: <%=(String)request.getAttribute("state")%><br>
</body>
</html>
答案 0 :(得分:1)
您已经发现,这是不可能的。
http://host/yourServlet
”将打开浏览器的连接
host
,并要求提供yourServlet
部分。doGet
),并返回从servlet代码或jsp输出的任何内容。 要实现将“红色”更改为“蓝色”,您可以使用html标头(meta http-equiv="refresh"
)/ javascript(How to reload a page using JavaScript)自动重新加载页面,也可以使用javascript询问您的页面当前值为state
(jQuery Ajax POST example with PHP)的servlet。