当前位置: 主页 > JAVA语言

java 获取当前类路径-java 获取当前路径

发布时间:2023-06-03 10:11   浏览次数:次   作者:佚名

1.Servlet规范的具体实现(1.WEB-INF 2.classes 3.lib 4.web.xml)

1.引言

本实验的目的是,用官方提供的Servlet接口实现一个网络应用(web application)。该实现过程可以探究在Tomcat下,基于Servlet的网络应用的实现过程,更清楚地了解Servlet的本质,为后续使用Springboot框架打下良好的基础。

qt 获取当前路径_java 获取当前路径_java 获取当前类路径

2.实验过程 在Tomcat的根目录下的webapps文件夹中新建一个文件夹,其目录如下所示。其中Name为项目名,可以任意选择(在本文中以crm命名);WEB-INF包含了classes、lib两个文件java 获取当前类路径,分别用于存放Java源代码文件编译后的字节码文件、第三方jar包。web.xml存放配置信息。

  - Name
	- WEB-INF
	    - classes (存放Java源代码文件编译后的字节码文件)
	    - lib (第三方jar包)
	    - web.xml (Servlet的配置文件)
	- 前端内容(静态资源)

首先编写Java源代码文件,并对其进行编译,将编译后的字节码文件放在classes中。Java源代码文件如下。

qt 获取当前路径_java 获取当前类路径_java 获取当前路径


import jakarta.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet{
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("Hello World");
    }
    //仅override Servlet中的 void service()方法,其他方法省略....
}

由于是脱离IDEA进行编译,所以直接对上述Java文件进行编译是无法成功的,因为编译时找不到jakarta.servlet.*这一类库,于是需要将包含这一类库的Jar包添加到系统变量中去。即新建一个环境变量CLASSPATH,其值为包含servlet-api.jar的路径(路径的形式为…/servlet-api.jar)。如果使用IDEA中的Maven导入jakarta.servlet.*,则需要保证Project的JDK版本与Jakarta.servlet.*支持的版本一致,否则会报例如该链接中的错误: 。

对上述源代码文件进行编译后,将编译后的字节码文件放在classes文件夹中。接下来需要建立访问路径和对应的字节码文件之间的映射关系,需要用到xml文件。在WEB-INF目录下新建一个web.xml文件,其内容如下:

qt 获取当前路径_java 获取当前路径_java 获取当前类路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0"
         metadata-complete="true">
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet/index</url-pattern>
  </servlet-mapping>
</web-app>

请注意,尽可能不要在xml文件中插入中文字符,否则可能会出现未知错误,这些错误可以在Tomcat的日志文件中找到,例如在2023-06-02的错误信息可以在catalina.2023-06-02.log中寻找到。由此建立访问路径与字节码文件之间的映射,其访问路径如下:

主机名:端口号/项目名/url-pattern

java 获取当前类路径_java 获取当前路径_qt 获取当前路径

在本文中,访问路径即如下所示:

127.0.0.1:8080/crm/HelloServlet/index

3.实验结果与分析

java 获取当前类路径_java 获取当前路径_qt 获取当前路径

在这里插入图片描述

图1-1 可以看出最后一行输出了Hello World,这就是上述源代码文件中service()函数的功能。

从源代码文件java 获取当前类路径,即HelloServlet文件中可以看出,并没有主函数入口的出现。据此可以得到的结论如下:主函数入口的功能已经集成到Tomcat服务器中。Tomcat服务器通过反射实例化Servlet对象,并调用相应的Service函数来实现相关功能。