25@JSP_day13
1、自定义标签
step1 写一个java类,继承SimpleTagSupport类
step2 override doTag()方法,在该方法中,编写处理逻辑。
step3 在.tld文件当中,描述标签。.tld文件必须放在WEB-INF\下或者放在jar文件中的META-INF下。
<body-content>empty</body-content>:
该标签没有标签体。
<body-content>scriptless</body-content>:
该标签可以有标签体,但是,标签体的内容不允许出现 <% %>, <%= %>, <%! %>
<body-content>JSP</body-content>:
该标签可以有标签体,标签体的内容可以是<% %>, <%= %>, <%! %>。JSP只有复杂标签技术才支持,简单标签技术只支持 empty,scriptless。
练习:
写一个DateTag, 输出当前系统日期,比如
输出 2012-06-05
2、el函数
step1 使用taglib指令导入函数
step2 使用el函数
3、自定义el函数
step1 写一个java类,提供public static方法。
step2 在public static方法里,实现处理逻辑。
step3 在.tld文件当中描述函数。
${fn1:concat(str1,str2)}
练习:
写一个el函数 toUpperCase,将字符串变成大写。
${fn1:toUpperCase(str)}
4、如果使用的javaee的版本是5.0以上,需要注意如下几点:
1),servlet2.5规范当中,要求容器默认情况下,忽略el表达式。使用<%@page isELIgnored="false"%> ,让容器不要忽略el表达式。
2)如果要使用jstl,应该将jstl-1.2.jar 拷贝到WEB-INF\lib下。
5、mvc
1)什么是mvc? (model,view,controller)
是一种软件架构的思想,将一个软件的组成部分划分成三种不同类型的模块:
模型: 封装业务逻辑。
封装指的是,首先要实现业务逻辑,其次,应该为模型提供相应的接口(也就是说,通过接口来调用模型提供的功能,这样,当模型的实现发生了改变,只有接口不变,不会影响到调用者),最后,模型的输出应该与显示无关。
业务逻辑指的是,首先是业务逻辑本身(即按照一定的业务规则对数据进行加工的过程),另外,还包括为了保证业务逻辑能够正常执行的基础服务(比如事务、安全、日志等等)。
视图: 实现表示逻辑(将模型提供的数据以合适的方式展现给用户;另外,视图还要提供相应的操作界面,方便用户向系统发送请求)。
控制器: 用来协调视图和模型。当用户通过视图向系统发送请求时,请求先交给控制器,控制器依据请求调用相应的模型来处理;另外,模型处理的结果先发送给控制器,控制器选择合适的视图将处理结果展现给用户。
2)在web应用当中,如何使用mvc(使用java平台)?
a,模型
使用java类来实现(或者是ejb,spring javabean等来实现,可以利用应用服务器提供的一些基础服务)。
b,视图
使用jsp(或者是模板技术,JSF等等)
c,控制器
使用servlet(或者是filter)
使用mvc来开发bmi应用
step1 实现模型
step2 测试模型
step3 实现视图
step4 实现控制器
step5 部署,运行
练习:
给bmi_form.jsp添加表单验证,要求身高
体重不能为空并且必须是数字。
mvc的优点和缺点
3)mvc的优点
a, 可以实现模型的复用。
模型不关心返回的数据以什么样的方式显示出来,模型返回数据可以使用不同的视图来表示。用户也可以通过不同的界面来访问模型。
b,模型写完之后,可以立即测试(如果业务逻辑写在了servlet或者jsp里,需要部署之后才能测试。
c, 方便分工协作
d,方便代码的维护
按照mvc思想,我们可以将一个系统分层,分别是表示层(v,c)、业务层(m)、持久层(m中数据访问相关的部分)。
分层之后,下一层的代码发生改变,只要接口不变,不会影响到上一层的代码(比如dao的实现发生了改变,不会影响到业务层)。另外,还可以方便对某一层进行具体的代码优化。
4) 缺点
使用mvc之后,会增加设计的难度以及代码量,相应的开发成本也会增加。
5)例外
jsp + javabean: 由jsp充当控制器与视图,业务逻辑仍然使用java类来实现。
友交
create table f_user(
id int primary key auto_increment,
username varchar(20) unique,
name varchar(50),
pwd varchar(20),
age int,
gender char(1),
phone varchar(20)
);
create table f_pic(
id int primary key auto_increment,
picName varchar(50),
userId int
);
网上申请贷款
实现模型
建表 t_account
create table t_account(
id int primary key auto_increment,
accountNo varchar(16) unique,
balance double
);
insert into t_account(accountNo,balance)
values('6225881003192222',1000);