I've just installed "Spring Tool Suite 4" and "Apache Tomcat 10" to learn about Web Application. Following some instructions, I created a new Dynamic Web Project(named 'hello') and a new servlet(named 'HelloServlet').
HelloServlet goes like
package practice;
/**
* Servlet implementation class HelloServlet
*/
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("<h1>Hello Servlet</h1>");
}
}
When HelloServlet is run on server, it is directed to "http://localhost:8080/hello/WEB-INF/classes/practice/HelloServlet.java", not "http://localhost:8080/hello/HelloServlet" and 404 error is returned.
I found out '@WebServlet' is not automatically added when creating new servlet unlike instructoin I followed. I added @WebServlet("/HelloServlet") and then Tomcat Server returned error while starting the server.
Some additional STS and Tomcat configurations are needed?
- When I try to access "http://localhost:8080/hello/HelloServlet", it works well. I am wondering why STS doesn't automatically direct to "http://localhost:8080/hello/HelloServlet"!
CodePudding user response:
This is bug 577703, which is fixed in the upcoming March release.