【Java】联系人练习

本文详细介绍了如何使用Java Web技术实现联系人管理系统的各项功能,包括显示所有联系人、添加联系人、删除联系人以及分页展示。通过Servlet、Service、DAO三层架构,结合DBUtils工具进行数据库操作,实现了数据的CRUD操作。分页功能利用PageBean对象存储分页信息,确保了数据的高效展示。此外,还讨论了更新联系人信息的流程。
摘要由CSDN通过智能技术生成

1.显示所有联系人

  1. 用户在浏览器发送请求,linkMan?method=findAll

  2. Servlet接收请求处理

    //1.调用service处理获得List<LinkMan>对象集合数据
    //2.将List<LinkMan>对象集合数据存储到request域对象中
    //3.使用request转发跳转到list.jsp页面【获取request作用域中存储的数据 在页面进行填充展示】
  3. Service处理

    //1.调用dao层处理,获得List<LinkMan>对象集合数据返回
  4. dao处理

    //1.使用DBUtils查询所有联系人数据,封装结果集到List<LinkMan>,返回
  5. Servlet将数据传给页面,list.jsp加载数据展示

    //1.使用jstl标签forEach进行遍历加载显示
    <c:forEach var="linkman" items="${list}">
        <tr>
            <td>${linkman.id}</td>
            <td>${linkman.name}</td>
            <td>${linkman.sex}</td>
            <td>${linkman.age}</td>
            <td>${linkman.address}</td>
            <td>${linkman.qq}</td>
            <td>${linkman.email}</td>
        </tr>
    </c:forEach>

2.添加联系人

  1. 点击添加联系人跳转到add.jsp页面

  2. 在add.jsp页面填写联系人信息提交到LinkManServlet

  3. LinkManServlet处理

    //1.获取请求参数,将联系人信息封装到LinkMan javabean中
    //2.调用LinkManService完成业务处理 将LinkeMan对象添加到数据库
    //3.添加之后,响应显示所有联系人给用户
  4. LinkManService处理

    //调用LinkManDao操作数据库将LinkMan存入数据库
  5. LinkManDao处理

    //使用DBUtils操作数据库将LinkMan插入到DB中
  6. 在增删改查操作时,

    查询显示最好选择转发即可

    增删改选择重定向(转发地址栏不变,刷新时可能会导致二次加载或出现异常)

3.删除联系人

  1. 流程:点击删除按钮-->弹窗确认对话框-->点击确定向后台发起删除请求-->重新查询所有联系人显示

  2. 思路

    1. 编写js函数deleteById(id)

      • 获取要删除的联系人id

      • 发起删除请求 ==location.href = "linkMan?method=delete&id="+id;==

    2. 编写Servlet

      1. 获取要删除的联系人id

      2. 调用业务处理

      3. 响应 无论删除成功还是失败 都重新查询数据库展示所有联系人

    3. 编写Service

    4. 编写Dao

      1. 操作数据库 删除一条联系人记录

4.分页展示联系人

utils

package com.itheima.bean;

import java.io.Serializable;
import java.util.List;

public class PageBean implements Serializable {
    private int curPageNo;      //当前页码
    private int pageSize;       //每页显示条数
    private long total;         //总条数   原因:因为select  count(*) from 表 返回的结果是long类型
    private int pages;          //总页数
    private List<LinkMan> list; //每页显示的数据

    @Override
    public String toString() {
        return "PageBean{" +
                "curPageNo=" + curPageNo +
                ", pageSize=" + pageSize +
                ", total=" + total +
                ", pages=" + pages +
                ", list=" + list +
                '}';
    }

    public PageBean() {
    }

    public PageBean(int curPageNo, int pageSize, long total, int pages, List<LinkMan> list) {
        this.curPageNo = curPageNo;
        this.pageSize = pageSize;
        this.total = total;
        this.pages = pages;
        this.list = list;
    }

    public int getCurPageNo() {
        return curPageNo;
    }

    public void setCurPageNo(int curPageNo) {
        this.curPageNo = curPageNo;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public List<LinkMan> getList() {
        return list;
    }

    public void setList(List<LinkMan> list) {
        this.list = list;
    }
}

  

web 


//    1.获取当前请求参数【当前页码:curPageNo 每页显示条数:pageSize】
//    如果前端每页传递当前页面,默认显示第一页,如果传递,安装指定页码查询
//    如果前端没有设置每页要显示的条数,就默认每页显示5条
//    2.调用业务处理,返回pageBean对象
//    3.响应
//    3.1,。将pageBean对象存入request作用域
//    3.2.使用转发跳转list_page.jsp进行分页展示

service

//    1.调用dao
//    1.1 查询总条数
//    1.2 查询每页显示数据
//    2.将分页数据封装到pageBean对象
//    计算总页数
//    3.返回pageBean对象

数据库技术

--1.分页  limit关键字
select * from 表 limit a,b;
--a:表示起始位置 a=(当前页码-1)*b
--b:表示每页显示条数

--2.查询总记录数 long
select count(*) from 表

--3.计算总页数
pages = total%pageSize==0?total/pageSize:total/pageSize+1;
  1. 前端发起查询分页展示,传递当前页码,不传默认显示第1页
     ==linkMan?method=findPage&curPageNo=2==
  
  2. LinkManServlet
    //1.获取分页查询的当前页码curPageNo和每页显示条数pageSize
       如果curPageNo和pageSize没有,就自定义设置当前查询时第1页,并设置每页显示5条
     //2.调用Service查询得到PageBean对象,存入到Request作用域中
     //3.转发到list_page.jsp页面进行分页显示
   
 3. LinkManService
     //封装返回PageBean对象
    //1.调用dao查询总条数封装到PageBean属性中
     //2.根据当前页码调用dao查询当前页数据封装到PageBean的list中
     //3.返回PageBean对象
     
  4.LinkManDao
 //1.查询总条数
  long findCount(){}
  //2.查询当前页数据
 List<LinkMan> findList(curPageNo,pageSize){}

5.PageBean优化【使用泛型】

6.模块Servlet优化

去掉if判断,使用反射

反射 根据传入的方法名进行方法动态调用

//特点:①每个方法名都和method参数名称相同  ②每个方法的参数都是一样的
        //优化:根据method参数值去调用相应的方法执行处理请求   使用反射:Method对象.invoke(Object o,params...);
        //    1.获取字节码对象
        //    2.根据方法获取指定的method对象
        //getMethod():获取的是public修饰的方法    getDeclaredMethod():获取当前类中任意修饰符修饰的方法
        //    3.使用method对象调用方法

 7.更新联系人

public void findById(HttpServletRequest request,HttpServletResponse response){
    //1.获取要修改联系人的id
    //2.调用service根据id查询联系人信息返回
    //3.响应
    //3.1:将要修改的联系人数据存入到request作用域中
    //3.2:转发到update.jsp页面填充数据显示
}
//根据id修改联系人
public void update(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    //1.获取要修改的联系人信息
    //2.调用service处理
    //3.响应 重新查询所有联系人数据,跳转到list.jsp页面显示
}

 传送门:

https://gitee.com/li-ear/ee_case.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值