`

servlet和jsp核心编程(第2版)第三章servlet基础学习笔记

 
阅读更多
第三章:servlet基础
核心方法:
1.使用HTML验证器检查由您servlet所生成的页面的语法。
HTML文档中包括<!DOCTYPE...>
这个就是告诉HTML验证器我们使用的是那个HTML版本,从而验证器知道用哪种规范对文档进行检查。验证器所在页面为:
www.htmlhelp.com/tools/validator。
2.如果需要同等处理GET和POST,可以让其中之一调用另一个,不要覆盖service方法。

警告
1.必须在传送实际的文档之前设定内容的类型。
2.不要让高流量的servlet实现SIngleThreadModel。servlet规范2.4不赞成使用SingleThreadModel,因为SingleThreadModel是针对单一实例,让所有请求排队,减少了性能,此外,如果我们产生多个实例来实现SingleThreadModel那么每个实例就会拥有自己的实例变量,就无法完成同步,所以我们需要使用明确的synchronized的代码块实现代码级的共享。
心得笔记
1.如果你发现自己在out.println()多次重复相同的代码,我们可以创建简单的实用工具类,来简化这些构造。比如
public class ServletUtilities{
	public static final String DOCTYPE = "";
	public static final String headWithTitle(String title){
		return (DOCTYPE +"\n"+"<HTML>\n" +"<head><title>"+title+"</title><head>\n");
	}
}

2.servlet的生命周期,首次创建servlet时。它的inti方法会得到调用,因此,inti是放置一次性设置代码的地方,在这之后,针对每个用户请求,都会创建一个线程,该线程调用service()方法,多个并发请求一般会导致多个线程同时调用service(),之后,由
service方法依据接收到的HTTP请求的类型,调用doGet,doPost或其他doXxx方法,最后服务器决定卸载某个servlet,会首先调用servlet的destroy方法。

3.service方法,GET请求起因于正常的URL请求,或没有指定METHOD的HTML表单。
a.service中已经拥有对options和Trace请求的自动支持,所以我们可以不写doOptions和doTrace
4.init方法,a.常见初始化。b.由初始化参数控制的初始化,这种方式使管理员无需修改servlet的源代码。就可以将servlet在机器间移动,以及改变特定的参数。
这种方式非常依赖于部署描述文件web.xml。a.通过向web.xml的servlet元素添加init-param,可以指定初始化参数的名称和值,然后servlet的inti方法中,调用getServletConfig,获取ServletConfig对象的引用,然后调用ServletConfig的getInitParameter方法,返回值就是init参数的值,或者null——由于我们没有设置。
5.SingleThreadModel接口:a.系统只生成servlet的单一实例,之后为每个用户请求创建新的线程。注意多个线程并不共享局部变量,而共享全局变量(或者叫成员变量,全局变量又包括类变量和实例变量),所以需要对共享的变量予以保护。这里就要理解下为什么不共享局部变量,因为如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝,一个线程对该局部变量的改变不会影响到其他的线程。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics