Servlet配置
开发环境:IDEA
原因:客户端/浏览器不能直接访问Servlet。因为有权限限制,只能通过映射的方式来间接访问。
方式一:在web.xml里面进行配置
方式二:基于注解(为了简化步骤)
直接在自己定义的Servlet类前面加注解
括号里的内容要和自己想要再浏览器中访问的地址一致。
上述两种配置方式结果完全一样。
Servlet生命周期
测试生命周期的执行过程
@WebServlet("/myservlet")
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println(“servlet初始化”);
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
/*String id=servletRequest.getParameter("id");
System.out.println("我接收到客户端的请求了,参数值是"+id);
servletResponse.setContentType("text/html;charset=utf-8");
servletResponse.getWriter().write("收到,over");*/
System.out.println("servlet执行了业务方法");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("servlet销毁");
}
}
只有这三个有输出的才是Servlet的生命周期方法。
注解:初始化方法只执行了一次,访问多少次,就执行多少次service方法。
关闭Tomact的时候,才会执行destroy方法。
注意:非静态的方法的调用必须要借助一个对象,对象的创建是由一个Tomact容器来完成。
反射创建对象都是调用无参的方法。
添上无参的构造方法
运行结果
在浏览器端访问的时候,看到控制台输出的内容。最后停止Tomact后,它会释放srvlet对象。
反射是动态创建,不通过New的方式,也不用自己创建。
Servlet生命周期:
1、当浏览器访问Servlet的时候,Tomact会查询当前Servlet的实例对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执行第三步。
2、调用init方法完成初始化操作。(只调用一次)
3、调用service方法完成业务逻辑操作。
4、关闭Tomact时,会调用destroy方法,释放当前对象所占用的资源。
Servlet生命周期方法:无参构造方法、init、service、destroy。
1、无参构造方法只调用一次,创建对象。
2、init只调用一次,初始化对象。
3、service调用n次。
4、destroy只调用一次,销毁对象。
总结:对Servlet生命周期有了更清晰的认识,对它的生命周期方法也有了更清晰的认识。