解惑:“import javax.servlet.http.;” 无法通过 “import javax.servlet.;” 直接调用的缘由

项目场景:

使用 Java Servlet 技术开发一个 Web 页面,当用户访问该页面时,能够在浏览器中清晰地看到 “hello servlet, 你好 servlet” 的欢迎信息。


问题描述

在编写 Java Servlet 代码时,遇到了编译错误。编译器提示找不到 HttpServlet、HttpServletRequest 和 HttpServletResponse 类,项目无法正常运行。

解惑:“import javax.servlet.http.;” 无法通过 “import javax.servlet.;” 直接调用的缘由_第1张图片


原因分析:

问题出在包导入。仅仅使用了 import javax.servlet.*; 来导入 Servlet 相关的类,而 HttpServlet、HttpServletRequest 和 HttpServletResponse 类位于 javax.servlet.http 包中,Java 的包导入机制不会自动导入子包中的类,所以编译器无法找到这些类。

javax.servlet 包涵盖了 Servlet 的基础类和接口,像 Servlet、ServletConfig、ServletContext 等,这些是开发 Servlet 所需的通用组件。而 javax.servlet.http 包专门存放与 HTTP 协议相关的类和接口,比如 HttpServletRequest、HttpServletResponse、HttpServlet 等。import javax.servlet.http.*; 也并非 import javax.servlet.*; 的下级,但它属于 javax.servlet 包的子包,

具体类的位置:
(1)import javax.servlet.*;:它只能导入 javax.servlet 包下的类和接口,不能导入其子包(例如 javax.servlet.http)中的类和接口。
(2)import javax.servlet.http.*;:专门用于导入 javax.servlet.http 包下的所有类和接口,这些类和接口是专门为处理 HTTP 请求和响应设计的。

所以javax.servlet 包和 javax.servlet.http 包中的类承担着不同的功能,且 Java 的导入机制不会自动导入子包中的类,所以在使用 javax.servlet.http 包中的类时,必须单独导入该包。


解决方案:

添加了 import javax.servlet.http.*; 语句,以导入 javax.servlet.http 包下的所有类和接口。

你可能感兴趣的:(android)