Servlet
Servlet快速入门
代码如下:
1.pom.xml
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
2.创建ServletDemo.java
package com.ittest.web; import javax.jws.WebService; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; /** * @Description: TODO * @author: scott * @date: 2022年01月21日 14:33 */ @WebServlet("/demo1") public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("hello1"); } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
注意实现接口快捷键:ctrl+i
3.在浏览器url输入:http://localhost:8080/tomcat-demo1/demo1
控制台显示结果如图,访问成功。
Servlet执行流程
Servlet生命周期
Servlet方法介绍
如果遇到在一个方法里面需要使用另一个方法的局部变量,可以采用将局部变量升级为成员变量使用。
如下所示:
@WebServlet("/demo1") public class ServletDemo3 implements Servlet { private ServletConfig config; @Override public void init(ServletConfig config) throws ServletException { this.config= config; System.out.println("hello1"); } @Override public ServletConfig getServletConfig() { return config; } }
Servlet体系结构
报错:A child container failed during start
解决方案:把其他项目删除,是tomcat缓存造成, 重新运行tomcat即可。
ServletDemo4.java
package com.ittest.web; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @Description: TODO * @author: scott * @date: 2022年01月21日 15:51 */ @WebServlet("/demo4") public class ServletDemo4 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("get..."); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("post..."); } }
a.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Title</title> </head> <body> <form action="/tomcat-demo1/demo4" method="post"> <input name="username"><input type="submit"> </form> </body> </html>
运行提交后,控制台显示:
总结:
urlPttern配置
当一个目录既满足精确匹配又满足目录匹配,精确匹配的优先级更高。
任意配置"/",会覆盖掉tomcat中的DefaultServlet,当其他的url-pattern匹配不上时都会走这个Servlet。
XML配置Servlet
步骤:
1.编写Servlet类
2.在web.xml中配置该Servlet
<web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servler-name>demo13</servler-name> <servler-class>com.ittest.web.ServletDemo13</servler-class> </servlet> <servlet-mapping> <servlet-name>demo13</servlet-name> <url-pattern>demo13</url-pattern> </servlet-mapping> </web-app>