<pre>
day11
昨天内容回顾
(1)jsp
*jsp的三个指令
*jsp里面九个内置对象
request
response
session
config
application
exception
page
out:out输出机制
pageContext
(2)javabean
*jsp的动作标签
*beanutils框架
(3)el表达式
*el表达式获取域对象里面的值
*el表达式获取域对象里面数组,集合,对象的属性的值
思维导图
1、jstl的简介
*和指令taglib一起使用,替代页面中的<%%>
*JavaServerPages Standard Tag Library:jsp标准的标签库
*第一步:想要使用jstl,首先需要导入jar包
*jstl版本 1.0 1.1和1.2
**1.0版本出现j2ee1.4时代,jsp里面不支持el表达式
*第二步:如果想要在jsp里面使用jstl,需要在页面上写指令taglib,在指令里面引入标签库
= <%@ taglib uri="标签库的路径" prefix="标签库的别名" %>
= <%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c" %>
*jstl的入门案例
=代码
<%
inti =5;
if(i== 5) {
%>
<h1>5</h1>
<%
}else {
%>
<h2>other</h2>
<%
}
%>
<hr/>
<!-- 使用jstl标签实现上面的效果-->
<c:set var="m"value="10"></c:set>
<c:if test="${m==10 }">
<h1>10</h1>
</c:if>
<c:if test="${m!=10 } }">
<h1>other</h1>
</c:if>
2、jstl的if标签和choose标签
*if标签:条件的判断
**写法: <c:if test="条件"></c:if>
**在jstl里面没有<c:else>标签
*choose标签:条件的判断,类似于java里面switch语句
=代码
<!-- choose标签的使用 -->
<!--
switch(m){
case2:
break;
case3:
break;
default:
.....
}
-->
<c:set var="a"value="50"></c:set>
<c:choose> //类似于java里面switch语句
<c:whentest="${a==3 }"> //类似于java里面 case语句
<h1>3</h1>
</c:when>
<c:whentest="${a==5 }">
<h1>5</h1>
</c:when>
<c:otherwise> //类似于java里面default
<h1>other</h1>
</c:otherwise>
</c:choose>
3、jstl的forEach标签的使用(*****)
(1)遍历域对象里面的数组、集合(list、set、map),域对象里面的多个对象的属性的值
*实现遍历操作的标签
*写法: <c:forEach var="" items="域对象里面的值"></c:forEach>
操作一:遍历域对象里面的数组的值
=代码:
<!-- forEach标签的使用 -->
<!-- 使用jstl的标签遍历域对象里面的数组的值 -->
<%
//定义数组
String[]arr = {"zhangsan","lucy","wangwu"};
//把数组放到域对象里面
request.setAttribute("arr",arr);
%>
<!-- 使用el表达式通过下标获取-->
${arr[0] }
<hr/>
<%--
for(String a:arr) {}
--%>
<c:forEach var="a"items="${arr }">
${a}<br/>
</c:forEach>
操作二:遍历域对象里面list、set集合的值
=代码一:
<%--
类似于java增强for for(String l : list) {}
--%>
<c:forEach var="l"items="${list }">
${l}<br/>
</c:forEach>
=代码二:
<!--
for(Strings:set) {}
-->
<!-- 使用jstl的标签遍历set里面的值 -->
<c:forEach var="s"items="${set }">
${s}
</c:forEach>
操作三:遍历域对象里面的map集合的值
=代码
<!-- 使用jstl标签遍历map集合里面的值 -->
<%
Map<String,String>map = new HashMap<String,String>();
map.put("aaa","AAA");
map.put("bbb","BBB");
map.put("ccc","CCC");
request.setAttribute("map",map);
%>
<!-- 类似于遍历map的一种方式:得到key-value的关系 -->
<c:forEach var="m" items="${map}">
${m.key},${m.value }<br/>
</c:forEach>
操作四:有多个对象stu,把多个对象放到域对象里面,jstl遍历域对象里面的多个对象
=代码
<!-- 把多个对象放到域对象里面 -->
<%
Useruser1 = new User();
user1.setId("1");
user1.setUsername("zhangsan");
user1.setPassword("123456");
Useruser2 = new User();
user2.setId("2");
user2.setUsername("lisi");
user2.setPassword("3333");
//如何把多个对象放到与对象里面?
//首先创建一个集合,把多个对象放到集合里面
//最终把集合放到域对象里面
List<User>list = new ArrayList<User>();
list.add(user1);
list.add(user2);
request.setAttribute("list",list);
%>
<!-- 使用jstl标签获取域对象里面多个对象的值 -->
<!--
for(User user : list) {}
-->
<c:forEach var="l"items="${list }">
${l.id},${l.username },${l.password }<br/>
</c:forEach>
4、jsp的开发模式
*jsp的开发模式有两种
*模型一和模型二
(1)模型一:使用技术jsp+javabean
(2)模型二:使用技术jsp+servlet+javabean
*mvc:
**m:模型,使用javabean技术,封装数据
**v:视图,使用技术jsp,显示数据
**c:控制器:使用servlet技术,控制哪个javabean里面的数据显示到哪个jsp里面
***处理数据:写service类处理数据
5、使用mvc的模式实现登录的功能
(1)准备工作:
*划分包结构
**cn.itcast.bean: javabean的包
**cn.itcast.servlet: 放servlet类
**cn.itcast.service: 处理数据
**cn.itcast.utils: 操作的工具类(比如操作数据库的工具类)
*创建登录页面
**创建在webroot下面 mvc/login.jsp
*导入jar包
**操作数据库的jar包
**封装数据到javabean框架jar包
**jstl的jar包
*创建数据库,创建表
* 复制操作数据库的工具类和配置文件
(2)开始开发
*在login.jsp页面中创建表单提交到servlet里面
*实现servlet:
servlet里面进行的操作
**得到提交的数据
**把数据封装到javabean
**调用service里面的方法实现判断用户名和密码
=代码片段:
**在servlet里面代码
==//调用service里面的方法实现判断用户名和密码
UserServiceservice = new UserService();
booleanflag = service.checkUser(user);
=====================================================================
上午内容的总结
(1)jstl标签(if、choose、forEach)
(2)jsp开发模式
*模型二(mvc模式)
(3)使用mvc模式开发系统
*mvc模式开发登录功能(mvc的代码的结构)
6、javaee三层架构介绍
*画图分析结构
*javaee三层结构:web层,业务逻辑层,持久化层
*dao模式:数据访问对象,专注于对数据库进行操作的模式
*dao的实现:
第一步:创建一个操作数据库表的接口
第二步:创建这个接口的实现类,实现接口的里面的放
*在业务逻辑层通过dao的接口调用里面的方法,实现功能
*要求:在dao里面传递数据的时候,一般都是使用对象形式进行传递
*mvc和dao模式
**不同的时期由不同的人提出两种模式;mvc是开发人员提出的,dao是sun公司提出的。
***dao只是用在持久化层,mvc是系统整体的架构
7、练习二:使用mvc+dao模式实现登录功能
(1)准备工作
*划分包结构
**cn.itcast.bean: javabean的包
**cn.itcast.servlet: 放servlet类
**cn.itcast.service: 处理数据
**cn.itcast.dao: 写dao接口和实现类
**cn.itcast.utils: 操作的工具类(比如操作数据库的工具类)
*导入jar包
*创建数据库,创建表
*复制操作数据库的工具类和配置文件
(2)在service里面需要调用dao里面的方法实现功能
=代码
UserDAOdao = new UserDAOImpl();
booleanflag = dao.checkUserName(user);
(3)在dao包里面定义一个接口,创建一个实现类
8、练习三:使用dao+mvc模式实现注册的功能
(1)实现思路:
**首先创建一个注册页面
**在注册页面中写表单,提交到servlet里面
**在servlet里面获取提交的数据,封装到javabean里面,调用service里面的方法实现功能
**在service里面调用dao里面的方法实现
**注册功能最终目的:向数据库表里面添加一条记录
(2)注册时候有id值,想要id值每次都不相同(每次都是唯一的一个值)
*有两种解决方法
第一种:创建表时候,把id字段设置成主键,让主键自动增长
*create table t1(
idint primay key auto_increment
)
**如果想要某个字段字段增长,类型必须是int类型
*sql语句: insert into table values(null,'','');
第二种: 手动生成一个唯一随机的字符串,把字符串封装到javabean里面,完成添加
*毫秒数
*使用工具类生成唯一的字符串: UUID是一个工具类,
***这个工具类里面有一个方法randomUUID() 可以生成唯一的字符串
Stringuuid = UUID.randomUUID().toString();
//去掉-
uuid= uuid.replaceAll("-", "");
第三种:如果输入id值,可以到数据库去查看,如果有相同的id,不进行添加
9、练习四:使用dao+mvc模式实现显示所有的用户功能
(1)实现思路:
*首先查询表里面的所有的记录
**表里面的每条记录都是一个user对象,有多个user对象
**把多个user对象放到list集合里面
**把list集合放到域对象里面
*创建一个页面,在页面中获取域对象里面list集合的值,显示到页面上
(2)封装数据到list集合的代码
List<User>list = new ArrayList<User>();
while(rs.next()){
//创建user对象
Useruser = new User();
Stringid = rs.getString("id");
Stringusername = rs.getString("username");
Stringpassword = rs.getString("password");
//设置值到user对象里面
user.setId(id);
user.setUsername(username);
user.setPassword(password);
//把每次封装的对象放到list里面
list.add(user);
}
(3)在页面中获取域对象里面list集合的值
<c:forEach var="user"items="${list }">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
</tr>
</c:forEach>
10、使用json数据进行显示所有的用户
(1)如何生成json格式。json插件可以生成json的数据格式
*json插件如果想要使用,首先导入jar包()
(2)转换成json格式的代码
JSONArrayjson = JSONArray.fromObject(list);
(3)在jsp里面使用js显示json的数据
var user = ${json};
vartab = "<table border='1'>";
//遍历数组
for(var i=0;i<user.length;i++) {
var u1 = user[i];
var id = u1.id;
var username = u1.username;
var password = u1.password;
tab += "<tr><td>"+id+"</td><td>"+username+"</td><td>"+password+"</td></tr>"
}
tab+= "</table>";
//把表格写到div里面
vardiv1 = document.getElementById("div1");
div1.innerHTML = tab;
===========================================================
今天内容的总结
(1)jstl里面三个标签
*重点掌握forEach
(2)掌握mvc的开发模式
(3)dao的模式
(4)掌握使用dao+mvc模式实现登录、注册、显示所有用户
(5)掌握list集合如何转换成json格式,js里面获取json的数据
完成的任务
(1)使用dao+mvc模式实现登录、注册、显示所有用户代码至少写两遍
(2)使用daom+mvc模式实现删除记录的功能
</pre>