本章目录
6.1 应用 Servlet API(一)
6.1.1 Servlet 类的层次结构
6.1.2 使用 Servlet API 的原则
6.1.3 重定向与转发
6.1.4 实践练习
6.2 应用 Servlet API(二)
6.2.1 ServletConfig 接口
6.2.2 ServletContext 接口
6.2.3 实践练习
6.3 MVC(一)
6.3.1 Model 1 架构模式简介
6.3.2 Model 1 的体系结构图
6.3.3 Model1 架构模式的优缺点
6.3.4 实践练习
6.4 MVC(二)
6.4.1 Model 2 架构模式
6.4.1 Model 2 的体系结构图
6.4.1 Model2 架构模式的优缺点
6.4.1 Model 1 与 Model 2 的比较
6.4.2 MVC 的概念及优缺点
6.4.2 MVC 的优缺点
6.4.3 实践练习
总结:
Servlet API 中定义了一整套的接口和类,使开发人员能够很容易地开发一个 Servlet
ServletAPI接口和类的继承层次如图:
开发人员编写的 Servlet,通常继承自 HttpServlet 类,然后重写其中的某些方法,使用原则如下:
实际开发中大多数重写doGet、doPost居多
重定向与转发,均用于实现 Web 应用程序中资源的跳转
使用时其主要区别如下:
示例:创建两个Servlet,第一个Servlet中存入数据到request中,分别使用转发和重定向跳转至第二个Servlet,查看数据和地址栏情况
Servlet2关键代码
PrintWriter out = response.getWriter();
// 判断请求属性中的值是否存在,存在则输出
if (request.getAttribute("name") == null) {
out.print(" 无法获取请求属性中的值 !");
} else {
// 否则输出请求属性中的值
out.print(request.getAttribute("name").toString());
}
重定向方式无法取出request中的数据
在实际开发中,两者的选择原则如下:
在 Web 容器初始化一个 Servlet 实例时,会为当前的 Servlet 准备一个唯一的 ServletConfig 实例配置对象。ServletConfig 对象能读取配置在 web.xml 文件中对应Servlet 配置的初始化参数
注意:ServletConfig只能针对当前配置的Servlet有效
配置Servlet的时候,在web.xml中配置该servlet的初始参数值
ConfigServlet
com.exam.ConfigServlet
uid
scott
pwd
tiger
每个参数由参数名和参数值组成
具体Servlet中可以读取配置的参数
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
// 获取 ServletConfig 实例
ServletConfig config = this.getServletConfig();
// 获取指定名称的初始化参数的字符串值
String uid = config.getInitParameter("uid"); //uid是配置时的参数名称
String pwd = config.getInitParameter("pwd");
out.print("servlet 初始化参数 uid 的值是:" + uid + "
");
out.print("servlet 初始化参数 pwd 的值是:" + pwd + "
");
ServletContext可以实现多个Servlet获取相同的初始化参数值,它不属于某一个Servlet所有,而是Web 应用程序的上下文环境的参数
注意:多个Servlet都可以读取ServletContext中配置的初始化参数值
在web.xml中配置ServletContext上下文全局参数
appName
java web 应用程序
ContextServlet
com.exam.ContextServlet
ContextServlet
/context
上下文参数是全局配置,不是配置在某一个servlet内
每个Servlet中都可以读取上下文初始化的参数
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
// 获取 ServletContext 对象
ServletContext context = this.getServletContext();
// 获取指定名称的 Web 应用程序的上下文初始参数的字符串值
String appName = context.getInitParameter("appName");
out.print(" 获取的 Web 应用程序的上下文初始参数值为:
" + appName + "");
JSP 的 Model 1 和 Model 2 是 SUN 公司为了更好地指导 Web 开发人员进行 JavaWeb 开发提出的两种架构模式,本质区别在于处理批量请求的位置不同
Model1 就是 JSP+JavaBean模式,其职责如下:
Model 1 体系结构就是 JSP+JavaBean模式,其工作流程如下:
Model 1 是较为早期的一种JavaWeb应用模式,有着明显的优缺点
Model2 就 是JSP+Servlet+JavaBean 模式。它吸取了两种技术各自的突出优点,其各部分职责如下
Model 2体系结构就是 JSP+Servlet+JavaBean模式,其工作流程如下
Model 2 模式更好的结合了Model1的优缺点改进而来,其优缺点如下
MVC 全名是 Model View Controller,一种软件设计典范,用一种业务数据、逻辑、界面显示分离的方法组织代码,各部分职责如下
使用 MVC 的目的是将 M和 V 实现代码分离,从而使同一个程序可以使用不同的表现形式。C 存在的目的则是确保 M 和 V 的同步,一旦M 改变,V 应该同步更新,更好地调节 M 和 V 的搭配
MVC 模式实现了功能模块和显示模块的分离,还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性,其表现的优缺点如下
MVC 具有以下优点:
MVC 的缺点: