最近要做一个servlet改修的项目,正好借此机会复习下servlet,好多年不用了,看看能想起来多少.
servlet的命名 Server + Applet =Servlet 意为服务器端的小程序
JSP就是Java Server Page,Java服务器页面的意思
其实java虚拟机是不认识jsp这种东西的, jsp在被使用的时候会被容器转换成servlet,然后被调用.
你去的你tomcat目录下的work\Catalina\localhost\下这个文件夹里能找到和你项目同名的文件,这里有你jsp转成的servlet的.java和class文件
Servlet是服务器端小程序,其产生早于JSP,后来发现直接在Servlet里输出用户web界面很困难,就诞生了JSP,其专门用于辅助servlet进行web页面的展示,即作为web开发的表现层。JSP其实在服务器端还是首先被编译为servlet(一般在客户第一次访问的时候),所以其实质还是一种特殊的servlet,只不过一般专用于页面的展现.
我的理解是,JSP更像一个模板,很多东西是固定的,程序员只需要关注其中的java代码的实现就可以了.
而servlet没有模板,它的输出完全是依赖java代码来完成,就连页面中的"<tr>""<td>"这种标签都要程序手动写到java代码里.
Servlet生命周期
装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。
Server创建一个Servlet的实例
Server调用Servlet的init()方法
一个客户端的请求到达Server
Server创建一个请求对象
Server创建一个响应对象
Server激活Servlet的service()方法,传递请求和响应对象作为参数
service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。
对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。
servlet的工作模式
客户端发送请求至服务器
服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
服务器将响应返回客户端