赞
踩
本实验对应JavaWeb课程的P10和P11两节课。由于缺乏集成开发环境,导致开发Web App以及将其配置到Tomcat的过程是非常繁琐的。本实验的目的是使用IDEA工具开发Servlet,包括如何建立符合规范的文件目录结构、如何正确地导入相关类库、如何正确配置相关配置文件(web.xml)以及如何正确配置Tomcat,最终通过浏览器访问相关路径实现Web App的功能。在本实验中,Web App的功能是从数据库中查询某张表的信息,因此还涉及到JDBC的使用。
此外,探寻Servlet的生命周期也是我们感兴趣的地方,包括Servlet对象的实例化(即调用构造函数的时机)、Service函数执行的时机以及Servlet消亡的时机(即调用destory方法的时机)。
首先在IDEA中建立一个项目,选择JDK17作为该项目的JDK版本,如图1-1所示。在新建好的项目名上右键添加一个Module,命名为Servlet_01,如图1-2所示。如图1-3所示,在Servlet_01这一模块上右键,选择add framework support,选择Web Application,就可以在文件目录中新建一个WEB-INF,其中包含了web.xml文件。
在Servlet_01这个Module下新建一个src文件夹,并建立一个Java源文件,取名为com.bjpowernode.studentServlet。其中,com.bjpowernode为包名。由于该studentServlet需要实现Servlet接口,而IDEA并没有servlet-api.jar这个包,于是需要从外部引入External libraries中去,如图1-3所示。
为了将Web App部署到Tomcat服务器中并运行,配置Tomcat服务器并部署Web App的入口如图1-4所示;配置Tomcat服务器过程如图1-5所示,其中箭头所指的地方是启动Tomcat服务器所展示的页面。在IDEA中Tomcat是不提供默认页面的,所以如果不新建一个HTML并作为Tomcat默认的启动页面,会产生404错误,即无法找到启动页的位置;部署Web App的过程如图1-6所示,添加artifacts并提供一个项目名称,此时Tomcat服务器的配置以及Web App的部署过程完成。
package com.bjpowernode; import jakarta.servlet.*; import java.io.IOException; import java.io.PrintWriter; import java.lang.ref.Reference; public class studentServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); // PrintWriter类是Java中的一个输出流类,它可以将数据(0和1的序列)转换成字符并输出到文件、控制台或网络等地方。 // 在计算机中,数据由0和1组成,字符输出流可以将0和1转换成字符的形式输出(写入)到指定的位置。当我们说将格式化的文本数据写入字符输出流时,意味着可以将字符以特定的格式展示数据。 // 而PrintWrite正是这样的类,将数据(电信号)转换成字符的形式,并以某种格式打印出来 // 这种格式由response提供,即“text/html" PrintWriter out=response.getWriter(); out.println("Hello"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
<?xml version="1.0" encoding="UTF-8"?> <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_4_0.xsd" version="4.0"> <servlet> <servlet-name>studentServlet</servlet-name> <servlet-class>com.bjpowernode.studentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>studentServlet</servlet-name> <url-pattern>/studentServlet</url-pattern> </servlet-mapping> </web-app>
6.student.html的代码如下,注意与web.xml不同的是,这里添加了项目名/web,后面接的是web.xml中/studentServlet中的值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/web/studentServlet">StudentList</a>
</body>
</html>
实验结果比较简单,即在http://localhost:8080/web/student.html这个面上有一个超链接,该超链接指向 http://localhost:8080/web/studentServlet,该页面展示了studentServlet执行的结果。在实验中,我们需要向External libraries中添加servlet-api.jar和jsp-api.jar以保证IDEA编译通过,但我们发现,Tomcat的lib库中没有任何包含任何与JDK相关的包,那么Tomcat是如何读取字节码文件的呢?从上述实验中可以得到以下结论:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。