Mapping logical names to a servlet class file

Hello sir,
I am a student, new to jsp servlets and was going through the book Head first jsp servlets , where it told that in a html if there is a form saying <form method="post" action="SelectBeer.do" then the browser prepends "/beer-v1" and makes the final url something like "/beer-v1/SelectBeer.do" because that's where the client request is coming from. i.e. the "SelectBeer.do" in the html is relative to the url of the page it is on.
Now I want to ask that say if the file structure in tomcat is something like
WEB-CONTENT
|____________________________JSP
|..................................................|________________________PAGE1.JSP
|..................................................|________________________PAGE2.JSP
|
|____________________________HTML
|..................................................|________________________PAGE3.HTML
|..................................................|________________________PAGE4.HTML
|
|____________________________CLASSES
|.................................................|________________________SERVLET1.CLASS
And if a html form is on page "PAGE1.JSP" AND WANTS TO GO TO "PAGE3.JSP" or to "SERVLET1.CLASS"Then what relative url should be given in form action method.
Thanks in advance

You can use '..' to go 'up' a level in the structure.
So if you are currently on page http://localhost:8080/myApp/JSP/PAGE1.JSP
page2 --> page2.jsp
page3 --> ../html/page3.html or /myApp/html/page3.html
servlets are different because they are not directly accessed by their location on disk, but rather by url mappings in the web.xml file.
One other trick to watch out for in this is that the name of the web application - the 'context', also forms part of the url (in my example I called it myApp).
You need to include the context path in absolute urls from the client (for loading scripts/images etc)
You do NOT use the context path in absolute urls from the server - ie those used with the RequestDispatcher, because the RequestDispatcher treats the context as the root, while your web browser has a different idea.
So you would use <jsp:forward page="/jsp/page1.jsp"/> to forward to a page, but link for a link to it from another page.
cheers,
evnafets

