看下用的是什么标签,如果是Struts标签的话,此处是全局跳转

解决方案 »

  1.   

    大师,快帮忙看看,下面这些链接是不是很象这个什么Struts,是用于掩藏链接地址的一种手段吗  <a href="category?category_id=FISH" onmouseover="img_on('fish')" onmouseout="img_off('fish')"><img src="/estore/images/fish.gif" border="0" name="img_fish"></a>
          <img src="/estore/images/separator.gif" border="0">
          <a href="category?category_id=DOGS" onmouseover="img_on('dogs')" onmouseout="img_off('dogs')"><img src="/estore/images/dogs.gif" border="0" name="img_dogs"></a>
          <img src="/estore/images/separator.gif" border="0">
          <a href="category?category_id=REPTILES" onmouseover="img_on('reptiles')" onmouseout="img_off('reptiles')"><img src="/estore/images/reptiles.gif" border="0" name="img_reptiles"></a>
          <img src="/estore/images/separator.gif" border="0">
          <a href="category?category_id=CATS" onmouseover="img_on('cats')" onmouseout="img_off('cats')"><img src="/estore/images/cats.gif" border="0" name="img_cats"></a>
          <img src="/estore/images/separator.gif" border="0">
          <a href="category?category_id=BIRDS" onmouseover="img_on('birds')" onmouseout="img_off('birds')"><img src="/estore/images/birds.gif" border="0" name="img_birds"></a>
      

  2.   

    谢谢.可我还是不怎么明白,哎,基础太差了,几位前辈可以给我举一个简单范例吗比如说 , a.jsp 如何 调用 b.jsp , 关键是这个传递的参数究竟是在哪里设定的, 我应该如何去控制
      

  3.   

    http://community.csdn.net/Expert/topic/5756/5756718.xml?temp=.5951349
      

  4.   

    对不起,我还是闹不明白,能不能再多推荐一点资料,我再举一个例子吧 <a href="/estore/control/signin" onmouseover="img_on('signin')" onmouseout="img_off('signin')"><img src="/estore/images/sign-in.gif" border="0" name="img_signin"></a>这是打开登陆界面,根下有signin.jsp文件,被调用了,可我不明白的是,这些*.jsp是如何组织起来的,是在哪里定义 "/estore/control/signin" = signin.jsp
      

  5.   

    你看你的web.config 在里面配置的 我估计是用到了struts 所有的请求都到了ActionServlet
    然后在看看你的 struts-config 里面是不是有个signin 它的redirect到了 signin.jsp?
      

  6.   

    我用的是 SUN公司的 pet store 1.1.2 版,这是一个J2EE的工程DEMO主体结构是 EJB包 + jsp包 , 发布的是*.ear ,也就是 *.jar + *.war
    与struts结构是完全不同的另一种结构
     
    jsp里面通过JNDI,可以找到并调用EJB
    我现在头疼的是jsp是如何找到并调用jsp,怎样实现的
      

  7.   

    这个东西没接触过,,,,我都一年没接触java了  你还是看看web.config
    或者把web.config发出来看看  肯定能找到他调用的路径的
      

  8.   

    谢谢大哥,没有web.config文件,看web.xml可以吗,这是前台的<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN' 'http://java.sun.com/j2ee/dtds/web-app_2.2.dtd'><web-app>
      <display-name>WebTier</display-name>
      <description>Web Tier DD for the PetStore application</description>  <servlet>
        <servlet-name>webTierEntryPoint</servlet-name>
        <display-name>centralServlet</display-name>
        <description>no description</description>
        <servlet-class>com.sun.j2ee.blueprints.petstore.control.web.MainServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>webTierEntryPoint</servlet-name>
        <url-pattern>/control/*</url-pattern>
      </servlet-mapping>  <servlet>
        <servlet-name>populateServlet</servlet-name>
        <display-name>Populate Servlet</display-name>
        <description>no description</description>
        <servlet-class>com.sun.j2ee.blueprints.tools.populate.web.PopulateServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>populateServlet</servlet-name>
        <url-pattern>/populate</url-pattern>
      </servlet-mapping>  <session-config>
        <session-timeout>54</session-timeout>
      </session-config>  <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
      <resource-ref>
        <res-ref-name>jdbc/EstoreDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </resource-ref>  <env-entry>
        <env-entry-name>ejb/catalog/CatalogDAOClass</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>com.sun.j2ee.blueprints.shoppingcart.catalog.dao.CatalogDAOImpl</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>ejb/profilemgr/ProfileMgrDAOClass</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>com.sun.j2ee.blueprints.personalization.profilemgr.dao.ProfileMgrDAOImpl</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>server/ServerType</env-entry-name>
        <env-entry-value>Java 2 Enterprise Edition Reference Implementation</env-entry-value>
        <env-entry-type>java.lang.String</env-entry-type>
      </env-entry>  <ejb-ref>
        <ejb-ref-name>ejb/catalog/Catalog</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.shoppingcart.catalog.ejb.CatalogHome</home>
        <remote>com.sun.j2ee.blueprints.shoppingcart.catalog.ejb.Catalog</remote>
      </ejb-ref>
      <ejb-ref>
        <ejb-ref-name>ejb/cart/Cart</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.shoppingcart.cart.ejb.ShoppingCartHome</home>
        <remote>com.sun.j2ee.blueprints.shoppingcart.cart.ejb.ShoppingCart</remote>
      </ejb-ref>
      <ejb-ref>
        <ejb-ref-name>ejb/customer/Customer</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.customer.customer.ejb.CustomerHome</home>
        <remote>com.sun.j2ee.blueprints.customer.customer.ejb.Customer</remote>
      </ejb-ref>
      <ejb-ref>
        <ejb-ref-name>ejb/profilemgr/ProfileMgr</ejb-ref-name>
        <ejb-ref-type>Entity</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.personalization.profilemgr.ejb.ProfileMgrHome</home>
        <remote>com.sun.j2ee.blueprints.personalization.profilemgr.ejb.ProfileMgr</remote>
      </ejb-ref>
      <ejb-ref>
        <ejb-ref-name>ejb/scc/Scc</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.petstore.control.ejb.ShoppingClientControllerHome</home>
        <remote>com.sun.j2ee.blueprints.petstore.control.ejb.ShoppingClientController</remote>
      </ejb-ref>
      <ejb-ref>
        <ejb-ref-name>ejb/inventory/Inventory</ejb-ref-name>
        <ejb-ref-type>Entity</ejb-ref-type>
        <home>com.sun.j2ee.blueprints.inventory.ejb.InventoryHome</home>
        <remote>com.sun.j2ee.blueprints.inventory.ejb.Inventory</remote>
      </ejb-ref>
    </web-app>
      

  9.   

    嘿嘿 不好意思 .net上是web.config....忘记了 
    你看这段 <servlet>
        <servlet-name>webTierEntryPoint</servlet-name>
        <display-name>centralServlet</display-name>
        <description>no description</description>
        <servlet-class>com.sun.j2ee.blueprints.petstore.control.web.MainServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>webTierEntryPoint</servlet-name>
        <url-pattern>/control/*</url-pattern>
      </servlet-mapping>
     <url-pattern>/control/*</url-pattern> 表示 你所有"control/包含的请求都交给com.sun.j2ee.blueprints.petstore.control.web.MainServlet来处理 包括你的
    “/estore/control/signin”
    然后 MainServlet你的init方法肯定也解析了一个xml 那个xml 里面 就有一个配置 名字是signin  路径就应该是signin.jsp了 大致就是这个意思了
      

  10.   

    谢谢,帮忙再看看,这是 MainServlet里的init方法,还有另两个XML文件,其中确实有配置signin.jsp的路径, 可我还是难以理解究竟是如何用法,可以讲的详细点吗public void init() {
            Debug.println("MainServlet: Initializing");
            String requestMappingsURL = null;
            try {
                requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString();
            } catch (java.net.MalformedURLException ex) {
                Debug.println("ScreenFlowManager: initializing ScreenFlowManager malformed URL exception: " + ex);
            }
           urlMappings = ScreenFlowXmlDAO.loadRequestMappings(requestMappingsURL);
           getServletContext().setAttribute(WebKeys.URLMappingsKey, urlMappings);
           Debug.println("MainServlet: loaded urlMappings");
           String serverType = null;
           try {
                InitialContext ic = new InitialContext();
                serverType = (String)ic.lookup(JNDINames.SERVER_TYPE);
                getServletContext().setAttribute(WebKeys.ServerTypeKey, serverType);
            } catch (NamingException ex) {
                Debug.println("Server Type not specified in deployment descriptor: using default J2ee Security Adapter");
            }
            getScreenFlowManager();
            getRequestProcessor();
            Debug.println("MainServlet: Initialization complete");
        }--------------------------requestmappings.xml------------------------
    <?xml version="1.0" encoding="ISO-8859-1"?><request-mappings>
        <screen-definition url="/WEB-INF/xml/screendefinitions.xml" language="en_US"/>
        <screen-definition url="/WEB-INF/xml/ja/screendefinitions.xml" language="ja_JP"/>    <default-screen>MAIN</default-screen>
        <signin-screen>SIGN_IN</signin-screen>
        <signin-error-screen>SIGN_IN_ERROR</signin-error-screen>
        <url-mapping url="/main" screen="MAIN"/>
        <url-mapping url="/search" screen="SEARCH"/>
        <url-mapping url="/category" screen="CATEGORY"/>
        <url-mapping url="/product" screen="PRODUCT"/>
        <url-mapping url="/catalog" screen="CATALOG"/>
        <url-mapping url="/error" screen="ERROR"/>
        <url-mapping url="/accountcreated" screen="ACCOUNT_CREATED"/>
        <url-mapping url="/createnewaccount" screen="CREATE_ACCOUNT"/>
        <url-mapping url="/editaccount" screen="EDIT_ACCOUNT" requiresSignin="true"/>
        <url-mapping url="/accountedited" screen="ACCOUNT_UPDATED"/>    <url-mapping url="/signin" screen ="SIGN_IN_SUCCESS" requiresSignin="true"/>
        <url-mapping url="/signout" screen="SIGN_OUT" useRequestHandler="true" >
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.SignoutHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/language" screen="MAIN" useRequestHandler="true" >
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.LanguageHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/help" screen="HELP"/>
        <url-mapping url="/checkout" screen="CHECK_OUT"/>
        <url-mapping url="/placeorder" screen="PLACE_ORDER" requiresSignin="true"/>
        <url-mapping url="/productdetails" screen="PRODUCT_DETAILS"/>
        <url-mapping url="/verifysignin" screen="SIGN_IN_SUCCESS" useRequestHandler="true" useFlowHandler="true">
            <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.SigninHandler</request-handler-class>
            <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.SigninFlowHandler">
                <handler-result result="2" screen="SIGN_IN_ERROR"/>
                <handler-result result="1" screen="SIGN_IN_SUCCESS"/>
            </flow-handler>
       </url-mapping>
        <url-mapping url="/validateshippinginformation" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
            <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractShippingInformationHandler</request-handler-class>
            <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.ShippingFlowHandler">
                <handler-result result="1" screen="VALIDATE_BILLING_INFORMATION"/>
                <handler-result result="2" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>    <url-mapping url="/validatebillinginformation" screen="VALIDATE_BILLING_INFORMATION" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
           <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractBillingInformationHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountFlowHandler">
             <handler-result result="1" screen="ENTER_SHIPPING_INFORMATION"/>
             <handler-result result="2" screen="VALIDATE_BILLING_INFORMATION"/>
             <handler-result result="3" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>
        <url-mapping url="/entershippingaddress" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
         <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractShippingInformationHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.ShippingFlowHandler">
             <handler-result result="1" screen="ENTER_SHIPPING_INFORMATION"/>
             <handler-result result="2" screen="MISSING_FORM_DATA"/>
          </flow-handler>
        </url-mapping>    <url-mapping url="/validatenewaccount" screen="ACCOUNT_CREATED" useRequestHandler="true" useFlowHandler="true">
           <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountFlowHandler">
             <handler-result result="1" screen="ACCOUNT_CREATED"/>
             <handler-result result="2" screen="ACCOUNT_CREATED"/>
             <handler-result result="3" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>    <url-mapping url="/updateaccount" screen="ACCOUNT_UPDATED" useRequestHandler="true">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/missingformdata" screen="MISSING_FORM_DATA"/>
        <url-mapping url="/commitorder" useRequestHandler="true" screen="COMMIT_ORDER" requiresSignin="true">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.OrderHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/cart" useRequestHandler="true" screen="CART">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.CartHandler</request-handler-class>
        </url-mapping>    <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.SigninFailedException" screen="SIGN_IN_ERROR"/>
        <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.DuplicateAccountException" screen="DUPLICATE_ACCOUNT"/>
        <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.GeneralFailureException" screen="ERROR"/></request-mappings >
      

  11.   

    ----------------------screendefinitions.xml------------------------
    <?xml version="1.0" encoding="ISO-8859-1"?><request-mappings>
        <screen-definition url="/WEB-INF/xml/screendefinitions.xml" language="en_US"/>
        <screen-definition url="/WEB-INF/xml/ja/screendefinitions.xml" language="ja_JP"/>    <default-screen>MAIN</default-screen>
        <signin-screen>SIGN_IN</signin-screen>
        <signin-error-screen>SIGN_IN_ERROR</signin-error-screen>
        <url-mapping url="/main" screen="MAIN"/>
        <url-mapping url="/search" screen="SEARCH"/>
        <url-mapping url="/category" screen="CATEGORY"/>
        <url-mapping url="/product" screen="PRODUCT"/>
        <url-mapping url="/catalog" screen="CATALOG"/>
        <url-mapping url="/error" screen="ERROR"/>
        <url-mapping url="/accountcreated" screen="ACCOUNT_CREATED"/>
        <url-mapping url="/createnewaccount" screen="CREATE_ACCOUNT"/>
        <url-mapping url="/editaccount" screen="EDIT_ACCOUNT" requiresSignin="true"/>
        <url-mapping url="/accountedited" screen="ACCOUNT_UPDATED"/>    <url-mapping url="/signin" screen ="SIGN_IN_SUCCESS" requiresSignin="true"/>
        <url-mapping url="/signout" screen="SIGN_OUT" useRequestHandler="true" >
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.SignoutHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/language" screen="MAIN" useRequestHandler="true" >
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.LanguageHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/help" screen="HELP"/>
        <url-mapping url="/checkout" screen="CHECK_OUT"/>
        <url-mapping url="/placeorder" screen="PLACE_ORDER" requiresSignin="true"/>
        <url-mapping url="/productdetails" screen="PRODUCT_DETAILS"/>
        <url-mapping url="/verifysignin" screen="SIGN_IN_SUCCESS" useRequestHandler="true" useFlowHandler="true">
            <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.SigninHandler</request-handler-class>
            <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.SigninFlowHandler">
                <handler-result result="2" screen="SIGN_IN_ERROR"/>
                <handler-result result="1" screen="SIGN_IN_SUCCESS"/>
            </flow-handler>
       </url-mapping>
        <url-mapping url="/validateshippinginformation" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
            <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractShippingInformationHandler</request-handler-class>
            <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.ShippingFlowHandler">
                <handler-result result="1" screen="VALIDATE_BILLING_INFORMATION"/>
                <handler-result result="2" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>    <url-mapping url="/validatebillinginformation" screen="VALIDATE_BILLING_INFORMATION" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
           <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractBillingInformationHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountFlowHandler">
             <handler-result result="1" screen="ENTER_SHIPPING_INFORMATION"/>
             <handler-result result="2" screen="VALIDATE_BILLING_INFORMATION"/>
             <handler-result result="3" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>
        <url-mapping url="/entershippingaddress" useRequestHandler="true" useFlowHandler="true" requiresSignin="true">
         <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.ExtractShippingInformationHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.ShippingFlowHandler">
             <handler-result result="1" screen="ENTER_SHIPPING_INFORMATION"/>
             <handler-result result="2" screen="MISSING_FORM_DATA"/>
          </flow-handler>
        </url-mapping>    <url-mapping url="/validatenewaccount" screen="ACCOUNT_CREATED" useRequestHandler="true" useFlowHandler="true">
           <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountHandler</request-handler-class>
           <flow-handler class="com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountFlowHandler">
             <handler-result result="1" screen="ACCOUNT_CREATED"/>
             <handler-result result="2" screen="ACCOUNT_CREATED"/>
             <handler-result result="3" screen="MISSING_FORM_DATA"/>
          </flow-handler>
       </url-mapping>    <url-mapping url="/updateaccount" screen="ACCOUNT_UPDATED" useRequestHandler="true">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.AccountHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/missingformdata" screen="MISSING_FORM_DATA"/>
        <url-mapping url="/commitorder" useRequestHandler="true" screen="COMMIT_ORDER" requiresSignin="true">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.OrderHandler</request-handler-class>
        </url-mapping>    <url-mapping url="/cart" useRequestHandler="true" screen="CART">
          <request-handler-class>com.sun.j2ee.blueprints.petstore.control.web.handlers.CartHandler</request-handler-class>
        </url-mapping>    <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.SigninFailedException" screen="SIGN_IN_ERROR"/>
        <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.DuplicateAccountException" screen="DUPLICATE_ACCOUNT"/>
        <exception-mapping exception-class="com.sun.j2ee.blueprints.petstore.control.exceptions.GeneralFailureException" screen="ERROR"/></request-mappings >
      

  12.   

    ----------------------------screendefinitions.xml-------------------------------
    <screen>
        <screen-name>SIGN_IN</screen-name>
        <parameter key="HtmlTitle" value="Sign In" direct="true"/>
        <parameter key="HtmlBanner" value="/banner.jsp" direct="false"/>
        <parameter key="HtmlTopIndex" value="/topindex.jsp" direct="false"/>
        <parameter key="HtmlBody" value="/signin.jsp" direct="false"/>
        <parameter key="HtmlFooter" value="/footer.jsp" direct="false"/>
        <parameter key="Annotation" value="/estore/annotation/ann_security_j2ee.jsp" direct="true"/>
       </screen>
      

  13.   

    你把 整个MainServlet都贴出来 
    因为跳转不可能在init里面的 
    我没调试也不知道requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString();
     这个到底读出来的是什么。。
      

  14.   

    --------------------MainServlet.java------------------------------
    /*
     * $Id: MainServlet.java,v 1.14.4.8 2001/03/15 00:40:02 brydon Exp $
     * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
     * Copyright 2001 Sun Microsystems, Inc. Tous droits r?erv?.
     */package com.sun.j2ee.blueprints.petstore.control.web;import javax.servlet.ServletException;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter;
    import java.io.OutputStreamWriter;
    import java.beans.Beans;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Locale;
    import javax.naming.NamingException;
    import javax.naming.InitialContext;
    import com.sun.j2ee.blueprints.petstore.util.JNDINames;import com.sun.j2ee.blueprints.petstore.control.exceptions.SigninFailedException;
    import com.sun.j2ee.blueprints.petstore.control.exceptions.GeneralFailureException;
    import com.sun.j2ee.blueprints.util.tracer.Debug;
    import com.sun.j2ee.blueprints.petstore.control.web.ModelManager;
    import com.sun.j2ee.blueprints.petstore.control.web.CustomerWebImpl;
    import com.sun.j2ee.blueprints.petstore.control.web.ScreenFlowXmlDAO;
    import com.sun.j2ee.blueprints.petstore.control.web.RequestProcessor;
    import com.sun.j2ee.blueprints.petstore.util.WebKeys;
    import com.sun.j2ee.blueprints.petstore.util.JSPUtil;public class MainServlet extends HttpServlet {    private HashMap urlMappings;    public void init() {
            Debug.println("MainServlet: Initializing");
            String requestMappingsURL = null;
            try {
                requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString();
            } catch (java.net.MalformedURLException ex) {
                Debug.println("ScreenFlowManager: initializing ScreenFlowManager malformed URL exception: " + ex);
            }
           urlMappings = ScreenFlowXmlDAO.loadRequestMappings(requestMappingsURL);
           getServletContext().setAttribute(WebKeys.URLMappingsKey, urlMappings);
           Debug.println("MainServlet: loaded urlMappings");
           String serverType = null;
           try {
                InitialContext ic = new InitialContext();
                serverType = (String)ic.lookup(JNDINames.SERVER_TYPE);
                getServletContext().setAttribute(WebKeys.ServerTypeKey, serverType);
            } catch (NamingException ex) {
                Debug.println("Server Type not specified in deployment descriptor: using default J2ee Security Adapter");
            }
            getScreenFlowManager();
            getRequestProcessor();
            Debug.println("MainServlet: Initialization complete");
        }     public  void doPost(HttpServletRequest request, HttpServletResponse  response)
            throws IOException, ServletException {
            doGet(request, response);
        }    public  void doGet(HttpServletRequest request, HttpServletResponse  response)
            throws IOException, ServletException {
            String selectedURL = request.getPathInfo();
            // the current tomcat is resetting the outputstream so this is a workaround
            if ((selectedURL != null) && selectedURL.equals("/white")) return;
            HttpSession session = request.getSession();
            ScreenFlowManager screenManager = null;
            ModelManager modelManager= (ModelManager)request.getSession().getAttribute(WebKeys.ModelManagerKey);
            if ( modelManager == null ) {
                try {
                            modelManager = (ModelManager) Beans.instantiate(this.getClass().getClassLoader(), "com.sun.j2ee.blueprints.petstore.control.web.ModelManager");
                 } catch (Exception exc) {
                     throw new ServletException ("Cannot create bean of class ModelManager");
                 }
                 session.setAttribute(WebKeys.ModelManagerKey, modelManager);
                 modelManager.init(getServletContext(), session);
             }
             Debug.println("MainServlet: url " + selectedURL);
             // check if url is protected before processing request
             URLMapping current = getURLMapping(selectedURL);
             if ((current != null) && current.requiresSignin()) {
                 CustomerWebImpl customer = modelManager.getCustomerWebImpl();
                 if (customer.isLoggedIn()) {
                     doProcess(request);
                 } else {
                     String signinScreen = getScreenFlowManager().getSigninScreen();
                     session.setAttribute(WebKeys.CurrentScreen, signinScreen);
                     session.setAttribute(WebKeys.SigninTargetURL, selectedURL);
                 }
             } else {
                 doProcess(request);
             }
                /**
                    Default to the base language or the site.
                 If a language is found in the session use that template.
                 */
                 Locale locale = JSPUtil.getLocale(request.getSession());
                 getServletConfig().getServletContext().getRequestDispatcher(getScreenFlowManager().getTemplate(locale)).forward(request, response);    }    private void doProcess(HttpServletRequest request) throws ServletException {
            try {
                     getRequestProcessor().processRequest(request);
                     getScreenFlowManager().getNextScreen(request);
            } catch (Throwable ex) {
                String className = ex.getClass().getName();
                String exceptionScreen = getScreenFlowManager().getExceptionScreen(className);
                Debug.println("MainServlet: target screen is: " + exceptionScreen);
                // put the exception in the request
                request.setAttribute("javax.servlet.jsp.jspException", ex);
                if (exceptionScreen != null) {
                    request.getSession().setAttribute(WebKeys.CurrentScreen, exceptionScreen);
                } else {
                    // send to general error screen
                    Debug.println("MainServlet: unknown exception: " + className);
                    throw new ServletException("MainServlet: unknown exception: " + className);
               }
           }
        }    private RequestProcessor getRequestProcessor() {
             RequestProcessor rp = (RequestProcessor)getServletContext().getAttribute(WebKeys.RequestProcessorKey);
             if ( rp == null ) {
                 Debug.println("MainServlet: initializing request processor");
                 rp = new RequestProcessor();
                 rp.init(getServletContext());
                 getServletContext().setAttribute(WebKeys.RequestProcessorKey, rp);
            }
           return rp;
        }    private ScreenFlowManager getScreenFlowManager() {
                ScreenFlowManager screenManager = (ScreenFlowManager)getServletContext().getAttribute(WebKeys.ScreenManagerKey);
                if (screenManager == null ) {
                    Debug.println("MainServlet: Loading screen flow definitions");
                    screenManager = new ScreenFlowManager();
                    screenManager.init(getServletContext());
                    getServletContext().setAttribute(WebKeys.ScreenManagerKey, screenManager);
                 }
            return screenManager;
        }    /**
         * The UrlMapping object contains information that will match
         * a url to a mapping object that contains information about
         * the current screen, the RequestHandler that is needed to
         * process a request, and the RequestHandler that is needed
         * to insure that the propper screen is displayed.
        */    private URLMapping getURLMapping(String urlPattern) {
            if ((urlMappings != null) && urlMappings.containsKey(urlPattern)) {
                return (URLMapping)urlMappings.get(urlPattern);
            } else {
                return null;
            }
        }}
      

  15.   

    init() 方法是web容器 启动的的时候就解析的~~
    requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString();将XML解析成一个字符串 具体怎么排列的你调试下就知道了 我没安装环境。
    urlMappings = ScreenFlowXmlDAO.loadRequestMappings(requestMappingsURL); 
    ScreenFlowXmlDAO 这个类是这个工程的类 我想应该是吧 这个字符串解析成一个key对应一个alue的 hashmap 大约就是 signin SIGN_IN_SUCCESS 的样子 然后将这个hashmap 保存 getServletContext().setAttribute(WebKeys.URLMappingsKey, urlMappings);然后在页面点击连接的时候进行doget和dopost请求都进入 doGet(requet,response)方法 String selectedURL = request.getPathInfo(); 获得uri 然后经过处理 比较modelManager = (ModelManager) Beans.instantiate(this.getClass().getClassLoader(), "com.sun.j2ee.blueprints.petstore.control.web.ModelManager"); 这个就是转向的代码你这个是的deamo 你可以调试一下 一步一步的跟下就很清楚了  其中中间 还经过了很多的处理 有点复杂 我不调试也说不清