1.澄清动态网页和动态HTML网页的区别:
动态网页:web服务器端动态创建的网页,在不同时间段访问可能产生不同的效果。
动态HTML:是在客户端使用脚本文件产生的一种动态效果。是浏览器解释执行的。
最主要的区别在于在不同时间段查看前者的源文件都是不同的,而后者的源文件都是相同的源文件,尽管在不同的时间段表现出来的效果不一样。
2.浏览器、引擎、API和动态网页程序之间的关系:
Servlet是一个java类,由具有web服务器调用和启动运行,它负责处理它所对应的一个或一组URL地址的访问请求。并接受客户端发出的访问请求信息和产生响应信息。
3.两个重要的概念:
C/S:Client/Server,客户端直接和数据库打交道。Java里面用Swing写的GUI程序就是基于C/S的,其缺陷为:第一.如果每个客户端程序都与数据库保持持久的连接但是数据库系统支持的并发连接有限的话,就限制了同时运行的客户端程序的数目。其次,业务逻辑处理和界面显示都由客户端程序负责处理,一旦有地方要发生变化,则需要对整个客户端程序进行修改,这就变的相当的难以维护。
B/S:Browere/Server,与前者最明显的区别在于此种架构是将用户操作界面以网页的形式展现给了客户端,它分成了三层:即客户端和web服务器、数据库。这样客户端不再直接和数据库打交道了。实现了界面显示和业务逻辑处理的分离。
4.在前面的文章中已经体验过写第一个Servlet程序,对其中的一些步骤和概念都做过一些简单的说明,这里详细的介绍一下Servlet映射的问题。打开 ‘WEB应用程序目录/WEB-INF/web.xml’,假如我们现在已经有这么一段:
<servlet>
<servlet-name>AnyName</servlet-name>
<servlet-class>org.it315.HelloServlet</servlet-class>
</servlet>
上面这段代码表示我们已经注册了一个Servlet,其注册名为AnyName,现在我们要映射这个注册名的访问路径,可以这样做:
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>/demo/hello.html</url-pattern>
</servlet-mapping>
<url-pattern>元素以正斜杠开头,这个正斜杠代表web应用程序的根目录,注意不是整个站点的根目录,上面这个设置后就可以这样来访问HelloServlet:http://localhost:8080/demo/hello.html,对于同一个Servlet可以被映射到多个URL上,也可以使用*通配符,但是只能用下面两种格式:一,‘*.扩展名’,在*前面不能加/,另一种形式是以/开头,并以/*结尾,中间是任意合法的标识符,当Servlet引擎接收到一个访问请求时,它将采取最具体匹配原则来查找请求URL的映射,其中,‘*.扩展名’优先级最低。我们有时候在网页地址栏上看到后缀名为.html或者其他一些URL时可以带参数,就是因为它们在设置映射URL时使用了这里说到的几种方法中的一种。
5.Serlvet激活器:invoker
打开conf/web.xml文件,会看到这么一段Servlet的注册信息:
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
此注册名为invoker的Servlet是在全局web.xml中配置的,它的作用就是去激活和调用其他的Servlet,它通过<load-on-startup>元素被设置成了Tomcat一启动就被加载,在每个web应用程序中为Servlet激活器所映射的访问路径可以各不相同,但是必须以‘/*’结尾,这样就使得即使某个Servlet程序没有在web.xml中注册也只需要通过Servlet激活器所映射的访问路径中的通配符(*)替换为这个Servlet的完整类名就可以调用这个Servlet了。
6.缺省的Servlet
如果某个Servlet的映射路径仅仅为一个/,那么它就是一个缺省的Servlet,凡是在web.xml中找不到映射匹配的都交给缺省的Servlet处理。当访问Tomcat服务器上面的静态HTML页面,图片,flash等等时,其实都时交给这个缺省的Servlet去处理。这个缺省的Servlet通常的处理方式就是把静态资源中的内容按字节原封不动的读出来然后传递给客户端,并且生成一定的响应消息头字段。
7.编写一个自动编译工具
我们在命令行窗口编译java源文件通常有以下两个特殊要求:
一.把servlet-api.jar文件加入到CLASSPATH中,
二.编译servlet源文件到指定的WEB-INF/classes中,
我们在初学阶段每次编写完一个servlet文件都要编译,现在就使用一种偷懒的好方法,自己来编写一个编译工具,步骤如下:
新建一个compile.bat文件,其内容如下
set CLASSPATH=%CLASSPATH%;<TOMCAT安装目录>/common/lib/servlet-api.jar
javac -d <web应用程序目录>/WEB-INF/classes %1
pause
以后只要在windows的资源管理器窗口中把某个要编译的java源文件拖动到此compile.bat批处理文件上就可以编译完成,其中的%1表示要传递给这个批处理文件的第一个参数,即这个java文件名。pause语句的作用是让此文件执行完成后等待用户输入。这样便于查看编译结果。关于批处理的讲解在前面文章中有过专门的介绍。有兴趣的朋友可以参考参考。
8.设置默认网页
可以在conf/web.xml文件中加入如下一段代码:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
这样如果你只输入web应用程序根目录而没加具体文件名的话Tomcat就默认进此url映射的文件了。