手动实现Servlet小程序
实现步骤
-
自定义一个类型,实现Servlet接口或者继承HttpServlet类
-
使用javac指令,将源文件编译成字节码文件
-
将编译完的字节码文件按照一定的组织结构打包,并编写web.xml配置文件
-
将整个组织结构放入Tomcat的webapps文件夹中
-
启动Tomcat,在浏览器上输入符合规范的地址去访问Servlet。
具体实现流程
1.编写一个类HelloWorldServlet,继承HttpServlet类型
创建路径如下:建立两个文件夹,在文件夹里建一个文本文档并改名为: HelloServlet.java
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.getWriter().println("hello world");
}
}
2.编译,生成.class文件 在cmd命令下输入
javac HelloServlet.java -classpath xxxxx\xxxxxx\servlet-api.jar
成功后会多一个.class结尾的文件
3.项目的组织结构
appName 项目名称(主要用来区分其他项目的)
-- WEB-INF文件夹
-- classes文件夹: 用来存储class文件的整个路径
com\zrgj\HelloServlet.class
-- lib(可选文件夹)
-- web.xml: 当前项目的主配置文件
web.xml里的内容如下:
<?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">
<!-- web-app根标记下,可以有很多对servlet和servlet-mapping标记
servlet里与servlet-mapping里的name相同,被认为是一组。
name:随便命名
class: 书写classes目录下的具体类路径,也就是类全名
url-pattern: 寻找指定servlet组件的路径
注意:如果定义了url-pattern,那么浏览器的路径如下:
http://localhost:8080/appName/url-pattern
-->
<servlet>
<servlet-name>a</servlet-name>
<servlet-class>com.zrgj.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>a</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
4.部署项目
将整个文件夹组织结构,拷贝到tomcat的webapps文件夹里。
5.启动tomcat
找到tomcat的bin目录下的startup.bat可执行文件,启动后,不要关闭。
6.在浏览器上输入地址,向tomcat容器发送请求
http://localhost:8080/myfirstweb/hello ,回车后,应该会看到hello world字样
7.总结流程
部署完项目后的执行流程:
1. 浏览器向服务器发送请求,访问服务器上的某一个项目下的某一个资源
路径如下:http://服务器IP:服务器端口/项目名/资源路径
2. 服务器收到请求后,会先确认并找到该项目
3. 如果找到了该项目,会加载里面的web.xml配置文件
4. 然后通过资源路径,去匹配servlet-mapping里的url-pattern,来确定servlet-name
5. 根据servlet-name,定位到对应的servlet里的servlet-class
6. 根据servlet-class标签里的类全名,去项目的classes目录下查找对应的类文件
7. 执行类文件里的service方法,将数据最终响应给浏览器