传智播客---jsp的两种开发模式

最近休息了两天,为什么休息?因为老师也需要休息,因为传智播客的授课很人性化,因为学的知识很多很多,怕学生们吸收不掉,就给学生们休息时间缓存一下,吸收一下,这样你才能有能力跟着老师的进度去学。咱们传智播客给我的感觉就是,忙忙碌碌的为的就是让我们不要白学,为的就是让我们学有所成,为的就是让我们出去好找工作,为的就是让我们能找个高薪的工作,这真的是一切为学生,为学生一切,着想!如果有想培训的,我真心的建议大家来传智播客,不花一点冤枉钱,就能学到话很多钱都学不到的技术啊!!!

继续给大家晒晒我学到的知识喔!!!

JSP 两种开发模式:
 JSP model1 : JSP + JavaBean 组合 ,适合开发中小型简单应用,JSP负责业务流程控制、页面显示;JavaBean 负责数据封装和处理
 JSP model2 : Servlet + JSP + JavaBean 组合,符合MVC 设计模式,适合开发业务流程复杂大型应用,JSP
 只负责页面显示,JavaBean负责数据封装和处理,Servlet负责业务流程控制,JavaBean、JSP调度 --------- 分工明确,便于维护
什么是JavaBean : javaBean就是一个Java类,必须满足下面特点:
 1、public 的无参数构造函数
 2、属性必须 private
 3、为属性提供public 的 getter和setter方法,方法遵循一定命名规则
  如果有属性属性 name ----- 那么方法名必须是getName setName (属性首字母大写,在前面加上 get和set )
  属性 age ----- 方法 getAge setAge
在JSP中三个操作JavaBean 的动作标签:
 (1)<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
 (2)<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
 (3)<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

 1)<jsp:useBean id="p" class="cn.itcast.domain.Person" scope="page"></jsp:useBean>
 翻译为
 cn.itcast.domain.Person p = null;
    synchronized (_jspx_page_context) {
   p = (cn.itcast.domain.Person) _jspx_page_context.getAttribute("p", PageContext.PAGE_SCOPE);
   if (p == null){
     p = new cn.itcast.domain.Person();
     _jspx_page_context.setAttribute("p", p, PageContext.PAGE_SCOPE);
   }
 }
  属性scope=page是指在指定范围中查找 p 对象,如果存在,直接使用,不存在则创建新的Person对象 ,保存到page范围
 2)通过 jsp标签setProperty设置javabean对象的属性
 <jsp:setProperty property="name" name="p" value="李四"/>
 <jsp:setProperty property="age" name="p" value="20"/>
 property:要设置的javaBean属性
 name="p":要设置属性的对象
 value="李四":要设置的值
 3)通过jsp标签取出 javabean 属性getProperty
 <jsp:getProperty property="name" name="p"/>
 <jsp:getProperty property="age" name="p"/>
*****<jsp:setProperty name="p" property="*" /> 自动从请求参数中获取 变量与 指定javabean对象的属性 进行匹配 赋值
 


JSP model2开发 : Servlet + JSP + JavaBean
JSP 负责页面显示将数据处理后的结果显示给用户
JavaBean 负责数据封装和处理
Servlet 负责业务流程 控制、JavaBean JSP调度

model2程序开发步骤
1、客户端提交请求给Servlet
2、Servlet接收数据,封装数据到JavaBean中
3、Servlet调用JavaBean处理数据,得到处理结果
4、Servlet将数据处理结果传递给JSP
5、JSP生成响应页面,返回客户端

*Servlet 来接收客户端请求,将请求封装到java对象代码,在Servlet中编写
注意<jsp:setProperty property="*" name="calculator" /> 不能在Servlet代码中使用
什么内省:内省是JDK提供一套用来操作JavaBean 的 API -------- 内省底层是通过反射实现的
那么内省是如何识别JavaBean对象有哪些属性?
因为所有成员变量都是private,识别javabean属性不是通过成员变量,而是通过setter和getter方法
内省编程的步骤:
1、通过Introspector 获得 JavaBean对象 BeanInfo
 BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
2、通过BeanInfo 获得JavaBean对象 所有属性描述器 PropertyDescriptor
 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
3、遍历每个属性描述器,可以获得属性名称 getName()
4、通过属性描述器 获得属性读写方法
 Method setter = propertyDescriptor.getWriteMethod();
 Method getter = propertyDescriptor.getReadMethod();

* 通过内省技术 实现 setProperty="*" 相同效果代码(存在的问题是:没有处理类型转换问题)
在JSP模式二中要想实现请求数据向JavaBean自动封装可以使用BeanUtils框架来完成
* BeanUtils是Apache commons 组件包一个 是开源组件
使用BeanUtils需要下载开发包:
1、去官网下载开发包
下载commons-beanutils 同时下载 commons-loggin
2、将两个jar包 复制 WEB-INF/lib
3、编写BeanUtils 程序
 BeanUtils.populate(person, parameterMap);
 person是要分装数据的javaBean对象,
 parameterMap是request.getParameterMap()获取到提交上来的所有key和value,
 注意value是一个字符串数组因为一个key是可以对应多个value的

如果 JavaBean的属性是一个特殊类型,自定义转换器步骤:
1、编写类实现Converter接口
实现   convert(Class type, Object value)  方法
2、在BeanUtils.populate 封装之前,必须对转换器进行注册
通过 ConvertUtils 的 register(Converter converter, Class clazz)  注册转换器
MVC是设计模式,MVC是一种思想、程序架构思想
* 与23种常用设计模式无关
* MVC 规定整个web应用程序 架构思想
MVC 将web应用中程序分为三个部分 Model、View 、Controller

Model : 模型(数据封装处理)
View:视图 (web应用界面展示)
Controller:控制器 (调度模型和视图,完成调度和跳转 )
* 分工明确、条理清晰
JSP model2 就是符合MVC设计模式,JavaBean就是Model、JSP就是View 、Servlet就是Controller

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值