浏览器不能直接访问Servlet文件,只能通过映射的方式来间接访问Servlet,映射需要开发者手动配置,有两周配置方式。
基于XML文件的配置方式(Servlet详解一)
基于注解的方式(替代了XML配置方式)
上述两种配置方式完全一致,将demo1与MyServlet进行映射,即在浏览器地址种直接访问demo就可以映射到MyServlet。
Servlet的生命周期
1.当浏览器访问Servlet的时候,Tomcat会查询当前Servlet的实例化对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执行第3步。
2.调用init方法完成初始化操作。
3.调用service方法完成业务逻辑操作。
4.关闭tomcat时,会调用destory方法,释放当前对象所占用的资源。
Servlet的生命周期方法:无参构造函数,init,service,destory
1.无参构造函数只调用一次,创建对象
2.init只调用一次,初始化对象
3.service调用N次,执行业务方法
4.destory只调用一次,卸载对象
启动Tomcat后,发现控制台有输出
网页每刷新一次,就是发送一次请求,就会调用一次service方法,不会调用init
service是非静态方法,调用时,必须通过对象
只创建一个对象,反复调用
关掉Tomcat服务,调用Destrory
创建对象是由Tomcat服务器来完成,通过反射机制来创建对象,通过反射机制拿到构造函数
刷新的时候,调用service方法
看Tomcat如何调用无参构造
代码包裹,sourround with的快捷键是Ctrl+Alt+T
把两个异常合并,找到它们的父类就行
运行main方法
报错找不到类方法,加载不了Servlet,因为Servlet要在Web环境中才能找到,启动tomcat,才能加载,TomcatTest.java是java环境
解决办法,把jar包导进来
把servlet-api.jar拷到lib文件夹下面
重新运行一下,把构造器输出了
construct用来描述无参构造方法public MyServlet()
construct.newInstance();等于是在调用无参构造方法, 等于new MyServlet。
正常情况下,是直接调对象的方法。反射机制是先拿到方法,再对这个方法的对象进行操作。