zoukankan      html  css  js  c++  java
  • Servlet 配置文件web.xml实验

    我们的servlet为

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ServletDemo1 extends HttpServlet{
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException{
            PrintWriter out = response.getWriter();
            out.println("<html>");
            out.println("<body>");
            out.println("<h1>Hello Servlet Get</h1>");
            out.println("</body>");
            out.println("</html>");    
        }
    }

    我们的web.xml配置文件为

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
        <servlet>
            <servlet-name>Servlet Name For Demo1</servlet-name>
            <servlet-class>com.mkyong.ServletDemo</servlet-class>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>Servlet Name For Demo</servlet-name>
            <url-pattern>/Demo</url-pattern>
        </servlet-mapping>
    </web-app>

    现在我们的实验分为三步

    1 测试<servlet-mapping>中的<url-pattern>,当我们在浏览器的请求不写成Demo而写成其他任意值得时候,浏览器出现404错误 resource not found。这个显而易见啦

    2 测试假如<servlet-mapping><servlet>的这两个标签的<servlet-name>不一致的时候出现的现象

    在我们启动tomcat的过程中,此时我们还没有从浏览器发出URL请求。控制台记录中抛出如下异常

    Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Servlet]]
    Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name

    3 测试假如

    当我们的<servlet>标签的<servlet-class>写的同web-inf文件夹中的servlet类不一致的时候 当我们的客户端发送URL请求时才会抛出以下错误
    我们的客户端出现为

    HTTP Status 500 - Error instantiating servlet class

    javax.servlet.ServletException: Error instantiating servlet class 

    root cause

    java.lang.ClassNotFoundException: com.mkyong.ServletDemo
    
    控制台显示为
    java.lang.ClassNotFoundException

    从上面可以看出在启动tomcat的过程中并不会对我们的servlet具体的实例化,而只有在服务器收到客户端浏览器正确的URL请求时才会找相关的类并且实例化。

  • 相关阅读:
    Codeforces Round #624 (Div. 3) D. Three Integers
    Codeforces Round #624 (Div. 3) C. Perform the Combo(前缀和)
    Codeforces Round #624 (Div. 3) B. WeirdSort(排序)
    Codeforces Round #624 (Div. 3) A. Add Odd or Subtract Even(水题)
    洛谷P1130红牌(简单DP)
    洛谷P1044栈(DP)
    Codeforces 1315C Restoring Permutation
    MATLAB字符串处理
    MATLAB矩阵操作和算术运算符
    MATLAB基本概念和变量
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5456628.html
Copyright © 2011-2022 走看看