手动部署Servlet 创建项目结构 java web应用部署路径 java web项目会部署到Tomcat的安装目录下的webapps目录中:E:\apache-tomcat-8.5.35\webapps\
创建项目目录 在webapps目录下新建一个文件夹,取名为app01a,这个目录表示一个名为app01a的Java web项目。
项目目录下创建WEB-INF目录 在项目目录app01a下创建WEB-INF目录,WEB-INF目录是无法通过浏览器进行访问的,WEB-INF之外的其他路径都可以通过浏览器来访问到。
WEB-INF下创建lib目录 在WEB-INF目录下创建lib目录
WEB-INF下创建classes目录 在项目目录WEB-INF下创建classes目录,classes目录用来存放编译好的Servlet(.class):
编写Servlet 随便找个地方创建一个名为MyServlet.java的文件,然后在该文件中粘贴如下测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 package app01a;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebServlet;@WebServlet( name = "MyServlet", urlPatterns ={"/my"} ) public class MyServlet implements Servlet { private transient ServletConfig servletConfig; @Override public void init (ServletConfig servletConfig) throws ServletException { this .servletConfig = servletConfig; } @Override public ServletConfig getServletConfig () { return servletConfig; } @Override public String getServletInfo () { return "My Servlet" ; } @Override public void service (ServletRequest request, ServletResponse response) throws ServletException,IOException { String servletName = servletConfig.getServletName(); response.setContentType("text/html" ); PrintWriter writer = response.getWriter(); writer.print("<html><head></head>" + "<body>Hello from " + servletName + "</body></html>" ); } @Override public void destroy () {} }
编译Servlet 配置编译环境 这个MyServlet.java源文件是不能直接用javac编译的 ,错误输出如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 E:\workspace_web \app01a \src \app01a >javac -encoding utf -8 MyServlet.java MyServlet.java :4: 错误: 程序包javax.servlet 不存在import javax.servlet.Servlet ; ^ MyServlet.java :5: 错误: 程序包javax.servlet 不存在import javax.servlet.ServletConfig ; ^ MyServlet.java :6: 错误: 程序包javax.servlet 不存在import javax.servlet.ServletException ; ^ MyServlet.java :7: 错误: 程序包javax.servlet 不存在import javax.servlet.ServletRequest ; ^ MyServlet.java :8: 错误: 程序包javax.servlet 不存在import javax.servlet.ServletResponse ; ^ MyServlet.java :9: 错误: 程序包javax.servlet.annotation 不存在import javax.servlet.annotation.WebServlet ;
这是因为javac命令找不到servlet-api.jar这个jar包,这个servlet-api.jar可以在Tomcat的安装路径下的lib目录中找到: 复制这个jar文件,粘贴到%JAVA_HOME%\jre\lib\ext\目录下,如下图所示: 这样我们就可以直接编译java源文件了.
使用javac命令编译 我使用的编码是UTF-8的,所以用:javac -encoding utf-8 MyServlet.java进行编译:
1 2 3 4 Microsoft Windows [版本 10 .0 .17134 .407 ] (c) 2018 Microsoft Corporation。保留所有权利。 E:\workspace_web \app01a \src \app01a >javac -encoding utf -8 MyServlet.java E :\workspace_web \app01a \src \app01a >
这样会在当前目录下生成一个MyServlet.class文件,如下图所示:
部署Servlet 创建包目录 在WEB-INF/classes/目录下创建对应的包目录:app01a
粘贴字节码文件到包目录中 复制生成的MyServlet.class,然后粘贴到包目录WEB-INF/classes/app01a/下,这样MyServlet就部署完毕了,最终的目录结构如下图所示:
访问Servlet 通过下面的URL即可访问到该Servlet,http://localhost:8080/app01a/my 浏览器显示效果如下图所示: