Http status 404 /the requested resource is not available

I am new to java, I just tried to read initialization parameters from Deployment Descriptor file (web.xml), But got above error?

My web.xml and java file coding coding in snap attached.

My directrory structure is

c:\....tomcat\webapps\dd\web-inf\classes

No error in java class file.

enter image description here

Java file code which is compiled successfully

import java.io.*; 
import java.net.*; 
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet2 extends HttpServlet { 

    String fileName; 
    public void init(ServletConfig config) throws ServletException {
        super.init(config); 
        fileName = config.getInitParameter("logfilename"); 
    } 

    protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { 
         processRequest(request, response); 
    } 

    protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { 
         processRequest(request, response); 
    } 

    protected void processRequest(HttpServletRequest request,HttpServletResponse 
response)throws ServletException, IOException { 
          PrintWriter out = response.getWriter(); 
          out.println(fileName); 
          out.close(); 
    } 
}

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app> 
    <servlet> 
    <servlet-name>MyServlet2</servlet-name> 
    <servlet-class>MyServlet2</servlet-class>
        <init-param>
            <param-name>logfilename</param-name>
            <param-value>value1</param-value> 
        </init-param>
    </servlet> 
    <servlet-mapping> 
        <servlet-name>MyServlet2</servlet-name> 
        <url-pattern>/mc11</url-pattern> 
    </servlet-mapping> 
</web-app> 

Other detail of my directory and error page i think that my web.xml not working enter image description here

Jon Skeet
people
quotationmark

There are two problems I can see at the moment...

Servlet init parameters

You currently have:

//defining param1 param1 value1

That's not how you define the parameter. You should specify a param-name element containing the name of the parameter, rather than using the name of the parameter as an XML element name.

<init-param>
   <param-name>logfilename</param-name>
   <param-value>...</param-value>
</init-param>

Also note that // isn't how you write comments in XML - if you wanted a comment, you should have:

<!-- Define the first parameter -->
<init-param>
   <param-name>logfilename</param-name>
   <param-value>...</param-value>
</init-param>

(The param-value element should have been a hint - if you could really just specify your own element, I'd have expected <logfilename>value in here</logfilename> - having the name specified as an element name, but the value specified with a fixed element name of param-value would have been an odd scheme.)

Servlet mapping

Currently your mapping is:

<servlet-name> FormServlet</servlet-name>
    <url-pattern>/ss/</url-pattern>
</servlet-mapping>

I suspect that mapping won't match http://localhost:8080/dd/ss/s.html because you don't have any wildcards in there - it you may well find that it matches exactly http://localhost:8080/dd/ss/. It's not clear where the dd part comes in, but I assume that's a separate part of your configuration. You should try:

<!-- I would recommend removing the space from the servlet
   - name *everywhere*. -->
<servlet-name>FormServlet</servlet-name>
    <url-pattern>/ss/*</url-pattern>
</servlet-mapping>

If that doesn't work for http://localhost:8080/dd/ss/s.html, see whether it maps http://localhost:8080/ss/s.html - it may be that your engine isn't configured the way you expect elsewhere.

people

See more on this question at Stackoverflow