关于基本Servlet的路径配置问题(可一般化)

我的web.xml的配置

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  <servlet>
     <servlet-name>helloworldservlet</servlet-name>
     <servlet-class>HelloWorldServlet</servlet-class>
  </servlet>
    
  <servlet-mapping>
     <servlet-name>helloworldservlet</servlet-name>

     <url-pattern>/H</url-pattern>                      

  </servlet-mapping>

</web-app> 


我的123.jsp的内容

<%@page contentType="text/html;charset=gb2312"%>
<html>
<body bgcolor=cyan><font size=1>
 <form action="/H" >
   <input type="submit">
   </form>
</form>
</font>
</body>
</html>

我的helloWordServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorldServlet extends HttpServlet
{
    private static final String CONTENT_TYPE="text/html;charset=GBK";
    public void init() throws ServletException{
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException
    {
     PrintWriter out=response.getWriter();
     out.println("<html>");
     out.println("<head><title>HelloWorldServlet</title></head>");
     out.println("<body bgcolor=\"#ffffff\">");
     out.println("Hello World");
     out.println("</body>");
     out.println("</html>");
     out.close();
    }
    public void destroy()
    {}

}

放置的位置图是

webapps
|||||--helloworld
|||||||||||--WEB-INF
|||||||||||||||||--classes
|||||||||||||||||||||||--HelloWorldServlet.class

|||||||||||||||||||||||--HelloWorldServlet.java
|||||||||||||||||--web.xml

下面分情况来讨论:

            1. <form action="/H" >  且<url-pattern>/H</url-pattern>运行:能进入123.jsp 但  点击后地址栏:http://127.0.0.1:8080/H

HTTP Status 404 - /H


type Status report

message /H

description The requested resource is not available.


Apache Tomcat/8.0.0-RC1


            2.<form action="/H" >  且<url-pattern>H</url-pattern>  运行:不能进入123.jsp也就是整个工程都进不去,地址栏http://127.0.0.1:8080//ForServlet/123.jsp

                

HTTP Status 404 -


type Status report

message

description The requested resource is not available.


Apache Tomcat/8.0.0-RC1

          3.<form action="H" >  且<url-pattern>/H</url-pattern>运行成功:地址栏从:http://127.0.0.1:8080//ForServlet/123.jsp到http://127.0.0.1:8080//ForServlet/H

          Hello World

          4. <form action="H" >  且<url-pattern>H</url-pattern> 运行:不能进入123.jsp也就是整个工程都进不去,地址栏http://127.0.0.1:8080//ForServlet/123.jsp

HTTP Status 404 -


type Status report

message

description The requested resource is not available.


Apache Tomcat/8.0.0-RC1

      5.<form action="/ForServlet/H" >  且<url-pattern>/H</url-pattern>运行成功:地址栏从:http://127.0.0.1:8080//ForServlet/123.jsp到http://127.0.0.1:8080//ForServlet/H

           Hello World

     6.<form action="/ForServlet/H" >  且<url-pattern>H</url-pattern>运行:不能进入123.jsp也就是整个工程都进不去,地址栏http://127.0.0.1:8080//ForServlet/123.jsp

HTTP Status 404 -


type Status report

message

description The requested resource is not available.


Apache Tomcat/8.0.0-RC1

       可见只有<url-pattern>/H</url-pattern>的情况能保证整个工程至少能进入(123.jsp);

              在此基础上<form action="H" >或<form action="/ForServlet/H" >才能使工程完整运行HelloWorld

            如果整个工程至少能进入(123.jsp)但是jsp里是<form action="/H" >则会使地址栏跳转到http://127.0.0.1:8080/H出现404-/H


可见只有<url-pattern>/H</url-pattern>的情况能保证整个工程至少能进入(123.jsp);

              在此基础上<form action="H" >或<form action="/ForServlet/H" >才能使工程完整运行HelloWorld

            如果整个工程至少能进入(123.jsp)但是jsp里是<form action="/H" >则会使地址栏跳转到http://127.0.0.1:8080/H出现404-/H




 

在可以近入123.jsp的情况下:即<url-pattern>/H</url-pattern>的情

况下

 如果地址栏直接输入:http://127.0.0.1:8080//ForServlet/H也可以出现Hello World




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值