1. JavaBean技术
1.1 JavaBean概述
- 早期的JSP开发方式需要将Java代码嵌入网页中,给修改和维护带来一定的困难
-
将Java代码单独封装成一个处理某种业务逻辑的类,然后再JSP页面中调用此类,可以降低HTML代码与Java代码之间的耦合度,简化JSP页面,这种类就是JavaBean组件
-
JavaBean特点:
- JavaBean必须具有一个无参的构造函数
- 属性必须私有化
- 私有化的属性必须通过public类型的方法暴露给其他程序,并且方法的命名也必须遵守一定的命名规范
1.2 JavaBean种类
- 可视化的JavaBean:一般用于Swing程序中,在Web开发中不会采用
- 非可视化的JavaBean:实现一些业务逻辑或封装一些业务对象
1.3 JavaBean的应用
-
获取JavaBean属性信息
<!--获取类的实例,其内部是通过调用类的默认构造方法实现的--> <jsp:useBean id="stu" class="com.why.Student"></jsp:useBean> <!--获取JavaBean中的属性,其内部是通过调用属性的getter()实现的--> <jsp:getProperty name="stu" property="password"></jsp:getProperty>
-
对JavaBean属性赋值
<jsp:setProperty name="stu" property="password" value="123"></jsp:setProperty> <!--表单信息中的属性最好设置成JavaBean中的属性名称,这样就可以通过<jsp:serProperty name="stu" property="*"/>的形式接收所有参数--> <jsp:userBean id="stu" class="com.why.Student"> <jsp:setProperty name="stu" property="*"></jsp:setProperty> </jsp:userBean>
2. 使用JavaBean解决中文乱码
-
创建对字符编码进行处理的JavaBean
public class CharactorEncoding{ public CharactorEncoding() {} public String toString(String str) { String text = ""; if(str != null && !"".equals(str)) { try{ //将字符串使用的"ISO-8859-1"转换为"UTF-8" text = new String(str.getBytes("ISO-8859-1"), "UTF-8"); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } } return text; } }
-
在jsp页面中使用方式
<jsp:userBean id="stu" class="com.why.Student"></jsp:userBean> <jsp:userBean id="encoding" class="com.why.CharactorEncoding"></jsp:userBean> <%=encoding.toString(stu.getName())%>
注意:在jsp页面使用Java代码调用JavaBean对象中的属性或方法,Java代码所使用的对象名为
<jsp:useBean>
中的id属性值
3. JSP开发模型
-
JSP早期模型的工作原理
-
JSP Model1
- 简单轻便,适合小型Web项目的快速开发
- 由图可知JSP Model1将封装数据和处理数据的业务交给了JavaBean组件,JSP只负责接收用户请求和调用JavaBean组件响应用户的请求
-
JSP Model2
- 采用 JSP + Servlet + JavaBean,将原本JSP页面中的流程控制代码提取出来,封装到Servlet中,实现页面显示、流程控制、业务逻辑的分离,Model2实际就是MVC设计模式
- Servlet充当了控制器的角色,它首先接收浏览器发送的请求,然后根据请求信息实例化JavaBean对象,由JavaBean对象完成数据库操作并将操作结果进行封装,最后选择相应的JSP页面将相应结果显示在浏览器中
4. MVC设计模式
- 模型(Model):负责管理应用程序的业务数据,定义访问控制以及修改这些数据的业务规则。当模型的状态发生变化时,它会通知视图发生改变,并为视图提供查询模型状态的方法
- 视图(View):负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器进行处理。当模型的状态发生改变时,视图会对用户界面进行同步更新,从而保存于模型数据的一致性
- 控制器(Controller):负责应用程序中处理用户交互的部分,它从视图中读取数据,控制用户输入,并向模型发送数据