YK-47
YK-47

Reputation: 198

Simple Servlet deploy on Tomcat eclipse

I'm following Head First Java.

I created a simple servlet as they instructed but they did not write how to deploy it.

I'm trying to deploy it on Tomcat 7 and i have set it up via eclipse.

However im getting a 404 page error.

i created a web.xml i also placed the class files in WEB-INF/classes.

Here is the code.

package org.code;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class KathyServlet extends HttpServlet { 

public void doGet (HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException  {
 PrintWriter out;
 String title = "PhraseOMatic has generated the following phrase.";
     response.setContentType("text/html");
 out = response.getWriter();

    out.println("<HTML><HEAD><TITLE>");
out.println("PhraseOmatic");
out.println("</TITLE></HEAD><BODY>");
out.println("<H1>" + title + "</H1>");
out.println("<P>" + PhraseOMatic2.makePhrase());
    out.println("<P><a href=\"KathyServlet\">make another phrase</a></p>");
out.println("</BODY></HTML>");

out.close();
}
}

other java code file:

package org.code;

public class PhraseOMatic2 {
public static String makePhrase() {

 // make three sets of words to choose from
String[] wordListOne = {"24/7","multi-Tier","30,000 foot","B-to-B","win-win","front-     end", "web-based","pervasive", "smart", "six-sigma","critical-path", "dynamic"};

String[] wordListTwo = {"empowered", "sticky", "valued-added", "oriented", "centric", "distributed", "clustered", "branded","outside-the-box", "positioned", "networked", "focused", "leveraged", "aligned", "targeted", "shared", "cooperative", "accelerated"};

String[] wordListThree = {"process", "tipping point", "solution", "architecture", "core competency", "strategy", "mindshare", "portal", "space", "vision", "paradigm", "mission"};

// find out how many words are in each list
int oneLength = wordListOne.length;
int twoLength = wordListTwo.length;
int threeLength = wordListThree.length;

// generate three random numbers, to pull random words from each list
int rand1 = (int) (Math.random() * oneLength);
int rand2 = (int) (Math.random() * twoLength);
int rand3 = (int) (Math.random() * threeLength);

// now build a phrase
String phrase = wordListOne[rand1] + " " + wordListTwo[rand2] + " " +    wordListThree[rand3];

// now return it
return ("What we need is a " + phrase);
} 
}   

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>HFJse</display-name>
<servlet>
<servlet-name>kathyServlet</servlet-name>
<servlet-class>org.yasin.KathyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>KathyServlet</servlet-name>
<url-pattern>/snoop/*</url-pattern>
</servlet-mapping>
</web-app>

Upvotes: 0

Views: 1629

Answers (2)

jenaiz
jenaiz

Reputation: 547

If that code is right you web.xml is bad. Your are defining a servlet-class using:

org.yasin.KathyServlet

and your Servlet is:

org.code.KathyServlet

The Servlet that you are using in your web.xml need to point to the correct package and Sevlet name.

You should see a ClassNotFound in your tomcat log associated with you 404 error.

Upvotes: 0

JB Nizet
JB Nizet

Reputation: 691635

our servlet calss is in the package org.code, but the class name you set in the web.xml is org.yasin.KathyServlet.

Moreover, you gave the name kathyServlet to your servlet in the web.xml, but your mapping uses the name KathyServlet. Servlet names are case-sensitive.

Upvotes: 3

Related Questions