Servlet: 运行在服务器上的小程序。 Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则,我们也可以自定义来实现这个接口。
整个JavaWeb的核心体系都是围绕着Servlet来转的。
首先新建Tomcat的项目, 然后创建ServletDemo01继承Servlet接口
public class ServletDemo01 implements Servlet { /*** * 初始化方法 * 在Servlet被创建时,只会执行一次 * @param servletConfig * @throws ServletException */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init....."); } /** * 获取Servlet的一些信息,版本,作者等等... (一般不会用) * @return */ @Override public ServletConfig getServletConfig() { return null; } /** * 提供服务的方法 * 每一次Servlet被访问时,执行 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service....."); } /** * 获取ServletConfig对象 * ServletConfig: Servlet的配置对象 * @return */ @Override public String getServletInfo() { return null; } /** * 销毁方法 * 在Servlet被杀死时执行 (服务器正常关闭时执行),只执行一次 */ @Override public void destroy() { System.out.println("destroy....."); } }在web.xml中添加配置
<!--配置Servlet--> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>com.heiko.ServletDemo01</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1_path</url-pattern> </servlet-mapping>点击运行 浏览器url中增加url-pattern 比如http://localhost:8080/MyTomcatTest_war_exploded2/demo1_path,回车 可以看到logcat中打印了日志
init..... service.....1.被创建:执行init方法,只执行一次 * 指定Servlet的创建时机 1.第一次被访问时,的值为负数 2.在服务器启动时,的值为0或正整数 * Servlet的init方法,只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的 多个用户同时访问时,可能存在线程安全问题。 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要修改值 2.提供服务:执行service方法,可以执行多次(刷新) 3.被销毁:执行destroy方法,只执行一次
Servlet3.0支持用注解的方式,可以不用xml配置。 新建类,添加注解
@WebServlet("/demo2") public class ServletDemo implements Servlet { //...省略 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service!!!!"); } }访问页面
http://localhost:8080/MyServletTest_war_exploded/demo2看到打印日志
service!!!!文中代码 详见 https://github.com/EthanCo/JavaWebTest
