IDEA集成Tomcat
Servlet测试
web.xml配置与Servlet访问原理
Servlet生命周期与生命周期方法
Servlet注解配置省略web.xml
Servlet体系结构
url-pattern的三种配置方式
设置Tomcat资源更新方式
配置完之后再点configure是这样的
然后新建项目
然后右键运行
理论上来说每一次修改内容之后都需要重新启动Tomcat,为了更好的学习可以设置项目为热部署
新建一个类实现Servlet接口
package Servlet.firstServlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletTest implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
找到web.xml进行配置
然后重启Tomcat,在浏览器访问写好的Servlet
此时控制台就出现了我们的语句
并且你多刷新几次就会多出来几次
如果看这个路径不舒服也可以去修改一下
这样路径就变了
访问Servlet的路径为 :
http://localhost:8080/XiongYunFan/ServletTest1
首先浏览器通过http://localhost:8080找到Tomcat,然后通过XiongYunFan,也就是我们配置的虚拟目录名找到对应的项目,在该项目下找ServletTest1.先去解析web.xml,这里对应的就是url-pattern的内容,然后再去找和它一组的servlet-name,然后根据servlet-name 的内容相同就能找到servlet里面的servlet-name,进而找到同一组的servlet-class,也就是我们所编写的Servlet的实现类。找到实现类之后将全类名对应的字节码通过反射(Class.forName)加载进内存,然后创建它的对象(cls.newInstance()),通过对象调用方法
Servlet的生命周期方法有三个,init()、serveice()、destroy()
1、被创建:执行init()方法,只执行一次。默认情况下,在第一次被访问的时候创建,也可以指定为在服务器启动的时候就创建
第一次被访问时才创建,值为负整数;在服务器启动时就创建,值为0或正整数。此外Servlet的init方法只执行一次,说明对象只创建一个,也就是说Servlet是单例模式的,多个用户同时访问时可能存在线程安全问题,所以尽量不要在Servlet中定义成员变量或者定义之后不要去修改值
2、服务中:执行service()方法,每次访问都会执行
3、关闭服务器:只有正常关闭服务器,才会执行destroy()方法。在Servlet销毁之前执行,一般用于释放资源
package Servlet.firstServlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletLife implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化方法,只会执行一次");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("服务方法,每次访问都会执行");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁方法,在服务器正常关闭的时候执行一次");
}
}
Servlet3.0版本之后可以不创建web.xml了,可以支持注解配置
而且我们只需要写一个url-parttern了
访问该Servlet
Servlet是一个接口,下面有两个实现类,GenericServlet和HttpServlet,其中HttpServlet又继承了GenericServlet。
使用HttpServlet或者GenericServlet只需要完成service方法,不必整出那么多的方法了。那是因为这两个类给定了默认的方法,也是空实现
只有service方法还是抽象的,需要我们实现
我们要使用的是HttpServlet,他就能够完成所有的业务需求。并且它的service()方法会根据请求方式的不同去调用对应的方法
1、一个Servlet可以有多个别名
2、路径可以有多层,对应的访问时也需要访问对应的层级
3、使用通配符,则该路径下任意名字均指向该Servlet
每一次对项目中的文件做完改动都需要重启服务器十分麻烦,对于学习阶段来说也完全没必要,可以通过设置实现热部署
设置完要手动重启一下Tomcat服务器生效