javaWEB总结(1):第一个servlet程序
1.新建一个javaWeb工程,工程的目录如下
2.在com.dao.chu的包下新建一个HelloServlet.java类
package com.dao.chu; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * * Title: HelloServlet * Description:实现Servlet接口的类 * </p> */ public class HelloServlet implements Servlet { @Override public void destroy() { System.out.println("destroy..."); } @Override public ServletConfig getServletConfig() { System.out.println("getServletConfig..."); return null; } @Override public String getServletInfo() { System.out.println("getServletInfo..."); return null; } @Override public void init(ServletConfig arg0) throws ServletException { System.out.println("init..."); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("service..."); } public HelloServlet() { System.out.println("HelloServlet's constructor.."); } }
3.修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 配置和映射servlet --> <servlet> <!-- servlet注册的名字 --> <servlet-name>helloServlet</servlet-name> <!-- servlet的全类名 --> <servlet-class>com.dao.chu.HelloServlet</servlet-class> </servlet> <servlet-mapping> <!-- 需要和某一个servlet子节点的servlet-name 子节点的文本节点一致 --> <servlet-name>helloServlet</servlet-name> <!-- 映射的具体访问路径:/代表当前WEB应用的根目录 --> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
4.运行tomcat后,并且访问web.xml中所配的servlet访问地址,控制台打印结果:
5.每刷新请求一次页面,控制台便多输出一个“service...”,刷新两次,共输出三次service:
6.当停掉tomcat之后,控制台多输出了一个“destroy..”
总结:
一.web应用的跟路径
1.web.xml中的/hello,中的“/”是当前web应用的跟路径,本次访问的路径为http://localhost:7001/javaWeb_01/hello,
而web.xml中的“/”就相当于“http://localhost:7001/javaWeb_01/”;
二.servlet中有关生命周期的四个方法
1.构造器:只被调用一次,只有第一次请求servlet时,创建servlet实例,调用构造器,这说明servlet是单例的;
2.init方法:只被调用一次,在创建好实例后立即被调用,用于初始化当前的servlet;
3.service方法:被调用多次,每次请求都会调用service,实际用于处理请求;
4.destroy方法:只被调用一次,在当前servlet所在的WEB应用被卸载前被调用,用于释放当前servlet所占用的资源;
三.以上四个方法都由servlet容器自动调用。
跳过一些坑:
1.创建工程后没有web.xml的问题
新建一个动态web工程,不要点击finish,一直点击next,最后如图勾选即可。
2.控制台没有打印destroy..的问题
(1)不要关闭控制台的停止按钮,而要关闭tomcat的stop按钮,如果是控制台的按钮 那就相当于服务器断电,当然看不到打印信息,关闭server中的按钮才是调用 tomcat中的shutdown.
(2)不过还看不到打印信息就就用debug模式,在输出destroy的地方打断点。
以上坑是本人测试时候遇到,定是不很全面。
为了尊重原作者,下面粘贴佟刚老师视频的地址: