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

<pre>

 

day11

 

昨天内容回顾

         1jsp

         *jsp的三个指令

         *jsp里面九个内置对象

                   request

                   response

                   session

                   config

                   application

                   exception

                   page

                   outout输出机制

                   pageContext

 

         2javabean

         *jsp的动作标签

         *beanutils框架

 

         3el表达式

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

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

 思维导图

 

wKiom1Wb8OKgbcCmAAEs17lNX-8571.jpg

1jstl的简介

         *和指令taglib一起使用,替代页面中的<%%>

         *JavaServerPages Standard Tag Library:jsp标准的标签库

        

         *第一步:想要使用jstl,首先需要导入jar

 

         *jstl版本 1.0  1.11.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)遍历域对象里面的数组、集合(listsetmap),域对象里面的多个对象的属性的值

         *实现遍历操作的标签

         *写法: <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>

 

         操作二:遍历域对象里面listset集合的值

         =代码一:

              <%--

                   类似于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

         **jstljar

        

         *创建数据库,创建表

 

         * 复制操作数据库的工具类和配置文件

 

         2)开始开发

         *login.jsp页面中创建表单提交到servlet里面

         *实现servlet

                   servlet里面进行的操作

                   **得到提交的数据

                   **把数据封装到javabean

                   **调用service里面的方法实现判断用户名和密码

        

         =代码片段:

         **servlet里面代码

         ==//调用service里面的方法实现判断用户名和密码

                   UserServiceservice = new UserService();

                   booleanflag = service.checkUser(user);

 

=====================================================================

         上午内容的总结

         1jstl标签(ifchooseforEach

 

         2jsp开发模式

                   *模型二(mvc模式)

        

         3)使用mvc模式开发系统

                   *mvc模式开发登录功能(mvc的代码的结构)

        

6javaee三层架构介绍

         *画图分析结构

         *javaee三层结构:web层,业务逻辑层,持久化层

         *dao模式:数据访问对象,专注于对数据库进行操作的模式

         *dao的实现:

         第一步:创建一个操作数据库表的接口

         第二步:创建这个接口的实现类,实现接口的里面的放

         *在业务逻辑层通过dao的接口调用里面的方法,实现功能

 

         *要求:在dao里面传递数据的时候,一般都是使用对象形式进行传递

 

         *mvcdao模式

         **不同的时期由不同的人提出两种模式;mvc是开发人员提出的,daosun公司提出的。

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

 

 

===========================================================

         今天内容的总结

         1jstl里面三个标签

                   *重点掌握forEach

         2)掌握mvc的开发模式

         3dao的模式

         4)掌握使用dao+mvc模式实现登录、注册、显示所有用户

         5)掌握list集合如何转换成json格式,js里面获取json的数据

 

         完成的任务

         1)使用dao+mvc模式实现登录、注册、显示所有用户代码至少写两遍

         2)使用daom+mvc模式实现删除记录的功能


</pre>

你可能感兴趣的:(黑马课程)