一、Model 2 的概念
在Model 1 中(如下图),逻辑和数据处理从JSP中分离出来。从而JSP可以单纯的只处理View动作。但是,逻辑和数据封装都被集中到了JavaBean中。因此我们就有了Model 2。 简单说来, Model 2 就是把逻辑和数据封装也区分开,把逻辑/控制 封装成Servlet,在服务器端运行。而JavaBean只封装数据,来与Data Base交互。这样,整体就符合MVC的设计理念了。
Model 1= jsp+javaBeans
MVC 设计模式: MVC(Model\View\Controller) 分离模型、控制和视图。
Model 2=Jsp(View)+JavaBeans(Model)+Sevlet(Controller)
二、Servlet 概述
Servlet:一个Java类,被服务器运行。是Jsp的前身。Jsp其实是Servlet的一种简化的code形式。可通过请求/响应
模型访问。
Tomcat容器等级:分为四个等级。 其中一个Context容器对应一个Web Project
HttpServlet 的父类(GenericServlet) implements 了Servlet接口,因此需要实现Init() service(), destory()三个方法
自定义Servlet的步骤:
1)继承于HttpServlet,重写doPost() doGet()
2)在XML中注册 Servlet (类似于Android中你要注册某个style/String 或之类的资源,然后才能在你的代码中使用
其实,eclipse/myEclipse 里有一个 new servlet的选项,比较方便,省了你自己继承和注册到XML。有点类似用new Activity的引导页的效果
<servlet>
<servlet-name>类命名</servlet-name>
<servlet-class>类位置</servlet-class>
</servlet>
<Servlet-mapping>
<servlet-name>类命名</servlet-name>
<url-pattern>访问的url路径</url-pattern>
</Servlet-mapping>
servlet 生命周期:
Servlet 实际调用流程:
1)网页页面处罚请求(post or get)。
2)在XML中检索<servlet-name>,找到匹配的则根据〈servlet-class〉向服务器请求对应的servlet类。
3)服务器执行对应servlet的doGet() or doPost() 方法。(下图service方法判断调用哪个)
对应下图来看,以上流程很清晰了。
servlet 一旦被实例化,将永久驻留内存。
servlet 在三种情况下会被装载到容器。
1)预装载:xml中<servlet> </servlet>标签中包含 如下标签
〈loadon-startup〉1〈/loadon-startup〉 数字越小,优先级越高
初次调用装载:
2)servlet容器启动后,用户首次发出请求;
3)servlet 修改后;
Servlet 9大内置对象
1)out resp.getWriter() 返回
2)request service方法中的req参数
3)response service 方法中的resp参数
4)session req.getSession
5)application getServletContext
6)exception Throwable
7)page this
8)pageContext pageContext
9) config getServletConfig()