学生信息管理系统

用的是mvc设计模式

调用的模式是dao—-dao实现类—-service—service实现类—–servlet——前端页面

用c3p0数据库连接池和dbutil

查找所有学生

1,创建dao接口添加方法findallstudent返回值是一个list集合装的是student
2,创建dao实现类实现dao的方法findallstudent,

QueryRunner queryRunner=new QueryRunner(new ComboPooledDataSource(),new BeanListHandler<student>(student.class));
List<student> list=queryRunner.query("select * from student ");
return list;

3,创建一个service接口添加方法,findallstudent和dao的方法一样
4,创建一个service实现类添加方法findallstudent,
5,创建dao d=new daoimpl();
6,return d.findallstudent();
7,在servlet中调用service的findallstudent方法
然后将返回的list集合上传
8,设置跳转页面
request.setRequestDispatch(“list.jsp”).forWord(request,response);
在list.jsp页面使用jstl标签用foreach循环遍历list集合,用el表达式取出值

模糊查询

在表单内设置一个下拉列表框可以选择男女
按姓名查询:
<input type="text" name="sname"/>
&nbsp;
按性别查询:<select name="sgender">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select>
&nbsp;&nbsp;&nbsp;
<input type="submit" value="查询">

先判断模糊查询的条件是什么
如果是同时模糊查询姓名和性别
sql语句 select *from student where gender=?and name like?
如果只是查询性别
sql语句 select *from student where gender=?
如果只查询name
sql语句 select *from student where name like?

添加学生信息

在jsp页面添加一个表单让用户填入信息
其中性别是单选框
<input type="radio" name="gender" value="男">男<input type="radio" name="gender" value="女">女
爱好是复选框
<input type="checkbox" name="hobby" value="跳舞">跳舞<input type="checkbox" name="hobby" value="唱歌">唱歌<input type="checkbox" name="hobby" value="洗澡">洗澡
简介是文本域
<textarea name="info" rows="3" cols="20"></textarea></td>

表单设置跳转的是一个servlet
在servlet页面接收传过来的信息
其中爱好接收和其他类型不一样。String [] h = request.getParameterValues(“hobby”);
然后将h数组转为字符串String hobby=Arrays.toString(h);
因为数组转为字符串后会在开头和结尾加上[ ]俩个符号所以需要i截取一下字符。
hobby = hobby.substring(1, hobby.length()-1);

生日需要转格式
Date date= new SimpleDateFormat("yyyy-MM-dd").parse(birthday);

然后再dao内创建一个方法addstudent传入的参数就是表单输入的参数
再dao的实现类创建一个方法addstudent实现dao的方法
QueryRunner queryRunner=new QueryRunner(new ComboPooledDataSource());
queryRunner.update(“insert into student values(?,?,?,?,?)”,name,age,gender,…);
在service接口中添加da的方法
和上面套路一样,调用dao的方法用来返回

在servlet中调用servcie的方法进行添加

更新修改学生信息

点击更新链接跳转到servlet顺带传id
在dao创建一个根据id查询的方法将查到的学生信息封装到student中上传到servlet
然后页面跳转到更新界面
form表单用el表达式获取普通元素的值
<input type="text" name="sname" value="${stu.sname }">
单选框的值需要用jstl的if语句进行判断

如果包含男
<input type="radio" name="gender" value="男" &lt;c:if test="${stu.gender == '男'}">checked</c:if>>男
如果包含女
<input type="radio" name="gender" value="男" &lt;c:if test="${stu.gender == '女'}">checked</c:if>>女

复选框的值也需要用jstl 但并不是用c表达式而是用
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
fn表达式的contains判断是否包含
<input type="checkbox" name="hobby" value="游泳" &lt;c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳
<input type="checkbox" name="hobby" value="篮球" &lt;c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球
<input type="checkbox" name="hobby" value="足球" &lt;c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球
<input type="checkbox" name="hobby" value="看书" &lt;c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书
<input type="checkbox" name="hobby" value="写字" &lt;c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字

