servlet为什么要配置web xml
呵呵,新手,不太明白,xml要怎么配置呢,能做个简单例子吗?

解决方案 »

  1.   

    晕。 为什么 要 配置。 这个问题你应该去 问SUN .  
      这是 SUN 要求  的。 所以 你必须 做。
      <servlet> 
          <servlet-name>MyServlet</servlet-name>      //这里是servlet 的名字,自己定义 的
          <servlet-class>Servlet</servlet-class>      //这里是servlet的位置 。 如果在 一个包下, 就写 包名.类名
      </servlet>  <servlet-mapping>
          <servlet-name>MyServlet</servlet-name>      //这里跟 上面的;servlet-name 必须一样
          <url-pattern>/abc</url-pattern>             //这里 在地址 输入访问的 时候 输入的,自己定义
      </servlet-mapping>
      

  2.   

    开始具体写servlet程序前还需将tomcat的servlet包导入
    common\lib\servlet-api.jar
    才能编译成功.
    tomcat配置
    webapps下新建一文件夹放置将project放在的文件既可,里面至少需要一个WEB-INF文件夹,这个文件夹是不可通过网址直接访问的,WEB-INF下面一般建两个文件夹classes和lib,classes放置编译好的class文件,lib则放其他第三方库,比如mysql的jdbc库,WEB-INF下面应有个web.xml配置文件叫做Deployment Descriptor,一个典型的web.xml应该是这样的。
    <web-app xmlns="http://java.sun.com/xml/ns...
       xmlns:xsi="http://www.w3.org/2001/XML...
       xsi:schemaLocation="http://java.sun.com/xml/ns... http://java.sun.com/xml/ns...
       version="2.4">
     <!--设置该project的名称和描述,可在tomcat管理器中看到-->
     <display-name>demo</display-name>
     <description>
        demo project
     </description><!-- JSPC servlet mappings start -->   <servlet>
           <!--url上显示的名字-->
           <servlet-name>Content2</servlet-name>
           <!--实际的类名-->
           <servlet-class>Content2Servlet</servlet-class>
       </servlet>
       <servlet>
           <servlet-name>Login</servlet-name>
           <servlet-class>SessionLoginServlet</servlet-class>
           <!--还可给某一servlet附加参数,可用在动态配置中-->
           <init-param> 
               <!--参数名-->
               <param-name>dbhost</param-name> 
               <!--参数内容-->
               <param-value>db4free.org</param-value> 
           </init-param> 
       </servlet>
       <!--设置url映射-->
       <servlet-mapping>
           <servlet-name>Login</servlet-name>
           <!--设为/*表示将此servlet设为默认首页-->
           <url-pattern>/*</url-pattern>
       </servlet-mapping>
       <servlet-mapping>
           <servlet-name>Content2</servlet-name>
           <!--这样映射得到的网址就是 主机名/webapps下的文件夹名/content2-->
           <url-pattern>/Content2</url-pattern>
       </servlet-mapping><!-- JSPC servlet mappings end --></web-app>
      

  3.   

    在即将发布的 Servlet 3.0 规范中,可以像下面这样用了,不用再去配置 web.xml 了,
    不过得等到 Tomcat 7 发布后才能用,呵呵。@Servlet(urlMappings={"/MyApp"})
    public class MyServlet {
        @GET
        public void handleGet(HttpServletRequest req, HttpServletResponse res) {
                    ....
        }
    }Ref. http://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html
      

  4.   

    开始具体写servlet程序前还需将tomcat的servlet包导入 
    common\lib\servlet-api.jar 
    才能编译成功. 
    tomcat配置 
    webapps下新建一文件夹放置将project放在的文件既可,里面至少需要一个WEB-INF文件夹,这个文件夹是不可通过网址直接访问的,WEB-INF下面一般建两个文件夹classes和lib,classes放置编译好的class文件,lib则放其他第三方库,比如mysql的jdbc库,WEB-INF下面应有个web.xml配置文件叫做Deployment Descriptor,一个典型的web.xml应该是这样的。 
    <web-app xmlns="http://java.sun.com/xml/ns... 
      xmlns:xsi="http://www.w3.org/2001/XML... 
      xsi:schemaLocation="http://java.sun.com/xml/ns... http://java.sun.com/xml/ns... 
      version="2.4"> 
    <!--设置该project的名称和描述,可在tomcat管理器中看到--> 
    <display-name>demo </display-name> 
    <description> 
        demo project 
    </description> <!-- JSPC servlet mappings start -->   <servlet> 
          <!--url上显示的名字--> 
          <servlet-name>Content2 </servlet-name> 
          <!--实际的类名--> 
          <servlet-class>Content2Servlet </servlet-class> 
      </servlet> 
      <servlet> 
          <servlet-name>Login </servlet-name> 
          <servlet-class>SessionLoginServlet </servlet-class> 
          <!--还可给某一servlet附加参数,可用在动态配置中--> 
          <init-param> 
              <!--参数名--> 
              <param-name>dbhost </param-name> 
              <!--参数内容--> 
              <param-value>db4free.org </param-value> 
          </init-param> 
      </servlet> 
      <!--设置url映射--> 
      <servlet-mapping> 
          <servlet-name>Login </servlet-name> 
          <!--设为/*表示将此servlet设为默认首页--> 
          <url-pattern>/* </url-pattern> 
      </servlet-mapping> 
      <servlet-mapping> 
          <servlet-name>Content2 </servlet-name> 
          <!--这样映射得到的网址就是 主机名/webapps下的文件夹名/content2--> 
          <url-pattern>/Content2 </url-pattern> 
      </servlet-mapping> <!-- JSPC servlet mappings end --> </web-app
      

  5.   

    不在web.xml中配置 jsp就不知道怎么去找你的servlet
      

  6.   

    web.xml其实就是servlet的一个配置文件,通过他来寻找对应的servlet 借用楼上的代码
    <servlet> 
          <servlet-name>MyServlet </servlet-name>      //这里是servlet 的名字,自己定义 的 
          <servlet-class>Servlet </servlet-class>      //这里是servlet的位置 。 如果在 一个包下, 就写 包名.类名 
    </servlet> <servlet-mapping> 
          <servlet-name>MyServlet </servlet-name>      //这里跟 上面的;servlet-name 必须一样 
          <url-pattern>/abc</url-pattern>            //这里 在地址 输入访问的 时候 输入的,自己定义 
    </servlet-mapping>你在JSP上的form 中的action="abc"然后服务器会根据abc查找servlet-mapping中的url-pattern来对应servlet-name为(MyServlet) 再根据MyServlet 名查找xml中的servlet节低那下的servlet-class
      

  7.   

    sun公司就是这样设计,容器通过配置文件找相应的servlet这样有助于灵活和可维护性
    等用到sturts和hibernate springs时候你就会知道配置文件的好处了
      

  8.   

    呵呵,谢谢大家了.<servlet-mapping> 
          <servlet-name>MyServlet </servlet-name>      //这里跟 上面的;servlet-name 必须一样 
          <url-pattern>/abc </url-pattern>            //这里 在地址 输入访问的 时候 输入的,自己定义 
      </servlet-mapping>url-pattern 能解释下吗?
      

  9.   

    赞同7楼的说法,很清析。
    web.xml其实就是servlet的一个配置文件,通过他来寻找对应的servlet 借用楼上的代码 
    <servlet> 
          <servlet-name>MyServlet </servlet-name>      //这里是servlet 的名字,自己定义 的 
          <servlet-class>Servlet </servlet-class>      //这里是servlet的位置 。 如果在 一个包下, 就写 包名.类名 
    </servlet> <servlet-mapping> 
          <servlet-name>MyServlet </servlet-name>      //这里跟 上面的;servlet-name 必须一样 
          <url-pattern>/abc </url-pattern>            //这里 在地址 输入访问的 时候 输入的,自己定义 
    </servlet-mapping> 你在JSP上的form 中的action="abc" 然后服务器会根据abc查找servlet-mapping中的url-pattern来对应servlet-name为(MyServlet) 再根据MyServlet 名查找xml中的servlet节低那下的servlet-class
      

  10.   

    赞同7楼的说法,很清析。
    web.xml其实就是servlet的一个配置文件,通过他来寻找对应的servlet 借用楼上的代码 
    <servlet> 
          <servlet-name>MyServlet </servlet-name>      //这里是servlet 的名字,自己定义 的 
          <servlet-class>Servlet </servlet-class>      //这里是servlet的位置 。 如果在 一个包下, 就写 包名.类名 
    </servlet> <servlet-mapping> 
          <servlet-name>MyServlet </servlet-name>      //这里跟 上面的;servlet-name 必须一样 
          <url-pattern>/abc </url-pattern>            //这里 在地址 输入访问的 时候 输入的,自己定义 
    </servlet-mapping> 你在JSP上的form 中的action="abc" 然后服务器会根据abc查找servlet-mapping中的url-pattern来对应servlet-name为(MyServlet) 再根据MyServlet 名查找xml中的servlet节低那下的servlet-class