- 浏览: 89537 次
文章分类
最新评论
第十五章:servlet和JSP的集成,模型-视图-控制器构架
一MVC的需求
1.MVC框架,在复杂的应用中,使用更为复杂精致的MVC框架有时会更有利,这些框架中最流行的是Apache Struts,尽管Struts很有用且被广泛采用,但实现MVC方案并不一定要使用Struts,对于简单和中等复杂的应用,使用RequestDispatcher从零开始实现MVC更为直观和灵活。
二、用RequestDispatcher实现MVC以下是步骤:
1.定义bean来表示数据(我们也可以理解他为结果bean:表示请求结果的java对象),我们在jsp中使用getProperty访问bean中的属性,我们不需要修改和创建bean,这些工作由servlet或其他java例程来做,因此,我们可以把这个bean定义为值对象:仅表示结果的对象,只是很少甚至根本没有任何其他功能。
2.编写servlet处理请求:servlet读取请求参数,请求报头,也可以使用populateBean方法填写表单bean,注意不是结果bean。特别要注意采用MVC方案时,servlet并不创建任何输出,输出完全由JSP页面来完成。
3.填写结果bean,读取请求参数之后,由servlet调用相应的商业逻辑或数据访问代码,获得最后的结果,然后将结果放置在第一步我们定义的bean中,也就是值对象中。
4.结果的存储,这一步当中,我们需要将这些bean存储在jsp页面能够访问的位置。servlet可以在3个位置存储JSP页面所需的数据,分别是,HttpServletRequest,HttpSession,ServletContext中。对应jsp:useBean的scope属性的3种非默认值。即request,session和application。比如
5.转发请求到JSP页面,转发请求使用RequestDispatcher的forward方法,RequestDispatcher的获取需要调用ServletRequest的getRequestDispatcher的方法并提供相对地址。我们可以指定WEB-INF目录中的地址,<核心方法>如果JSP页面只在由servlet生成的数据的上下文中才有意义,则可以将页面放置在WEB-INF目录中,这样servlet可以将请求转发到该页面,但客户不能直接访问他们。<重点提示>这里要注意RequestDispatcher的forward方法时,客户看到的是初始servlet的URL,而非最终JSP页面的URL。a.我们可以把请求转发到静态资源,但静态页面只能处理get请求,不能处理post请求,因为Post请求中的请求参数是在Http请求正文内,静态页面无法取出其参数。所以我们只要把静态页面的后缀改为jsp,就既可以处理get请求,也可以处理post请求。b.重定向替代转发,即使用response.sendRedirect ,这种用法适用于重新显示不完全的HTML表单,因为我们可以把之前创建的数据从会话中取出。而如果使用RequestDispatcher的forward方法,则无法把之前创建的数据信息取出。
从第二步到第五步,都是在servlet中编写。
6.从bean中提取数据。但要注意我们不在jsp页面中创建bean,所以使用<jsp:useBean id = "" type = ""/>而不是使用
三、目的页面中相对URL的解释。1.因为RequestDispatcher的forward方法只维护最初的servlet的URL,那么它所转到的页面的相对地址也是相对于原来的servlet,这几乎会产生错误,比如<link ref = "stylesheet" href = "my-styles.css" type = "text/css"> 这里的href相对的就是原来servlet中的地址,所以我们要把它改为绝对的URL
同样<img src = "">和<a href ="">也要注意这个问题。
四、从jsp页面转发请求
五、包含页面
1[size=medium][/size].转发forward的一种替代方案是包含include,servlet依旧依靠jsp也页面生成输出,但servlet调用不同的jsp页面生成最终页面的不同部分,事实上,RequestDispatcher的include方法就是jsp:include动作在后台调用的代码。
一MVC的需求
1.MVC框架,在复杂的应用中,使用更为复杂精致的MVC框架有时会更有利,这些框架中最流行的是Apache Struts,尽管Struts很有用且被广泛采用,但实现MVC方案并不一定要使用Struts,对于简单和中等复杂的应用,使用RequestDispatcher从零开始实现MVC更为直观和灵活。
二、用RequestDispatcher实现MVC以下是步骤:
1.定义bean来表示数据(我们也可以理解他为结果bean:表示请求结果的java对象),我们在jsp中使用getProperty访问bean中的属性,我们不需要修改和创建bean,这些工作由servlet或其他java例程来做,因此,我们可以把这个bean定义为值对象:仅表示结果的对象,只是很少甚至根本没有任何其他功能。
2.编写servlet处理请求:servlet读取请求参数,请求报头,也可以使用populateBean方法填写表单bean,注意不是结果bean。特别要注意采用MVC方案时,servlet并不创建任何输出,输出完全由JSP页面来完成。
3.填写结果bean,读取请求参数之后,由servlet调用相应的商业逻辑或数据访问代码,获得最后的结果,然后将结果放置在第一步我们定义的bean中,也就是值对象中。
4.结果的存储,这一步当中,我们需要将这些bean存储在jsp页面能够访问的位置。servlet可以在3个位置存储JSP页面所需的数据,分别是,HttpServletRequest,HttpSession,ServletContext中。对应jsp:useBean的scope属性的3种非默认值。即request,session和application。比如
request.setAttribute("key",value);session.setAttribute("key",value);getServletContext().setAttribute("key",value);
5.转发请求到JSP页面,转发请求使用RequestDispatcher的forward方法,RequestDispatcher的获取需要调用ServletRequest的getRequestDispatcher的方法并提供相对地址。我们可以指定WEB-INF目录中的地址,<核心方法>如果JSP页面只在由servlet生成的数据的上下文中才有意义,则可以将页面放置在WEB-INF目录中,这样servlet可以将请求转发到该页面,但客户不能直接访问他们。<重点提示>这里要注意RequestDispatcher的forward方法时,客户看到的是初始servlet的URL,而非最终JSP页面的URL。a.我们可以把请求转发到静态资源,但静态页面只能处理get请求,不能处理post请求,因为Post请求中的请求参数是在Http请求正文内,静态页面无法取出其参数。所以我们只要把静态页面的后缀改为jsp,就既可以处理get请求,也可以处理post请求。b.重定向替代转发,即使用response.sendRedirect ,这种用法适用于重新显示不完全的HTML表单,因为我们可以把之前创建的数据从会话中取出。而如果使用RequestDispatcher的forward方法,则无法把之前创建的数据信息取出。
从第二步到第五步,都是在servlet中编写。
6.从bean中提取数据。但要注意我们不在jsp页面中创建bean,所以使用<jsp:useBean id = "" type = ""/>而不是使用
<jsp:useBean id = "" class = ""/>。第二点要注意的是,我们一般不修改bean中的属性,所以我们不使用<jsp:setProperty/>
三、目的页面中相对URL的解释。1.因为RequestDispatcher的forward方法只维护最初的servlet的URL,那么它所转到的页面的相对地址也是相对于原来的servlet,这几乎会产生错误,比如<link ref = "stylesheet" href = "my-styles.css" type = "text/css"> 这里的href相对的就是原来servlet中的地址,所以我们要把它改为绝对的URL
<link ref = "stylesheet" href = "/path/my-styles.css" type = "text/css">,
同样<img src = "">和<a href ="">也要注意这个问题。
四、从jsp页面转发请求
<jsp:forward page = "relative url">
五、包含页面
1[size=medium][/size].转发forward的一种替代方案是包含include,servlet依旧依靠jsp也页面生成输出,但servlet调用不同的jsp页面生成最终页面的不同部分,事实上,RequestDispatcher的include方法就是jsp:include动作在后台调用的代码。
发表评论
-
servlet和jsp核心编程(第2版)第十六章 简化对Java代码的访问:jsp2.0表达式语言学习笔记
2012-08-23 21:49 772第十六章:简化对Java代 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 737第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 893第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 801第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 852第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 724第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 932第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 883第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 783第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记
2012-08-05 10:52 777第六章:服务器响应的生成:HTTP状态代码 核心方法: 1.在 ... -
servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记
2012-08-02 21:36 734第五章客户请求的处理:HTTP请求报头 核心方法: 1.在使用 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1264第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 744第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
第15章 servlet和jsp的集成:模型—视图—控制器构架 15.1 mvc的需求 15.2 用request dispatcher实现mvc 15.3 mvc代码汇总 15.4 目的页面中相对url的解释 15.5 mvc的应用:银行账户余额 15.6 3种数据...
JSP page指令 12、 在JSP页面中包含文件和applet 13、JavaBean组件在JSP文档中的应用 14、Servlet和JSP的集成:模型-视图-控制器构架 15、简化对Java代码的访问 JSP 2.0表达式语言 <br>
JSP page指令 12、 在JSP页面中包含文件和applet 13、JavaBean组件在JSP文档中的应用 14、Servlet和JSP的集成:模型-视图-控制器构架 15、简化对Java代码的访问 JSP 2.0表达式语言 <br>
本项目“jsp+javabean+servlet的MVC构架web应用”正是基于这一模式进行设计的。下面我们将详细探讨JSP、JavaBean和Servlet在MVC架构中的角色以及如何协同工作。 **1. JSP (JavaServer Pages)** JSP是Java平台上的...
JSP page指令 12、 在JSP页面中包含文件和applet 13、JavaBean组件在JSP文档中的应用 14、Servlet和JSP的集成:模型-视图-控制器构架 15、简化对Java代码的访问 JSP 2.0表达式语言 <br>
MVC设计模式是软件工程中的一种架构模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种分离使得开发过程更加模块化,降低了复杂性,提高了代码的可维护性和可重用性。 ...
3. **控制器(Controller)**:作为模型和视图之间的桥梁,接收用户的输入,调用模型进行处理,然后更新视图。控制器确保了模型和视图的独立性。 **三、JSP与MVC的结合** 在JSP中实现MVC构架,通常会将JSP页面划分...
【Spring的Web-MVC构架模式】是Spring框架的核心组件之一,主要负责处理Web应用程序的请求和响应。本文档是对Spring Web MVC模式的外文翻译,深入解析了Spring如何在Web开发中提供灵活且可扩展的架构。 1. **Spring...
- Spring鼓励使用标准技术(Servlet、JSP、JTA、JNDI、JDBC、JDO)以及兼容工具(Hibernate、Velocity、Log4J、Hessian/Burlap)进行集成。 - 当需要添加新功能时,Spring允许根据应用需求选择合适的技术,如...
- Spring MVC鼓励与标准技术(如Servlet、JSP、JTA、JNDI、JDBC、JDO)以及第三方工具(如Hibernate、Velocity、Log4J、Hessian/Burlap)集成,提供了灵活的选择。 7. **事务管理**: - Spring提供了多种事务管理...
- 在MVC架构中,Servlet常作为控制器,JSP作为视图,JavaBean作为模型,实现业务逻辑与视图的分离。 6. **JSP构架模型** - Model1:所有代码混杂在JSP中,不易维护,复用性差。 - Model2:引入JavaBean,提高了...
Spring的Web-MVC框架支持控制器、命令对象和模型视图模式的分离。与WebWork相比,Spring的控制器承担更明确的角色,而WebWork将这些角色整合在一个单一的对象中。Spring允许直接绑定业务对象,减少了在表单对象中...
【Spring的Web MVC构架模式】是Spring框架中的核心组件之一,主要负责处理Web应用程序的模型、视图和控制器的交互。Spring MVC以其高度模块化和可配置性,为开发者提供了一种优雅的方式来构建Web应用。 1. **构架...
Spring的web支持可以在任何Servlet容器中运行,如Tomcat或Resin,而且它不与特定的解决方案冲突,而是鼓励使用如Servlet、JSP、JTA、JNDI、JDBC和JDO等标准技术,以及Hibernate、Velocity、Log4J等工具进行集成。...
Spring支持独立的控制器、命令对象和用于视图渲染的模型数据。 5. J2EE集成与容器无关性: Spring Web MVC框架能够很好地与J2EE环境集成,但并不依赖特定的容器服务,如JTA或EJB。这使得Spring应用可以在任何兼容...
模型(Model)负责业务逻辑处理,视图(View)负责数据显示,控制器(Controller)负责接收用户请求,调度模型和视图进行交互。Struts通过Action类实现控制器功能,ActionForm对象作为模型与视图之间的数据载体。 *...
JSP Model 1混合了业务逻辑和视图,而Model 2则将它们分离,使用Servlet作为控制器,JSP作为视图,JavaBeans作为模型。尽管Model 2有所改进,但仍然存在多个Controller的问题,以及对页面导航的管理挑战。Struts通过...
2. **控制器**:负责处理具体的业务逻辑,与模型(Model)和视图(View)交互。Spring提供了多种类型的控制器,如`AbstractController`、`AbstractCommandController`、`MultiActionController`等,以满足不同的应用...
【Spring的Web MVC构架模式】是Spring框架的核心部分,为构建基于Java的Web应用程序提供了一种模型-视图-控制器(MVC)架构。该模式允许开发者将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可测试性...
6. **适应性与兼容性**:Spring的Web支持可以在任何Servlet容器中运行,如Tomcat或Resin,并鼓励与其他标准技术如Servlet、JSP、JTA、JNDI、JDBC和JDO集成。此外,Spring的模块化设计允许开发者根据需要选择使用JTA...