Java - Servlet 404 error [duplicate]

匿名 (未验证) 提交于 2019-12-03 08:52:47

问题:

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,

  1. Getting HTTP Status 404 error when trying to run servlet

Result

I did not see the .class files in WEB-INF folder.

  1. Tomcat giving 404 error with servlets

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

回答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.



回答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.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!