servlet(重点)
Servlet是运行在服务器端的java小程序
我们创建的一个类要是Servlet,则它必须直接或者间接实现Servlet
如何创建一个Servlet
图片总结:Servlet(曾祖父) –> GenericServlet( 爷爷 ) –> HttpServlet(爸爸 ) (继承HttpServlet( 孙子))
Servlet的创建方式:(掌握)
创建Servlet的三种方式
1.直接创建一个类实现Servlet接口,实现接口的方法
2.创建一个类继承GenericServlet抽象类,实现抽象类的方法
3.创建一个类继承HttpServlet(常用)
方式1:直接实现Servlet接口步骤(掌握)
1. 创建一个类实现Servlet接口,并且实现接口中的方法
public class FirstServlet implements Servlet{
private ServletConfig config = null;
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init方法执行了");
this.config = config;
}
@Override
public ServletConfig getServletConfig() {
return this.config;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service方法执行了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("servlet销毁了");
}
}
2.在web.xml中添加Servlet的配置信息
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.chinasofti.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/First</url-pattern>
</servlet-mapping>
方式3:使用继承HttpServlet方式创建Servlet的步骤:
1)编写java类,继承HttpServlet类
2)重新doGet和doPost方法
3)Servlet程序交给tomcat服务器运行!!
>3.1 servlet程序的class码拷贝到WEB-INF/classes目录
>3.2 在web.xml文件中进行配置
url的组成
http://localhost:8080/3.3Pro/First
协议 主机名 端口
当浏览器输入http://localhost:8080/3.3Pro/First的时候,为什么servlet代码会执行呢?(掌握)
1.当我们在浏览器输入以上网址的时候,浏览器会向服务器发送请求,请求的网址就是上面的网址
2.服务器接收到请求之后,首先会/First 截取下来,然后从web.xml中查看是否有匹配的url-pattern
3.如果有存在的url-pattern,则找到url-pattern对应的servlet-name,然后根据servlet-name找到具体的类
4.通过反射技术来创建这个类的对象,然后这个对象就可以工作了
关于url-pattern匹配的路径:(掌握)
精确的路径: /First /First/xxx (注意点:/不能漏掉)
模糊的路径: /* .do .action
当输入的url有多个url-pattern匹配的时候,绝对匹配> /开头的模糊匹配>*.do结尾的模糊匹配
关于DefaultServlet:(掌握)
如果我们输入的网址是localhost:8080/3.3Pro/index.html
1.会从web.xml中查看是否有匹配index.html的url-pattern
2.如果没有,则会交给tomcat内置的一个叫做DefaultServlet来处理这个请求
3.DefaultServlet会从当前的web应用查找是否用index.html这个静态页面,如果有,则返回,如果没有则404错误
Servlet的生命周期:(掌握)
生命周期的四个方法:
1.构造方法 : 无论访问多少次,构造方法只会执行一次 (说明servlet对象是单实例的)
2.init方法 : 也会只执行一次
3.service方法 : 浏览器每访问一次,就会执行一次
4.destory方法 : 停止服务器或者重新部署应用的执行
关于Servlet的自动加载 : 启动tomat服务器的时候就创建servlet对象,对该对象进行初始化(掌握)
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.chinasofti.servlet.FirstServlet</servlet-class>
<load-on-startup>1</load-on-startup> //值越高 ,优先级越低
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/First</url-pattern>
</servlet-mapping>
关于GenericServlet中的init方法(了解)
注意:在GenericServlet中有两个init方法,一个是来自父接口(Servlet)中的init方法,这个方法在GenericServlet中已经被实现过了,所以GenericServlet子类无需再去实现该方法。
如果GenericServlet子类还需要再去做一些初始化工作,则直接重写GenericServlet类中的另外一个init方法就可以
(public void init() throws ServletException)