Я абсолютный новичок в jsp, и мне нужно показать сообщение до и после простого вычисления. В Eclipse я сделал индекс. html в качестве главной страницы, тестовый запуск. html для запуска сервлета, сервлет TEST. java для выполнения вычислений и отображения сообщений и testmsg. jsp для отображения сообщения в параметре $ message. когда я пытаюсь запустить проект, testmsg. jsp не показывает никаких сообщений, и я также получаю сообщение об ошибке. Я пытался ответить на вопрос 1824409 , но безуспешно. Может кто-нибудь помочь мне понять, почему thetestmsg. jsp не работает, и я получаю ошибку?
спасибо
Ошибка
Show the waiting message
Computing
Show the end message
apr 28, 2020 12:14:04 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [com.prevendis.controller.TEST] in context with path [/MktPortal] threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:323)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.prevendis.controller.TEST.doGet(TEST.java:47)
at com.prevendis.controller.TEST.doPost(TEST.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:821)
apr 28, 2020 12:30:17 PM org.apache.catalina.core.StandardContext reload
INFORMAZIONI: Reloading Context with name [/MktPortal] has started
apr 28, 2020 12:30:19 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
apr 28, 2020 12:30:19 PM org.apache.catalina.core.StandardContext reload
INFORMAZIONI: Reloading Context with name [/MktPortal] is completed
index. html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Test</title>
</head>
<body>
<h1>
<p align="center">TEST</p>
</h1>
<a href="./testrun.html"> Run the test</a>
</body>
</html>
testrun. html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>test</title>
</head>
<body>
<h1>
<p align="center">TEST</p>
</h1>
Press OK button to run the test
<br>
<br>
<form method="POST" action="Test.do">
<input type="submit" value="Ok" id="button-1" />
</form>
</body>
</html>
TEST. java
package com.prevendis.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class PreVenDisElab
*/
@WebServlet(description = "Computing TEST", urlPatterns = { "/Test.do" })
public class TEST extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TEST() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Show the waiting message");
doGet(request, response,"Start computing");
System.out.println("\n\nComputing\n\n");
int result = 1+1;
System.out.println("Show the end message");
doGet(request, response,"End computing");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response, String msg) throws ServletException, IOException {
Object data = msg;
request.setAttribute("message", data);
request.getRequestDispatcher("/WEB-INF/testmsg.jsp").forward(request, response);
}
}
testmsg. jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Test</title>
</head>
<body>
<h1><center>Test</center></h1>
<p>
<h2> ${message}</h2>
<br>
</p>
</body>
</html>