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

本文转自屠夫章哥  51CTO博客,原文链接:http://blog.51cto.com/4259297/1671860,如需转载请自行联系原作者

【HM】第11课:JSTL标签+JSP开发模式相关推荐

  1. JSP开发模式(四种模式)

    JSP 程序开发模式包括 JSP 编程.JSP+JavaBean 编程.JSP+JavaBean+Servlet 编程.MVC 模式. 单纯的JSP编程 在 JSP 编程模式下,通过应用 JSP 中的 ...

  2. JSP开发模式--Model 2模式(二)

    Model 2模式,即为JSP+JavaBeans+Servlet模式, 这是因为该模式在开发中将显示数据.控制页面跳转.数据层操作分别交给JSP.Servlet .javaBean进行处理 Mode ...

  3. el元素与jstl标签

    el元素与jstl标签 MVC开发模式 jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet开发,如果过度使用jsp,在jsp中即 ...

  4. 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)

    文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...

  5. 方立勋_30天掌握JavaWeb_JavaBean、mvc开发模式、el表达式、jstl标签

    什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露 ...

  6. JSP开发2(案例)

    JSP开发2(案例) 学习目标 学习内容 学习产出 1 环境准备 1.1 创建工程 1.2 创建包 1.3 创建表 1.4 创建实体类 1.5 准备mybatis环境 2 查询所有 2.1 编写Bra ...

  7. JAVAWEB开发模式之JSP的几种开发模式、处理Cookie中文乱码

    JSP开发模式 SUN公司推出JSP技术后,同时也推荐了两种WEB应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean ...

  8. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  9. java day41【JSP 、MVC开发模式 、EL表达式 、JSTL标签 、三层架构】

    第一章  JSP 1. 指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> * 分类: 1. page : ...

最新文章

  1. freebsd 域名服务器
  2. 【Paper】2021_Synchronization of Resilient Complex Networks Under Attacks
  3. 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...
  4. Qt Creator添加套件
  5. Java 将字符串转换为字符数组 toCharArray()
  6. Linux单用户模式、救援模式、克隆虚拟机与Linux机器互相登录
  7. 八种状态增加测试用例状态的精确度
  8. 【转】DICOM之Print!!!!!!!!!
  9. 海康+萤石云+云存储多少钱一个月_400万极清画质 萤石C6Wi智能家居摄像机
  10. flume 写入文件服务器,Flume环境配置以及基本操作
  11. Splash resource_timeout 属性
  12. F-Stack KNI配置注意事项
  13. 13 大论坛同开播!数百专家带你从机器学习技术与工程实践,聊到开源生态 | AI ProCon 2020...
  14. mongooes怎么链接mysql_如何使用Node + Mongoose连接远程MongoDB数据库
  15. POJ - 3494
  16. linux下使用 sb接口扫描仪,怎样在Linux下设置和使用扫描仪.doc
  17. Windows Server 2016 安装.NET Framework 3.5 错误处理
  18. 一名女程序员的职业规划
  19. python处理excel数据画曲线图_python读取excel数据绘制简单曲线图的完整步骤记录...
  20. 泰坦尼克号幸存预测项目

热门文章

  1. 给Eclipse提速的7个技巧
  2. mysql dba系统学习(14)mysql用户管理之一、二
  3. Oracle编程入门经典 第11章 过程、函数和程序包
  4. Python脚本图解
  5. 逃出你的肖申克(四):理智与情感
  6. OPNsense 18.7.X汉化包发布!
  7. Spring MVC 4.1 支持jsonp
  8. linux关闭在线登录用户
  9. asp.net 页面之间跳转的几种方法及区别(转)
  10. TCP之深入浅出send和recv