获取用户要修改的用户信息
生日需要转格式
Date date= new SimpleDateFormat(“yyyy-MM-dd”).parse(birthday);
爱好是string数组类型所以接数据的方式不一样
String【】 h=request。getParameterValues(“hobby”);
然后将数组转换为字符串
String hobby=Arrays。toString(h);
因为数组的前后有[]符号所以需要截取字段
hobby =h。subString(1,hobby。length()-1);
在dao内创建一个方法更新数据根据id
QueryRunner queryRunner=new QueryRunner(new ComboPoolDataSource());
queryRunner.update(“updata student set name=?,age=?,gender=?…);
然后再servlet内调用service即可

删除学生信息

创建js代码

“`

function doDelete(sid) {
    /* 如果这里弹出的对话框,用户点击的是确定,就马上去请求Servlet。 
    如何知道用户点击的是确定。
    如何在js的方法中请求servlet。 */
    var flag = confirm("是否确定删除?");
    if(flag){
        //表明点了确定。 访问servlet。 在当前标签页上打开 超链接,
        location.href="DeleteServlet?sid="+sid;
    }
}
“`
flag是bolean类型,点击确定返回的是true
location.href=“”是页面跳转
因为页面跳转的时候传递了id所以就可以实现根据id删除学生信息

分页显示学生信息

因为分页查询到的数据并不是规范的数据,所以需要重新对数据进行封装到Javabean中。
大概需要的数据有:
当前页数,总共页数,查询到数据,每页所显示的数据条数,一共有多少条数据。

当点击分页查询的时候,传入servlet的值有,当前页数,1,默认一页显示的数据5条。

在dao中的
查询学生信息的方法中需要传入的参数有当前页数,返回List select * form student limit 5 offset 5*(页数-1)可以完成分页查询。
查询总共有多少条数据的方法,不需要传入参数,返回值是int类型 Long result = (Long) runner.query(“SELECT COUNT(*) FROM stu” , new ScalarHandler() );

在service创建一个方法传入参数是当前页数返回值类型是javabean类型
用来处理封建进JavaBean中的数据
“` public PageBean findStudentByPage(int currentPage) throws SQLException {

    //封装分页的该页数据
    PageBean<Student> pageBean = new PageBean<Student>();

    int pageSize = StudentDao.PAGE_SIZE ;
    pageBean.setCurrentPage(currentPage); //设置当前页
    pageBean.setPageSize(pageSize); //设置每页显示多少记录

    StudentDao dao = new StudentDaoImpl() ;
    List<Student> list =dao .findStudentByPage(currentPage);
    pageBean.setList(list); //设置这一页的学生数据

    //总的记录数, 总的页数。
    int count = dao.findCount();
    pageBean.setTotalSize(count); //设置总的记录数
    //200 , 10 ==20   201 , 10 = 21   201 % 10 == 0 ?201 / 10 :201 % 10 + 1
    pageBean.setTotalPage(count % pageSize==0 ? count / pageSize : (count / pageSize) + 1); //总页数
    return pageBean;
}```

在servlet中调用service中的方法,将返回值传入前端

显示查到的学生信息

完善首页,上一页,下一页,当前页数,共几页,尾页
判断是否是第一页,是第一页就不显示
<a href ="servlet?当前页=1">首页</a>和< href="servlet 当前页=当前页-1"/>上一页</a>

for循环1到总共页数
点击数字跳转到指定页数
<a href ="servlet?当前页=i">首页</a>

判断是否是最后一页是就不显示
<a href ="servlet?当前页=总共页数">尾页</a>和< href="servlet 当前页=当前页+1"/>下一页</a>

dbutil的查找统计new的方法是ScalarHandler()

queryRunner.query("select count(*)from student "new ScalarHandler(),);

要源码私聊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值