HttpServlet
1.HttpServlet在实现Servlet接口的时候,重写了Service()方法,该方法内部会自动判断请求方式,如果为Get则自动调用doGet(),如果为Post则自动调用doPost(),因此我们在创建Servlet时只要重写doGet(),doPost()方法,而不需要重写Service()。
Servlet开发细节
1.注册Servlet,主要通过servlet节点的<servlet-name> 和 <servlet-class>
2.映射Servlet,主要通过servlet-mapping节点的<servlet-name>和<url-pattern>
3.同一个Servlet可以被映射到多个URL上去,通过多个< servlet-name >相同的<servlet-mapping>来实现
4.<url-pattern>中可以使用通配符,一种格式是*.扩展名,另一种格式是/开头,/*结尾
5.调用servlet的java程序叫做servlet引擎。
Servlet的线程安全问题
1.当多个客户并发访问同一个Servlet时,web服务器会为每个请求创建一个线程调用Service方法,如果Service方法中访问了同一个资源就会引发线程安全问题。
如果某个Servlet实现了SingleThreadModel接口,那么Servlet引擎将会以单线程的模式调用Service方法。
ServletConfig对象
1.在Servlet的配置文件中可以使用一个或多个<init-param>标签为Servlet配置初始化参数,web服务器会在创建Servlet对象时,将这些参数封装在ServletConfig对象中,因此我们可以通过ServletConfig对象来获取一个Servlet的初始化参数。通常将Servlet运行时要读取的配置文件写在这里。
ServletContext对象
1.ServletContext对象代表了一个应用,他是一个Context域对象,它里面的方法主要是一些全局性的方法,可以用来存储各个Servlet之间的共享数据。
2.ServletContext对象的应用场景,主要用于Servlet之间数据共享(可以用来做聊天室),获取web应用的初始化参数,实现Servlet转发,读取资源文件。
3.配置web应用的初始化参数,在web.xml文件中使用标签<context-param>,通常在这里配置数据库连接,
4.Servlet的转发和重定向,转发(你来请求我,我将请求转给他),通常转发给jsp用来美化输出,重定向(你来请求我,我让你重新请求他)
6.如果在<servlet>中配置了<load-on-startup>元素则服务棋会在启动时就加载并创建Servlet对象。
7.如果某个Servlet的映射路径是’/’则该Servlet是缺省Servlet,他处理所有其他Servlet都不处理的请求。(所有的请求都是访问Servlet的,访问网页资源的时候正是通过缺省Servlet来实现的)
Context表示环境,上下文,所以ServletContext就表示Servlet的环境和上下文,说白了ServletContext就是盛放Servlet实例的容器.
一个web应用 有一个ServletContext 包含多个servlet |
|