Servlet规范
1、Servlet 规范是SUN公司提供一套规范
2、Servlet 规范管理所有的Http服务器
3、Servlet 规范禁止Http服务器直接调用网站中普通Java类(entity/util/dao/service)
4、Servlet 规范要求Http服务器调用【Servlet接口实现类】来帮助Http服务器对普通Java类进行调用
5、Servlet 规范为了更好帮助Http服务器调用网站中Java类,还提供了一组辅助接口。
6、Servlet 规范只提供了辅助的接口并没有提供接口实现类。这些辅助接口的实现类由Http服务器厂商提供
7、Tomcat服务器对于Servlet规范中提供的接口实现类存放(servlet-api.java)
8、所有Servlet接口的实现类的实例对象只能由Http服务器创建
Servlet规范学习计划
1、掌握Servlet接口实现类开发
基于XML文件方式:通过指定标签告知Tomcat服务器,当前项目那些类是Servlet接口实现类基于注解方式:通过注解去关联Servlet接口实现类,从而让Http服务器了解当前类的身份
2、掌握HttpServletRequest和HttpServletResponse使用
3、掌握Servlet之间相互调用规则(服务(service)之间调用)
4、掌握Servlet之间数据共享规则
5、了解监听器接口和过滤器接口(SpringMVC框架--ContextLoaderListener监听器接口实现类和CharacterEncodingFilter过滤器接口实现类
Servlet实现类开发
定义OneServlet类继承实现类
//OneServlet extends HttpServlet extends GenericServlet implements Servlet, ServletConfig, Serializable
public class OneServlet extends HttpServlet {
//当浏览器以GET方式发送请求,向Tomcat申请OneServlet时,Tomcat负责调用OneServlet中的doGet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setStatus(303);
resp.addCookie(new Cookie("cookie", "123123123"));
System.out.println("success");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
基于XML文件方式实现前后端交互
<!--locahost:8080/tomcat/one-->
<!--第一步:将OneServlet的接口实现类的全限定名称交给Tomcat-->
<servlet>
<servlet-name>key1</servlet-name>
<servlet-class>icu.sandink.control.OneServlet</servlet-class>
</servlet>
<!--第二步:为Servlet接口实现类提供一个对外别名-->
<servlet-mapping>
<servlet-name>key1</servlet-name>
<!--servlet接口实现类对外的别名应该以‘/’开头-->
<url-pattern>/one</url-pattern>
</servlet-mapping>
基于@注解方式实现前后端交互
//TwoServlet.class.getDeclaredAnnotation(WebServlet.class);
//locahost:8080/tomcat/two
@WebServlet(name = "TwoServlet", value = "/two")
public class TwoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("this is two");
}
}
Servlet对象的生命周期
1、Servlet规范中,要求所有规范中相关接口的实现类的实例对象只能由Http服务器来创建与初始化
2、实例对象创建时机:
1)在正常情况下,只有在Http服务器接收到用户对某个Servlet的请求时,才会创建这个Servlet的实例对象
2)在特殊情况下,可以通过“loadonstartup”通知Http服务器在启动过程中来创建指定的Servlet实例对象——SpringMVC框架(DispatcherServlet)
3、Servlet实例对象创建个数:
为了节省内存。在Http服务器运行期间【一个Servlet接口实现类只能被创建一个实例对象】
4、销毁时机:
在Tomcat准备关闭时,负责销毁掉所有的Servlet实例对象
在OneServlet类中定义私有属性
Tomcat在调用类后会自动调用init方法
public class OneServlet extends HttpServlet {
private Integer sId;
private