JavaWeb简单的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式
JSP+JavaBean模式
Servlet+JSP+JavaBean模式
Servlet+JSP+JavaBean开发模式
在平时的JavaWeb项目开发中,在不使用第三方mvc开发框架的情况下,通常会选择Servlet+JSP+JavaBean开发模式来开发JavaWeb项目,Servlet+JSP+JavaBean组合开发就是一种MVC开发模式了,控制器(Controller)采用Servlet、模型(Model)采用JavaBean、视图(View)采用JSP。
MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。
标准Web MVC模型概述
如图(1)
Servlet+JSP+JavaBean开发模式 的MVC
如图(2)
JSP中的九个内置对象
JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。
如图(3)
pageContext对象,out对象,page对象
request,response,session,application,config这些对象在前面都已经作了详细的介绍,这里重点介绍一下剩下的pageContext对象,out对象,page对象。
page对象
page对象表示当前一个JSP页面,可以理解为一个对象本身this,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可。
out对象
out对象用于向客户端发送文本数据。 out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。JSP页面中的out对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter
pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
通过pageContext获得其他对象
java">getException方法返回exception隐式对象 getPage方法返回page隐式对象 getRequest方法返回request隐式对象 getResponse方法返回response隐式对象 getServletConfig方法返回config隐式对象 getServletContext方法返回application隐式对象 getSession方法返回session隐式对象 getOut方法返回out隐式对象
pageContext作为域对象
pageContext作为域对象
java">public void setAttribute(java.lang.String name,java.lang.Object value) public java.lang.Object getAttribute(java.lang.String name) public void removeAttribute(java.lang.String name) public java.lang.Object findAttribute(java.lang.String name)
当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
pageContext作为域对象
java">pageContext对象中封装了访问其它域的方法 public java.lang.Object getAttribute(java.lang.String name,int scope) public void setAttribute(java.lang.String name, java.lang.Object value,int scope) public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
java">PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE
四大作用域
JSP中提供了四种属性范围,四种属性范围分别指以下四种:
当前页(page):一个属性只能在一个页面中取得,跳转到其他页面无法取得
一次服务器请求(request):一个页面中设置的属性,只要经过了服务器跳转,则跳转之后的页面可以继续取得。
一次会话(session):一个用户设置的内容,只要是与此用户相关的页面一次会话周期内都可以访问(一个会话表示一个人,这个人设置的东西只要这个人不走,就依然有效)
上下文中(application):在整个服务器上设置的属性,所有人都可以访问
四种属性范围中都将包含以下的属性操作方法:
page作用域
request作用域
session作用域
application作用域
愿你有勇敢的朋友
也有牛逼的对手