Similar Messages

  • Newbie Question - Accessing Servlet Class file

    im trying to run my servlet class file but am not able to do so. I've compiled my servlet and the class file generated is under build...web-inf/classes as it should be. Now how i do access this through the browser , isnt it just not localhost:29080/MyWebApp/HelloServlet. Thanks
    -newbie

    Hi There,
    Are you using Java Studio Creator to develop your application? If so this tutorial will help you get started.
    http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/jscintro.html
    Please also visit the tutorials page at
    http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/index.jsp
    Thanks
    K

  • Problem for retriveing servlet class file (error in DD) I think so

    hi to all ,
    my deployment descriptor is here ....
    I tried to access servlet ... I got the response is like that
    The requested Resource is not available
    why its happening ?
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <welcome-file-list>
         <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <listener>
         <listener-class>CallMonitor.MyListener</listener-class>
    </listener>
    <servlet>
         <servlet-name>LoginAction</servlet-name>
         <servlet-class>LoginAction</servlet-class>
    </servlet>
    <servlet>
         <servlet-name>InsertData</servlet-name>
         <servlet-class>InsertData</servelt-class>
    </servlet>
    <servlet-mapping>
         <servlet-name>LoginAction</servlet-name>
         <url-pattern>/LoginAction</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
         <servlet-name>InsertData</servlet-name>
         <url-pattern>/InsertData</url-pattern>
    </servlet-mapping>
    <context-param>
         <param-name>jdbcurl</param-name>
         <param-value>jdbc:mysql://localhost:3306/test</param-value>
    </context-param>
    </web-app>But i remove the code from it , i can access LoginAction Servlet..
    <servlet>
         <servlet-name>InsertData</servlet-name>
         <servlet-class>InsertData</servelt-class>
    </servlet>
    <servlet-mapping>
         <servlet-name>InsertData</servlet-name>
         <url-pattern>/InsertData</url-pattern>
    </servlet-mapping>
    In Tomcat manager i found the applicaton is not running.
    i started the application using start command...
    But i got error message
    FAIL - Application at context path /25.7 could not be started
    Message was edited by:
    kannankalli

    <servlet-class>InsertData</servelt-class>Closing element for <servlet-class> is wrong.
    Before posting for any help check following stuff
    - Whether deployment descriptor is well-formed
    - Whether it is valid i.e. all elements are properly placed

  • Where to store the servlet class files ?

    If, I store the class files for servlets under WEB-INF/classes folder,
              i get file not found exception while using WL 6.1 sp2. But, if i store
              the class file under DefaultWebApp folder, it works fine.
              Any help about where to store the class files for servlets would be
              great help.
              Thanks.
              hiren
              

    Copy Servlet in DefaultWebApp/Web-Inf/classes directory.
              Configure Servlet in web.xml deployment descriptor.
              <servlet>
              <servlet-name></servlet-name>
              <servlet-class></servlet-class>
              </servlet>
              <servlet>
              <servlet-name></servlet-name>
              <servlet-class></servlet-class>
              </servlet>
              <servlet-mapping>
              <servlet-name></servlet-name>
              <url-pattern></url-pattern>
              </servlet-mapping>
              hiren dossani wrote:
              > If, I store the class files for servlets under WEB-INF/classes folder,
              > i get file not found exception while using WL 6.1 sp2. But, if i store
              > the class file under DefaultWebApp folder, it works fine.
              > Any help about where to store the class files for servlets would be
              > great help.
              >
              > Thanks.
              >
              > --
              > hiren
              

  • DM_Mappings.csv which maps logical names to relational names is blank

    Hi,
    I have created a data model (both logical and relational) using OSDM 3.1.4.710. I am trying to generate a csv report (go to File -> Export -> To CSV option in OSDM) which maps the logical names to physical names (physical names are abbreviated as I am using a glossary for abbreviations). This information was present in the csv named DM_Mappings.csv in version 3.0.0-665 of OSDM which maps the logical component of the model to the physical component. However when I use OSDM 3.1.1-703 or OSDM 3.1.1-704 or OSDM 3.1.4.710, the csv file DM_Mappings.csv is generated but its blank. I am not sure if there is some hidden option somewhere which will help me generate this mapping information which was a default option in OSDM 3.0.0-665. I would appreciate it if someone could help me in getting this logical to physical mapping in csv format using OSDM.
    Let me know if you need any other information.
    Regards,
    Ashok

    Hi Ashok,
    thanks for reporting the problem. Fix will be available in next release.
    Philip

  • Relative path to file in servlet class file

    Hello,
    I have several classes running as a Tomcat Servlet on my server. However, I have one class that I would like to access a file on the server.
    The problem is, what path do I use? I want to use a relative path as the servlet might be moved and I don't want to recompile each time the servlet is moved. For instance, I placed the file in the servlet directory under webapps in the same level with the WEB-INF directory. However, using "../../text.txt" does not seem to access it.
    What path should I use?
    Thanks in advance.
    Chris

    This is what I have done:
         String FS = System.getProperty("file.separator");
         String ctx = getServletContext( ).getRealPath( "" ) + FS;
         URL url = new URL("file", "", ctx +   "somefile.txt");
         //Create a BufferedReader for reading the inputstream.
         BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));This gets you back to the "root", or one level above WEB-INF. Add the folder name where the file is located. As in      URL url = new URL("file", "", ctx +   "theFolder/somefile.txt");HTH,
    WalkGood

  • Mapping Logic in XI for Idoc to File

    Hi All,
    I have the scenario like this Idoc to File
    I have Quantity field inside E1EDL24(Line Item)--E1EDL43Quantity, i have to Sum up the Quantity field.
    I have used the ligic like this and works perfectly.
    Quantity--Sum-Total and the context od Quantity is set to IDOC level.
    Now the problem is, Inside the Line item(E1EDL24) Segment, we have E1EDL43 Segment and this E1EDL43 can repeats twice
    then, i have to consider only first Segment quantity value coming from E1EDL43 . I should not take the second E1EDL43 segment .
    But here in my case what is  happening is while doing the SUM function it is considering the second segment quantity also. and giving the total.
    For Example...
    -E1EDl24
    --E1EDL43
    ---Quantity -
    20
    --E1EDL43
    ---Quantity -
    30
    And second line item
    -E1EDl24
    --E1EDL43
    ---Quantity -
    10
    --E1EDL43
    ---Quantity -
    50
    In this case i shld get 20 + 10 = 30
    But iam getting 203010+50 = 110 which is not correct.
    Please help me on this
    Regards

    set the context to Idoc level
    use the UDF
    int sum=0;
    for(int i=0;i<a.length;i++)
    sum =sum + Integer.parseInt(a<i>);
    i++;
    String res = sum;
    return res;
    Do the mapping as
    Quantity----->UDF---->Total
    this  logic works if  E1EDL43 should  repeats twice

  • Jar file name Required for IApplicationPropertiesService class file

    Hi
       I am using EP6 SP15, Please let me know the jar file name for IApplicationPropertiesService.class
    Regards
    Ganesan S

    Hi,
    you should have it in your NWDS plugins directory. I have it here:
    <i>\Program Files\SAP\JDT\eclipse\plugins\com.sap.km.rfwizard\lib\bc.rf.global.service.appproperties_api.jar</i>
    Romano
    PS: you can try to find it yourself - not so hard: just search in the filesystem for XXXXXX.class including searching archives...

  • Servlet class file size limit

    hi,
    Does any one have any idea abt the max size a compiled java class can have?? My problem is my jsp is too big bcause of which my tomcat is crashing.. does anyone have any solution or work around for this?? If so pls help.

    Seen this once before. Not sure but the limitation might be on the size of a paricular method vs. the overall class size. Try putting large strings in final static Strings in the class block at the top of the .jsp so that they end up as member variables. Or split up the output into static functions. If that doesn't work split up the .jsp into more than one .jsp, and use jsp include.

  • How can I find the servlet class name from inside a ServletFilter?

    Ive implemented a servlet filter, but need to discover the class name of any servlet class that gets executed.
    Ive dug through the spec and cant seem to find any path to do this.
    Seems the methods needed to do this have been deprecated. (for security reasons?)
    Is there any way to write a ServletFilter to grab this info?
    If not, is there any other way to capture every servlet execution in the container, time its execution, and log the class name along with the execution time?
    (***WITHOUT*** requiring a classpath over ride of any container provider classes)
    Any help is much appreciated. Been banging my head against this for some time now :(

    request.getServletPath() returns the part of the URL which refers to the servlet. It isn't the classname of the servlet but it should be a reasonable surrogate. If you log that, then you could write some code which reads your web.xml and uses the servlet-mapping elements to convert it to servlet class names later.

  • Getting Package Name From Class File Without Parsing File

    I am writing an application where I need to get the package name from a class file without parsing the class file itself.
    Basically, what happens is the user chooses a class file from anywhere in the file system. I then want to use reflection to get information about that class. To do that I need the fully qualified class name. I know that the package name is part or all of the path name but I don't know for sure which part it is. I don't want to parse the class file directly for the package name in case the class file spec is changed (that way I won't have to rewrite any code).
    Does Java have any way of getting this information without doing something stupid like gradually stripping off part of the pathname and trying it?

    The ClassLoader way seems to work fine, copy a class file to "A.class" and run this:import java.io.*;
    class ClassLoaderExample {
        public static void main(String[] args) throws Exception {
            class MyClassLoader extends ClassLoader {
                public Class load() throws IOException {
                    File f = new File("A.class");
                    byte[] classData = new byte[(int) f.length()];
                    new RandomAccessFile(f, "r").readFully(classData);
                    Class loaded = defineClass(null, classData, 0, classData.length);
                    resolveClass(loaded);
                    return loaded;
            Class c = new MyClassLoader().load();
            System.out.println(c);
            System.out.println(c.newInstance());
    }

  • How to publish a servlet class to web server?

    background:
    web server: tomcat apache 4
    context path: webapp\test\
    servlet path: webapp\test\WEB-INF
    servlet name: HelloWorld.class
    i tried to placed the servlet class file to above servlet path,
    but i can't invoke the servlet by http://localhost:8080/test/HelloWorld
    what should i do in order to invoke the servlet at browser?
    Is a web.xml necessary a must to provided a mapping between request name and actual class name?

    First of all you need a *.war structure which look like this
    /app-name
    /app-name/WEB-INF/
    /app-name/WEB-INF/lib
    /app-name/WEB-INF/classes
    When you have created this structure you add your servlet (HelloWorld.class) in the classes directory (Create the package structure first).
    When this is done you need to map the servlet to a given uri which is done in the web.xml. An example is found below:
    <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>package.HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>
    Hopefully this will help :-)
    best regards
    Stig

  • (newbie) Question about replacing .class files and web.xml file

    I'm new to servlets and I have two quick questions...
    Do I absolutely need a web.xml file to define all my servlets, or can I simply place .class files into the WEB-INF directory and expect them to run?
    If my application server (for example Tomcat) is running and I replace a servlet .class file, do I need to restart the server for the new .class file to take effect?
    ...or are both of these questions specific to the application server I'm using?

    Hi,
    From an article I read:
    With Tomcat 3.x, by default servlet container was set up to allow invoking a servet through a common mapping under the /servlet/ directory.
    A servlet could be accessed by simply using an url like this one:
    http://[domain]:[port]/[context]/servlet/[servlet full qualified name].
    The mapping was set inside the web application descriptor (web.xml), located under $TOMCAT_HOME/conf.
    With Tomcat 4.x the Jakarta developers have decided to stop allowing this by default. The <servlet-mapping> tag that sets this mapping up, has been commented inside the default web application descriptor (web.xml), located under $CATALINA_HOME/conf:
    <!-- The mapping for the invoker servlet -->
    <!--
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    -->
    A developer can simply map all the servlet inside the web application descriptor of its own web application (that is highly suggested), or simply uncomment that mapping (that is highly discouraged).
    It is important to notice that the /servlet/ isn't part of Servlet 2.3 specifications so there are no guarantee that the container will support that. So, if the developer decides to uncomment that mapping, the application will loose portabiliy.
    And declangallagher, I will use caution in future :-)

  • Wrapper cannot find servlet class error

    Hi all!
    I'm receiving a mysterious error when I try to run my web ap. "Wrapper cannot find servlet class com.ruffalocody.report.ReportServlet or a class it depends on"
    I'm running it on JBoss 3.2.7, and I have another web ap, made almost identical to this one which does not display the same error/exception.
    If anyone could give me advice on what I should do to fix this, I'd very much appreciate it. :)
    Full exception message:
    javax.servlet.ServletException: Wrapper cannot find servlet class com.ruffalocody.report.ReportServlet or a class it depends on
         org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
         org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:162)
         org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
         org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
         org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
         org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
         org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         java.lang.Thread.run(Thread.java:534)
    root cause
    java.lang.ClassNotFoundException: com.ruffalocody.report.ReportServlet
         java.net.URLClassLoader$1.run(URLClassLoader.java:199)
         java.security.AccessController.doPrivileged(Native Method)
         java.net.URLClassLoader.findClass(URLClassLoader.java:187)
         java.lang.ClassLoader.loadClass(ClassLoader.java:289)
         java.lang.ClassLoader.loadClass(ClassLoader.java:235)
         org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
         org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:162)
         org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
         org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
         org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
         org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
         org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         java.lang.Thread.run(Thread.java:534)the servlet class file ReportServlet.class is located in:
    WEB-INF\classes\com\ruffalocody\report
    web.xml file:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <servlet>
            <servlet-name>RprtSrvlt</servlet-name>
            <servlet-class>com.ruffalocody.report.ReportServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>RprtSrvlt</servlet-name>
            <url-pattern>/reports</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
         <welcome-file>
                index.jsp
            </welcome-file>
        </welcome-file-list>
        <!-- Context Param -->
        <context-param>
        <param-name>crystal_image_uri</param-name>
        <param-value>crystalreportviewers10</param-value>
        </context-param>
        <!-- Context Param End -->
    </web-app>It's called from the index.jsp page w/ ulr: "reports?goTo=view"
    Servlet code (not sure if it's useful, but including just in case):
    * ReportServlet.java
    * Created on February 1, 2007, 11:04 AM
    package com.ruffalocody.report;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory;
    import com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2;
    import com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;
    import com.crystaldecisions.report.web.viewer.CrystalReportViewer;
    import com.crystaldecisions.sdk.occa.report.lib.ReportSDKExceptionBase;
    * @author aerohner
    * @version
    public class ReportServlet extends HttpServlet
        String rptLoc = "CR10_JRC_BeginHere.rpt";
        /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
         response.setContentType("text/html;charset=UTF-8");
         String goTo = request.getParameter("goTo");
         if(goTo != null && goTo.equals("view"))
             viewReport(request, response);
         }// end goTo view
         else if(goTo != null && goTo.equals("export"))
             exportReport(request, response);
         }// end go to export
         else
             RequestDispatcher view = request.getRequestDispatcher("index.jsp");
             view.forward(request,response);
        private void viewReport(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException
         IReportSource rptSrc = setUpReportSource(request);
         if (rptSrc != null)
             // create viewer
             CrystalReportViewer viewer = new CrystalReportViewer();
             try
              viewer.setReportSource(rptSrc);
              forward(request, response, viewer);
             catch(ReportSDKExceptionBase e)
              e.printStackTrace();
         }// if rptsrc not null
         else
             log("rptSrc is null");
         }// end else not null
        }// end viewReport(.)
        private void exportReport(HttpServletRequest request, HttpServletResponse response)
        }// end exportReport(.)
        private IReportSource setUpReportSource(HttpServletRequest request)
         IReportSourceFactory2 rptFact = new JPEReportSourceFactory();
         IReportSource rptSrc = null;
         try
             rptSrc = (IReportSource)
              rptFact.createReportSource(rptLoc, request.getLocale());
         }// end try
         catch (Exception e)
         return rptSrc;
        }// end setUpReportSource()
        private void forward(HttpServletRequest request,
             HttpServletResponse response, Object viewer)
             throws ServletException, IOException
         request.setAttribute("viewer", viewer);
         RequestDispatcher view = request.getRequestDispatcher("viewer.jsp");
         view.forward(request,response);
        }// end forward(...)
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
         processRequest(request, response);
        /** Handles the HTTP <code>POST</code> method.
         * @param request servlet request
         * @param response servlet response
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
         processRequest(request, response);
        /** Returns a short description of the servlet.
        public String getServletInfo()
         return "Short description";
        // </editor-fold>
    }Thanks :)

    I'm curious. Could you strip off the "java." part of the package, so both in your sourcefile as in the directory structure? It may be that the java package is not allowed, but then I wouldn't know why you didn't get a compile error...

  • 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.

Maybe you are looking for

  • Error in UM Configuration

    Hi When I click on the link "UM Configuration" under "System Administration - System Configuration" I get the following error message: Portal Runtime Error An exception occurred while processing a request for : iView : pcd:portal_content/administrato

  • My Ipod 4g will not stay charged. He charges it to show full battery

    My sons Ipod 4g will not stay charged.  He charges it to show full battery & will only work for 20 mins or so.  I have tried resetting the whole Ipod, we have tried a wall charger instead of computer charger, he has removed items off thinking they we

  • Import doesnt load all the tables

    hi, I take an export of user (abc) and try to import to other user (xyz). Except some tables all goes to the destination schema (xyz). The abc user has all its tables in one tablespace. In target database same tablespace is created and user has the u

  • Best Transpose plug in for Logic???

    Anyone know the best "transpose" plug in for Mac/Logic/?? I mean a general Transpose plug in that does the most basic job of pitching audio up and down like a sampler, in semitones - but in the arrange window of logic/protools? I dont mean any elasti

  • Headless Mac Pro getting stuck - need help with Crash Report

    I have a headless Mac Pro being used as a server. It has recently begun to have problems such as slowing down for a few minutes with apps being slow or non-reponsive. It may serve pages, but the database or FTP may not respond. When logging with VNC