Java - Servlet 404 error
Solution 1
Your code does work for me in tomcat 7 and eclipse. Perhaps your index.html is not the same as the one your are posting because it's aimnig at Sample/welcome instead of Sample/Sample.
Tips:
- Make sure your index.html published version is the same as the one you have in your code. Modify the content and make sure it's publishing properly.
- Load http://localhost:8080/Sample/Sample?name=Random directly in your browser to see that the servlet is working propertly.
- Double click on Tomcat7 on your servers. Go to your Server path. e.g. C:\Java\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\Sample\WEB-INF\classes (your Sample class should be there) double check if you have permissions in those folders.
- Export your project as a WAR and deploy it directly in your tomcat without eclipse.
- Clean/Build your project
- On your Package Explorer under Servers/server.xml a you should have a declared context e.g.
<Context docBase="Sample" path="/Sample" reloadable="false" source="org.eclipse.jst.jee.server:Sample"/></Host>
If you don't double check permisions in those folders. Add your tomcat7 server from the start again.
Solution 2
Try this and you don't need to write the XML file for any servlet ;)
Just add the annotation @WebServlet("/urlpattern")
and call this URL-pattern inside the JSP from <form action="urlpattern">
Only if you work on Eclipse.
@WebServlet("/Sample")
public class Sample extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
String name = req.getParameter("name"); //will return value
pw.println("Welcome "+name);
pw.close();
}}
Hope it helps.
GeekDroid
Updated on June 05, 2022Comments
-
GeekDroid almost 2 years
I am a newbie in servlet programming.
The following is my sample servlet code
Sample.Java
public class Sample extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter pw=res.getWriter(); String name=req.getParameter("name");//will return value pw.println("Welcome "+name); pw.close(); } }
Web.xml
<web-app> <servlet> <servlet-name>sampleservlet</servlet-name> <servlet-class>Sample</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sampleservlet</servlet-name> <url-pattern>/Sample</url-pattern> </servlet-mapping> </web-app>
Index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form action="Sample" method="get"> Enter your name<input type="text" name="name"><br> <input type="submit" value="login"> </form> </body> </html>
My problem
When I right click on my project and then click
Run as -> Run on server
, I select the server, it asks me for to select a server and then I select the server to run. In the eclipse window a browser window is opened which has the address URL as http://localhost:8080/Sample/When I click on
login
it gives me an error like this,HTTP Status 404 - /Sample/welcome
type Status report
message /Sample/welcome
description The requested resource is not available.
Apache Tomcat/7.0.62
Screenshot
Why am I getting an error like this ?
Other details
Server:apache-tomcat-7.0.62 IDE: Eclipse Java EE kepler
Steps I tried to solve the problem
I tried these,
Result
I did not see the
.class
files inWEB-INF
folder.Result In this path "tomcat7\work\Catalina\localhost\your app",the
work
folder was empty.Please let me know if I need to post any more details.
Directory structure from IDE
-
CocoCrisp almost 9 years<form action="urlpattern" method="post/get">
-
GeekDroid almost 9 yearsI have changed
<form action="Sample" method="get">
to<form action="Sample/Sample]" method="get">
, I am getting the above same error. Please let me know if I am doing something wrong. -
GeekDroid almost 9 yearsI tried your second tip. I am still getting the same error. What could be wrong ?
-
PbxMan almost 9 years@Codester Use <form action="Sample" method="get"> Please, Enter your name<input type="text" name="name"><br> instead, let me know if you see the "Please, Enter..." I think the server is not refreshing your changes properly.
-
GeekDroid almost 9 years
<html> <body> <form action="Sample" method="get"> Please, Enter your name<input type="text" name="name"><br> <input type="submit" value="login"> </form> </body> </html>
Still I am getting the same error.