User user=(User)list.get(i); %> <%=user.getId() %> <%=user.getName() %> 删除 修改 <% } %>
2.add.jsp添加新数据页面:
注意utf-8
注意form的提交方式post,
交给doAdd.jsp页面处理。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> 用户名: 密码:
3.doAdd.jsp处理新添加的数据。
导包,改变编码
四大步骤:转码,传参,调用Dao层方法,页面跳转
注意:跳转必须用response.sendRedirect("index.jsp");不能用request.getRequestDispatcher("index.jsp").forward(request,response);否则会出现按下刷新键就重复添加数据。
<%@ page language="java" import="java.util.*,dao.*,dao.impl.*,entity.*" pageEncoding="utf-8"%> <% //转码 request.setCharacterEncoding("utf-8"); //传参 String name=request.getParameter("name"); String password=request.getParameter("password"); //调用DAO层方法 UserDao userDao=new UserDaoImpl(); User user=new User(); user.setName(name); user.setPassword(password); int i=userDao.add(user); //跳转 if(i>0){ response.sendRedirect("index.jsp"); }else{ request.getRequestDispatcher("add.jsp").forward(request,response); } %>
实现删除数据:
1.index.jsp界面:
在增加功能中已经给出。上拉查看。
传参语句是:
<%=user.getId() %> <%=user.getName() %> 删除 修改 2.doDelete.jsp
原理是和添加一样的
<%@ page language="java" import="java.util.*,dao.*,dao.impl.*,entity.*" pageEncoding="utf-8"%> <% //转码 request.setCharacterEncoding("utf-8");//只能转post,不能转get //接收参数 id int id=Integer.parseInt( request.getParameter("id")); //调用DAO层方法 UserDao userDao=new UserDaoImpl(); int i=userDao.delete(id); //跳转 if(i>0){ request.getRequestDispatcher("index.jsp").forward(request,response); }else{ request.getRequestDispatcher("error.jsp").forward(request,response); } %>
实现更新数据:
1.index.jsp页面点击进入更新页面update.jsp页面。
2.update.jsp页面创建一个表单,进行信息输入。
注意,页面首先要读取出信息放在text框中,id是隐藏信息,不在页面显示。
<% int id=Integer.parseInt(request.getParameter("id")); UserDao userDao=new UserDaoImpl(); User user=userDao.finById(id); %> 用户名: 密码: 3.doUpdate.jsp页面执行四大操作。
注意,传入参数多一些、
。
<%@ page language="java" import="java.util.*,dao.*,dao.impl.*,entity.*" pageEncoding="utf-8"%> <% request.setCharacterEncoding("utf-8"); int id=Integer.parseInt(request.getParameter("id")); String name=request.getParameter("name"); String password=request.getParameter("password"); UserDao userDao=new UserDaoImpl(); User user=new User(); user.setId(id); user.setName(name); user.setPassword(password); int i=userDao.update(user); if(i>0){ response.sendRedirect("index.jsp"); }else{ request.getRequestDispatcher("update.jsp").forward(request,response); } %>
实现查看数据(分页查看):
1.index.jsp页面,调用的是UserDaoImpl对象的findAll(int page);的方法。
在增加功能中有页面代码,上拉查看。
关键代码:
<% String pa=request.getParameter("p"); if(pa==null){ pa="1"; } int pages=Integer.parseInt(pa); %> <% UserDao userDao=new UserDaoImpl(); List list=userDao.findAll(pages); int countPage=userDao.countPage(); %> 添加 id 名字 管理 <%for(int i=0;i User user=(User)list.get(i); %> <%=user.getId() %> <%=user.getName() %> 删除 修改 <% } %>
<% for(int i=1;i<=countPage;i++){ %> <%=i %> <% } %> 当前<%=pages %>页 共<%=userDao.countPage() %>页 首页 上一页 下一页 尾页 在上一篇文章中,没有出现UserDaoImpl类中的countPage()方法。
方法如下:
public int countPage() { int count=0; try { cOnn=this.getConnection(); String sql="select count(*) from users"; pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); if(rs.next()){ count=rs.getInt(1); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } int page=count%5==0?count/5:count/5+1; return page; }
推荐阅读
一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ...
[详细]
蜡笔小新 2024-11-14 11:01:49
本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ...
[详细]
蜡笔小新 2024-11-14 10:33:29
本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ...
[详细]
蜡笔小新 2024-11-14 20:27:47
本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ...
[详细]
蜡笔小新 2024-11-14 19:54:58
Spring – Bean Life Cycle ...
[详细]
蜡笔小新 2024-11-13 13:24:40
DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ...
[详细]
蜡笔小新 2024-11-13 12:25:33
本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ...
[详细]
蜡笔小新 2024-11-13 11:19:38
本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ...
[详细]
蜡笔小新 2024-11-12 21:51:00
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ...
[详细]
蜡笔小新 2024-11-12 16:10:39
大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ...
[详细]
蜡笔小新 2024-11-11 19:05:59
【线段树】 本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ...
[详细]
蜡笔小新 2024-11-14 23:11:47
本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ...
[详细]
蜡笔小新 2024-11-13 21:23:34
更新vuex的数据为什么用mutation?,Go语言社区,Golang程序员人脉社 ...
[详细]
蜡笔小新 2024-11-13 18:30:04
Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ...
[详细]
蜡笔小新 2024-11-13 17:31:50
手机用户2502880237
这个家伙很懒,什么也没留下!