Read web.xml from a non-servlet class

Hi all, I need to read the web.xml file fron a standard class in a web project.
I know how to do it from a servlet or a jsp page, but is it possible to do from a non-servlet class?
Thank you,
Gabriele

It's a XML file. So best approach would be to use some Java-XML API to parse the XML file into useable nodes. E.g. JAXP, DOM4J, JXPath, etc.

Similar Messages

  • Read web.xml from a webservice method

    Hi,
    How can i read web.xml parameters inside a webservice method

    Huh?
    What is the use case for that? A web service method may need parameters, but you should not read them from the web.xml file. Instead you can use a method in a bead which reads the parameters and pass them to the web service method.
    Timo

  • Retrieve ServletContext from non-servlet class

    A servlet calls a method which is located in another class which is not a servlet. Within this method of the non-servlet class, i need to access the ServletContext of the servlet that has called the method. What i am currently doing is simply passing the ServletContext as a parameter to the method.
    I would like to avoid passing the ServletContext all the time, so i'm wondering if it's possible, from the non-servlet class, to retrieve the ServletContext of the servlet which has called the method of the non-servlet class.

    Thanks J-Fine, that's a smart suggestion. BTW in the meantime i figured out that passing the ServletContext is not that bad idea, after all it reflects the structure of the app. However if i'll change my mind again i'll do like you suggested.

  • Is there any way to prevent web.xml from any change like java class?

    hi all,
    Is there any way to prevent web.xml from any change after making EAR(WAR)?
    One can easily make a change in web.xml and redeploy the application to get the result. Now we want to restrict the web.xml as java class for any change after making EAR(or WAR).
    Could some one help me to do this?
    thanks,
    dinesh

    hi,
    Not at development level. We want it after deploying the application on server .
    We want to create it (web.xml) at tomcat startup (or in any other web/app server ) before loading any context.
    Is there any way to run a simple java class(not servlet) on tomcat startup(before initializing the contexts)?
    Message was edited by:
    DP_java
    Message was edited by:
    DP_java

  • Non-servlet class in servlet program

    hi,
    I declare a non-servlet class which is defined by myself in a servlet class. I passed the complie but got an runtime error said NoClassDefFoundError. Does anyone can help me? Thanks.
    The following is my code.
    //get the search string from web form
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.net.*;
    import java.util.*;
    public class SearchEngines extends HttpServlet {
    public void doGet(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {   
    String searchString = (String) request.getParameter("searchString");
         String searchType = (String) request.getParameter("searchType");
         Date date = new java.util.Date();
         response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Vector doc_retrieved = new Vector();
    BooleanSearch bs = new BooleanSearch();
    doc_retrieved=bs.beginSearch(searchString, searchType);
    out.println("<HTML><HEAD><TITLE>Hello Client!</TITLE>" +
                   "</HEAD><BODY>Hello Client! " + doc_retrieved.size() + " documents have been found.</BODY></HTML>");
    out.close();
    response.sendError(response.SC_NOT_FOUND,
    "No recognized search engine specified.");
    public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    // a search engine implements the boolean search
    import java.io.*;
    import java.util.*;
    import au.com.pharos.gdbm.GdbmFile;
    import au.com.pharos.gdbm.GdbmException;
    import au.com.pharos.packing.StringPacking;
    import IRUtilities.Porter;
    public class BooleanSearch{
         BooleanSearch(){;}
         public Vector beginSearch(String searchString, String searchType){
              Vector query_vector = queryVector(searchString);
              Vector doc_retrieved = new Vector();
              if (searchType.equals("AND"))
                   doc_retrieved = andSearch(query_vector);
              else
                   doc_retrieved = orSearch(query_vector);
              return doc_retrieved;
         private Vector queryVector(String query){
         Vector query_vector = new Vector();
              try{
                   GdbmFile dbTerm = new GdbmFile("Term.gdbm", GdbmFile.READER);
              dbTerm.setKeyPacking(new StringPacking());
              dbTerm.setValuePacking(new StringPacking());
              query = query.toLowerCase();
              StringTokenizer st = new StringTokenizer(query);
              String word = "";
              String term_id = "";
              while (st.hasMoreTokens()){
                   word = st.nextToken();
                   if (!search(word)){
                        word = Stemming(word);
                        if (dbTerm.exists(word)){
                   //          System.out.println(word);
                             term_id = (String) dbTerm.fetch(word);
                             query_vector.add(term_id);
              catch(GdbmException e){
                   System.out.println(e.getMessage());
              return query_vector;
         private Vector orSearch(Vector query_vector){
              Vector doc_retrieved = new Vector();
              try{
                   GdbmFile dbVector = new GdbmFile("Vector.gdbm", GdbmFile.READER);
                   dbVector.setKeyPacking(new StringPacking());
                   dbVector.setValuePacking(new StringPacking());
                   int doc_num = dbVector.size();
                   String doc_id = "";
                   String temp = "";
                   for (int i = 1; i <= doc_num; i++){
                        boolean found = false;
                        doc_id = String.valueOf(i);
                        temp = (String) dbVector.fetch(doc_id);
                        StringTokenizer st = new StringTokenizer(temp);
                        while (st.hasMoreTokens() && !found){
                             temp = st.nextToken();
                             StringTokenizer st1 = new StringTokenizer(temp, ",");
                             String term = st1.nextToken();
                             if (query_vector.contains(term)){
                                  doc_retrieved.add(doc_id);
                                  found = true;
              catch(GdbmException e){
                   System.out.println(e.getMessage());
              return doc_retrieved;
         private Vector andSearch(Vector query_vector){
              Vector doc_retrieved = new Vector();
              try{
                   GdbmFile dbVector = new GdbmFile("Vector.gdbm", GdbmFile.READER);
                   dbVector.setKeyPacking(new StringPacking());
                   dbVector.setValuePacking(new StringPacking());
                   int doc_num = dbVector.size();
                   String doc_id = "";
                   String temp = "";
                   for (int i = 1; i <= doc_num; i++){
                        Vector doc_vector = new Vector();
                        boolean found = true;
                        doc_id = String.valueOf(i);
                        temp = (String) dbVector.fetch(doc_id);
                        StringTokenizer st = new StringTokenizer(temp);
                        while (st.hasMoreTokens()){
                             temp = st.nextToken();
                             StringTokenizer st1 = new StringTokenizer(temp, ",");
                             String term = st1.nextToken();
                             doc_vector.add(term);
                        for (int j = 0; j < query_vector.size(); j++){
                             temp = (String) query_vector.get(j);
                             if (doc_vector.contains(temp))
                                  found = found & true;
                             else
                                  found = false;
                        if (found)
                             doc_retrieved.add(doc_id);
              catch(GdbmException e){
                   System.out.println(e.getMessage());
              return doc_retrieved;
         private String Stemming(String str){
              Porter st = new Porter ();
              str = st.stripAffixes(str);
              return str;          
         private boolean search(String str){
              //stop word list
              String [] stoplist ={"a","about","above","according","across","actually","adj","after","afterwards","again",
                                       "against","all","almost","alone","along","already","also","although","always","am","among",
                                       "amongst","an","and","another","any","anyhow","anyone","anything","anywhere","are",
                                       "aren't","around","as","at","away","be","became","because","become","becomes","becoming",
                                       "been","before","beforehand","begin","beginning","behind","being","below","beside",
                                       "besides","between","beyond","billion","both","but","by","can","cannot","can't",
                                       "caption","co","co.","could","couldn't","did","didn't","do","does","doesn't","don't",
                                       "down","during","each","eg","eight","eighty","either","else","elsewhere","end","ending",
                                       "enough","etc","even","ever","every","everyone","everything","everywhere","except",
                                       "few","fifty","first","five","for","former","formerly","forty","found","four","from",
                                       "further","had","has","hasn't","have","haven't","he","he'd","he'll","hence","her","here",
                                       "hereafter","hereby","herein","here's","hereupon","hers","he's","him","himself","his",
                                       "how","however","hundred","i'd","ie","if","i'll","i'm","in","inc.","indeed","instead",
                                       "into","is","isn't","it","its","it's","itself","i've","last","later","latter","latterly",
                                       "least","less","let","let's","like","likely","ltd","made","make","makes","many","maybe",
                                       "me","meantime","meanwhile","might","million","miss","more","moreover","most","mostly",
                                       "mr","mrs","much","must","my","myself","namely","neither","never","nevertheless","next",
                                       "nine","ninety","no","nobody","none","nonetheless","noone","nor","not","nothing","now",
                                       "nowhere","of","off","often","on","once","one","one's","only","onto","or","other","others",
                                       "otherwise","our","ours","ourselves","out","over","overall","own","per","perhaps","pm",
                                       "rather","recent","recently","same","seem","seemed","seeming","seems","seven","seventy",
                                       "several","she","she'd","she'll","she's","should","shouldn't","since","six","sixty",
                                       "so","some","somehow","someone","sometime","sometimes","somewhere","still","stop",
                                       "such","taking","ten","than","that","that'll","that's","that've","the","their","them",
                                       "themselves","then","thence","there","thereafter","thereby","there'd","therefore",
                                       "therein","there'll","there're","there's","thereupon","there've","these","they","they'd",
                                       "they'll","they're","they've","thirty","this","those","though","thousand","three","through",
                                       "throughout","thru","thus","to","together","too","toward","towards","trillion","twenty",
                                       "two","under","unless","unlike","unlikely","until","up","upon","us","used","using",
                                       "very","via","was","wasn't","we","we'd","well","we'll","were","we're","weren't","we've",
                                       "what","whatever","what'll","what's","what've","when","whence","whenever","where",
                                       "whereafter","whereas","whereby","wherein","where's","whereupon","wherever","whether",
                                       "which","while","whither","who","who'd","whoever","whole","who'll","whom","whomever",
                                       "who's","whose","why","will","with","within","without","won't","would","wouldn't",
                                       "yes","yet","you","you'd","you'll","your","you're","yours","yourself","you've"};
              int i = 0;
              int j = stoplist.length;
              int mid = 0;
              boolean found = false;
              while (i < j && !found){
                   mid = (i + j)/2;
                   if (str.compareTo(stoplist[mid]) == 0)
                        found = true;
                   else
                        if (str.compareTo(stoplist[mid]) < 0)
                             j = mid;
                        else
                             i = mid + 1;
              return found;
         }

    please show us the full error message.
    it sounds like a classpath problem...

  • Is there any way to prevent web.xml from any change ?

    hi all,
    we have a filter in web.xml. Now we want to prevent it from any change in future. I mean after making a war(EAR) no one can change the filter in web.xml. if he chaged it then he will not be able to re deploy the application.Right now it is in web.xml so one can easily change it and then he can redeploy the application.
    Is there any way to prevent web.xml from any change after making EAR(WAR)?
    One can easily make a change in web.xml and redeploy the application to get the result. Now we want to restrict the web.xml as java class for any change after making EAR(or WAR).
    Could some one help me to do this?
    thanks,
    dinesh

    I think you could use some third party software to lock the folder like FolderLock, just make sure others ppl cannot access your file should be fined.
    This is my stupid solution only,cheers.

  • Add non-servlet class to Tomcat

    Hi,
    does anyone know, what I have to do, to be able
    to use a simple non-servlet class file in my
    jsp-pages.
    e.g.
    MyClass.class
    In my jsp page:
    <%
    MyClass m = new MyClass( );
    %>
    I was told that I simply have to put it in the
    web-inf/classes directory, but that doesn't seem
    to work ...
    Any help would be appreciated! Thanx. chris

    You need to use the "import" statement or else use the full class name. Also, some servers don't handle the default package well so you may want to try placing the class in a package.
    e.g. if class is mypackage.MyClass, it is placed in web-inf/classes/mypackage/MyClass.class
    In the JSP, code:
    <%@ page import="mypackage.MyClass" %>
    <%
    MyClass m = new MyClass();
    %>or you could use "useBean" to avoid scriptlets.

  • When did server reads web.xml...

    hi...
    when did server reads web.xml...
    i had problem in Title part of Web Page...
    It is like this...
    Suppose my Application name is "MyApp"..and i put that in web.xml
    as..
    <context-param>
    <param-name>MyApp</param-name>
    <param-value>My Application</param-value>
    </context-param>
    i read this value and put in my title
    ..Initially,when application starts it shows "My Application" in the title..
    if server gets down due to some reason and i get error "page not found" which is obvious..
    then i started my server ...and tried to get my web page using "Refresh"
    Now it gives me First page as required but the title remains same as before "server not found"
    how to over come this problem....

    i dont know about the rest but if this helps your web.xml file is read everytime your servlet is created, and only once. If your servers crashes and you restart it, it is not correct to refresh the page because it may needs session parameters or sth else you created in and you request it from previous pages. since the server goes down all variables, instances and the rest are gone.

  • Access a mc or textfeild from a non document class.

    Hey all.
    This use to be simple in as2, but seems to allude me from as3.  It used to be simple to access an object you put on the stage like a mc or dynamic text field by simply using _root.instanceName ect.  Now I see references to making references to the Stage and such like:
    private var stage:Stage;
    stage = stageRef;
    and I am still confused.
    What I have going on is, I have placed a movieclip on the stage in Flash and gave it an instance name of Cell_mc.
    I have a cusom class that extends MovieClip with the following imports
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    This Class is tied to a set of MovieClips in my Library.
    I have a listener: this.addEventListener(MouseEvent.MOUSE_DOWN,pickUp);
    And a function:
    private function pickUp(event:MouseEvent):void
                      this.startDrag();
                      _interval = new Timer(100);
                      _interval.addEventListener(TimerEvent.TIMER,onInterval);
                      _interval.start();
    And
    private function onInterval(event:TimerEvent):void
                      //Set up hit test
                      this.hitArea(Cell_mc)
                            trace("hit");
    I get the following error whenever I try to access an object I placed on the stage from anywhere other than the document class:
    1120: Access of undefined property Cell_mc.
    How do I access the cell_mc that is already on the stage from this non-document class?
    Thanks guys.

    try:
    private var stage:Stage;
    stage = stageRef;
    and I am still confused.
    What I have going on is, I have placed a movieclip on the stage in Flash and gave it an instance name of Cell_mc.
    I have a cusom class that extends MovieClip with the following imports
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    This Class is tied to a set of MovieClips in my Library.
    I have a listener: this.addEventListener(MouseEvent.MOUSE_DOWN,pickUp);
    And a function:
    private function pickUp(event:MouseEvent):void
                      this.startDrag();
                      _interval = new Timer(100);
                      _interval.addEventListener(TimerEvent.TIMER,onInterval);
                      _interval.start();
    And
    private function onInterval(event:TimerEvent):void
                      //Set up hit test
                      this.hitArea(MovieClip(root).Cell_mc)
                            trace("hit");
    I get the following error whenever I try to access an object I placed on the stage from anywhere other than the document class:
    1120: Access of undefined property Cell_mc.
    How do I access the cell_mc that is already on the stage from this non-document class?
    Thanks guys.

  • How to read an XML from a servlet?

    Hi,
    I'm just starting programming and now I have a problem I can't solve. I hope someone can help me.</p>
    On the client side I have a xml report and a script wich sends to the server the information I've got from the report. In this case, the 'Poliza' value.
    On the server-side I have a servlet. I try to get the parameters (from the URL or from the XML), but I don't have any response on the client side. I'm sure I'm doing something wrong but I can't find the solution for solving it.
    I suppose there are two ways of solving the problem.
    - Make an http connetion and send just the parametes on the URL? Does anyone know how to make it?
    - Reading the XML on the servlet and extract the parameters the script sent. Does anyone know how to read it?
    Thank you in advance
    I attach part of the code.
    CLIENT SIDE
    <report....>
    <field sortid="0" id="Poliza" inputtype="textbox" label="Poliza" rows="1" wide="false" required="false"/>
    </report>
    <script name="ValidacionOnlineValidation1" script="if (0 == 0){
    var szURL="http://URLServer/vonline/vonline?Poliza="+Poliza.value;
    var szUserAgent = "JoP-XML_Posting_v1.0";
    var m_XML;
    /* In the line below, construct a XML-document that contains all the information you need to send to the server*/
    var szXML = "<?xml version=\"1.0\"?><data><objects><object name=\"Poliza\" value=\"123456789\"/></objects></data>";
    /* Create an instance of the MS XML Document Object Model Parser*/
    m_XML= new ActiveXObject("Microsoft.XMLDOM");
    m_XML.validateOnParse=true;                                                                                                         
    var bLoadResult = m_XML.loadXML(szXML);
    if (bLoadResult==true) {
      /*Instance of the transport object, method,...*/
      var m_HttpReq = new ActiveXObject("Pocket.HTTP");
      m_HttpReq.method = "GET";
      m_HttpReq.Headers.create("Content-Type", "text/xml");
      m_HttpReq.Headers.find ("User-Agent").Value = szUserAgent;
      m_HttpReq.timeout = 150000;
      /*Do the actual post of the data*/
      var m_HttpResponse = m_HttpReq.GetResponse(szURL,m_XML.xml);
      if (m_HttpResponse.statusCode==200) {...}
    SERVER SIDE
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
         String Error="";
         String MSG = "";
         response.setContentType("text/html");
         PrintWriter out1 = response.getWriter();
         Enumeration arrayparametros = request.getParameterNames();
         for (;arrayparametros.hasMoreElements();){
              String parametro = (String)arrayparametros.nextElement();
              String valorparametro = request.getParameter(parametro);
              if (parametro.equals("Poliza")){
                   vonlineLogica logica = new vonlineLogica();
                   LOGS ="on";
                   Respuesta respuesta = logica.procesarSolicitud(request,valorparametro);
                   Error = Respuesta.getError();
                   MSG = Respuesta.getMensaje();
              else{          
                   Error = parametro; MSG = valorparametro;
                   String[] values = request.getParameterValues(parametro);
         out1.println("Result: " + Error + " / " + MSG);
         out1.close();                    
    }

    Thanks by your help Shanu.
    Nevertheless, finally I tryed the easiest way (pass the parameter with 'GET'). Moreover I found why my code wasn't working. It was a fool thing. I though PDA connect throught a proxy, but it wasn't true. Whatever.
    Regards.
    FSG.
    The final script on the xml-report is:
    <report type="Validacion Online" required="false" multiple="false" attachments="false" scriptref="store://this/reportdef/script[@name='ValidacionOnlineValidation1']">
         <field sortid="0" id="Poliza" inputtype="textbox" label="Poliza" rows="1" wide="false" required="false"/>
    </report>
    <script name="ValidacionOnlineValidation1" script="if (0 == 0)
    var szURL="http://URL/vonline/vonline?parameter1=";+Poliza.value;                         
    var m_HttpReq = new ActiveXObject("Pocket.HTTP");                                             m_HttpReq.timeout = 15000;
    var m_HttpResponse = m_HttpReq.GetResponse(szURL,"");
    window.alert(m_HttpResponse.string);
    if (m_HttpResponse.statusCode==200)  {....}
    else {....}

  • Accessing ServletContext from non-servlet class

    How i can get information servletcontext from a normal java class?
    I am using Tomcat.
    I have put some Strings in to the servlet context and i want to get this information from a normal java class.
    I think there was a way to do it with getServlet() but this is deprecated.

    One way to do this would be to store the info in some class of your own as a static member(arraylist/hashmap or something) and then retrieve it from your java class.
    May you can populate static field i the init() method of one of your servlet and have that servlet load on tomcat startup.

  • Obtain parent directory of WEB-INF from within a servlet

    hi to everyone!
    i have got a directory containing a WEB-INF directory (with web.xml and all the other stuff necessary). Hoy is it possible to obtain the parent directory of WEB-INF directory FROM WITHIN A SERVLET, put in lib directory?
    let's say:
    A----WEB-INF---classes
    ---lib----MyServlet.jar
    ---tlds
    ---dtds
    How can I get A from within MyServlet.jar? Please help. Thank's a lot...
    Wendigo

    getServletContext().getRealPath("WEB-INF")

  • Access my web.xml data source via a class

    Hi - I've gone ahead and set up a datasource in my web.xml according to the steps provided here by the good folks at Netbeans. I know my db works and my data source is set up correctly because I'm able to get results back from something using the following bits in a jsp:
    <sql:query var="prodListQry" dataSource="jdbc/Goober">
        SELECT DISTINCT PRODUCT_NAME,PRODUCT_CODE FROM PRODUCTS //edited somewhat
    </sql:query>
    //lots of stuff
    <c:forEach var="prodListQry" items="${prodListQry.rows}">
    <option value="${prodListQry.PRODUCT_NAME}"     
           >${prodListQry.PRODUCT_NAME}${prodListQry.PRODUCT_CODE}</option>
    </c:forEach>That's all well and good, but I don't seem to be bright enough to extrapolate how to use this same resource (if I can) from within a class (ie NOT a jsp).
    I'm left with duplicate code like the following, which we all know is bad...
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         String username = "";
         String password = "";
         con = DriverManager.getConnection("jdbc:odbc:Goobir",username,password);
    //...Can anyone point me in the right direction?

    Sounds promising.... I'm testing it out as a scriptlet within a jsp before I put it in a class, but it seems like I need to import something...
    "Generated servlet error cannot find symbol
    symbol : class Context"
    My complete jsp is as follows:
    <%@ page import="javax.servlet.*" %>
    <%@ page import="javax.servlet.http.*" %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
    <%
    Context initContext = new InitialContext();
    DataSource dataSource = (DataSource) initContext.lookup("jdbc/Goober");
    Connection connection = dataSource.getConnection();
        %>
        </body>
    </html>

  • Configure web.xml in tomcat for sub class folders

    Hi Guys,
    I am using a tomcat server. I have a package file and have created a dir in webapps called "testApp". In the classes folder, I have another folder called "CheckServlets" and within this I have 2 servlets. How can I configure my web.xml properties to get the servlets to load in a browser. I have tried the following but it doesnt work:
    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>/CheckServlets/HelloServlet/</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/hello/test/</url-pattern>
    </servlet-mapping>
    So I try http://localhost:8080/testApp/hello/test but that doesnt work.

    I presume your servlet is in a package called CheckServlets?
    ie it starts something like
    package CheckServlets
    public class HelloServlet extends HttpServlet {
    }Remove the / signs from the servlet-class. This attribute should be a fully qualified class name. Like java.lang.String, or com.mypackage.servlet.MyServlet
    Given the above servlet in a package, it should be
    <servlet>
      <servlet-name>test</servlet-name>
      <servlet-class>CheckServlets.HelloServlet</servlet-class>
    </servlet>Cheers,
    evnafets

  • Web.xml Tomcat 5.0 Servlet problem

    Hey guys....
    The last time I used a servlet was before the new change in security in Tomcat. Ive been looking all over the net for some easy references about how they are to be mapped but no matter what I try nothing seems to work.
    My servlet is located in ROOT\Admin\WEB-INF\classes\colt and is called AddOLO.class
    My web.xml file is located in ROOT\Admin\WEB-INF and contains the following code:
    <servlet>
    <servlet-name>AddOLO</servlet-name>
    <servlet-class>colt.AddOLO</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>AddOLO</servlet-name>
    <url-pattern>/Admin/add</url-pattern>
    </servlet-mapping>
    On the HTML form invoking the Servlet (addOLO.html) Im using the following small piece of code
    <form action="http://Colt/Admin/servlet/AddOLO" method="post" align="centre">
    The server is operating on Port 80.
    All I seem to be getting is a 404 Error Saying The requested resource (/Admin/servlet/AddOLO) is not available. Can anyone see what is wrong here?
    Thanks in advance

    I don't think there's anything to prohibit you from deploying servlets in ROOT, but webapps that have pages and servlets that work together should be in their own context. That's what you did when you created the directory under webapps. I think it's the right way to deploy web apps. Even better, learn how to create and deploy WAR files:
    http://access1.sun.com/techarticles/simple.WAR.html
    Once you have a WAR, which is simply a JAR'd version of the directory you just created under webapps, you can simply pick it up and deploy it by dropping it into the webapps directory of any Tomcat server. Tomcat will unpack it for you. - MOD

Maybe you are looking for