【黑马程序员】第11课:JSTL标签+JSP开发模式

<pre>

day11

昨天内容回顾

(1)jsp

*jsp的三个指令

*jsp里面九个内置对象

request

response

session

config

application

exception

page

out:out输出机制

pageContext

(2)javabean

*jsp的动作标签

*beanutils框架

(3)el表达式

*el表达式获取域对象里面的值

*el表达式获取域对象里面数组,集合,对象的属性的值

 思维导图

1jstl的简介

*和指令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>

2jstlif标签和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>

3jstlforEach标签的使用(*****

(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>

4jsp的开发模式

*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>

时间: 2024-12-24 20:28:16

【黑马程序员】第11课:JSTL标签+JSP开发模式的相关文章

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

【黑马程序员】————#include 和 多文件团队开发

一.      #include 1.      预处理指令 2.      #include的作用 纯粹是文件拷贝 3.      #include <stdio.h> stdio.h中有什么?链接的时候做了什么事情 <>和””的区别: 自定义的文件用"",系统自带的文件用<> 4.      #include的路径问题 默认是同路径. 二.      .h文件和.c文件的分工 1.单文件的坏处 1>一个文件的内容太多,不利于阅读.调试 2&

黑马程序员:2016互联网大会告诉你前端开发的前景

  6月21日,由中国互联网协会主办的第十五届中国互联网大会在北京国际会议中心举行,黑马程序员在现场开设线上直播,揭开互联网大会的神秘面纱.我们从主播带回的信息分析一下前端开发的前景究竟如何: 先来看看相关数据(数据统计截至到2015年底) 1.互联网普及过半.我国网民规模达6.8826亿,普及率为50.3% .专家预测2020年全民普及率将达76%. 2.手机网民规模达6.1981亿,占网民90.1%. 3.移动上网设备比例进一步增长. 4.互联网行业位居创投案例第一位,IT行业紧随其后.  

黑马程序员 C语言多文件对团队开发问题

多文件团队开发问题 团体合作在今天很重要,进入公司就需要如何协作分工,比如,微信软件,有人编写登录:有人实现朋友添加功能:有人负责朋友圈等等,这样的大型的软件开发,多个人编写一个程序情况下,是不行的.会有许多问题.对这样问题解决就出现了多文件共同开发.大家通力合作,各做各的功能,最后把它们连接起来.实现整体功能.今天看了个多文件t团队开发,这里边说的是张三只做main()函数,李四做函数声明.张三计算成绩的平均值时,就调用李四编写的平均值函数.张三.c文件的main()函数. #include<

应试教育之后,我在黑马程序员找到突破口

正在上高三的弟弟前几天打电话告诉我说"姐姐,我们现在晚自习要上到晚上十一点,今年6月的高考把班级每个学生都弄得人心惶惶--"我突然想起自己当年的高考来-- 高考,于我而言已经是六年前的事情了.但每每提及高考,我仍然会从心底升起一层压力,偶尔在工作或生活中遇到难题,晚上做梦都会梦到自己坐在考场里答题的场景,由此可见高考成了我挥之不去的梦魇.再加之最近应试教育的负面新闻频出,我在搜索引擎中键入"应试教育"四个字,出现的新闻都是:"应试教育还在消磨孩子的个性&q

黑马程序员_spring2.5视频教程--视频列表

\黑马程序员_spring2.5视频教程\01Struts相关基础理论介绍.mp4; \黑马程序员_spring2.5视频教程\02搭建struts开发环境.mp4; \黑马程序员_spring2.5视频教程\03用struts开发简单的登陆示例程序.mp4; \黑马程序员_spring2.5视频教程\10.使用构造器装配属性.mp4; \黑马程序员_spring2.5视频教程\11Resource注解完成属性装配.mp4; \黑马程序员_spring2.5视频教程\12编码剖析@Resourc

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

黑马程序员——java高新---注解、泛型等

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.注解 什么是注解? 答:对于过时的语句,java会提示过时了,通过@SuppressWarnings("Deprecation")可以在DOS命令行中取消提示,但Eclipse无法取消.这就是注解,相当于标记.编译器.开发工具.javac通过反射获得注解里的内容,进而明确应该做什么.不应该做什么.注解可以加在包.类.属性.方法.参数及局部变量之上.一个注解就是一个类. java.

黑马程序员-入学笔试题

笔试结束,列一下笔试题和我的解答,最后得分29.7. 1. 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value. package com.itheima; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Test1 { public static void m