220421__JSP与JAVABEAN
2022/4/23 11:42:39
本文主要是介绍220421__JSP与JAVABEAN,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JSP与JSPBEAN
做了一个在网页上对数据库进行删改查功能的实验,为了记下实验收获,遂写下笔记
编辑器是IDEA,用到了javabean,request对象,主要代码部分有:
java部分(放在src-DAO包中) | jsp部分(放在web目录下) |
---|---|
User.java | deleteUser.jsp |
Userdao.java | doUpdateUser.jsp |
DBConnection.java | queryUser.jsp |
updateUser.jsp |
实现的具体逻辑如下
1.DBConnection.java
首先DBConnection是套路型文件,目的是与数据库进行连接,
它可以是这样(这部分的功能是测试连接)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;
也可以是这样,
构造一个返回类型为Connection 的方法,*注意,返回的Connection对象在后面的UserDao中 可调用prepareStatement方法封装sql语句,
graph TD; DBConnection返回Connection对象-->UserDao中声明Connection对象con-->con调用prepareStatement方法封装sql语句ps-->ps执行setString或setInt填充语句-->executeUpdate或executeQuery;其中重点的是
2.User.java
此处的类中的变量必须和数据库表中的字段一一对应,类名和变量名最好与表相同。在这里我没有一一对应,要记得后面UserDao的sql语句别写错了,那里要和数据库字段名对应。
其中还要额外实现getter和setter方法,IDEA中右键点击generate就行了。在UserDao中,User类的作用在于new一个对象,存储获得的真实数据库中对象的值,方便返回
3.UserDao.java
预先导入这些包
import java.sql.*; import java.util.ArrayList;
其中声明了很多对数据库进行操作的方法,每个方法中的步骤都为:1.建立连接,2.写sql语句,在这里sql语句定然是不完整的,缺失的部分通过 ? 英文问号表示,再在PreparedStatement自带的方法setString方法能通过问号的位置插入。
其中的函数有:
public static void insertUser(User user) | public static void deleteUser(int id) |
---|---|
public static void updateUser(User user) | public static User getUser(int id) |
public static ArrayList |
public static ArrayList |
public static void main (String[] args) 默认主函数 |
-
public static void insertUser(User user) {...} ,setString中通过调用user的get方法获得插入sql内容,这里user应该是通过输入框封装而成。
-
public static void deleteUser(int id) {...},
这里在jsp页面的逻辑是在界面中点击要删除的字段,跳到deleteUser.jsp时,通过在后面加上 ?id=<%= user.getId()%> 向deleteUser.jsp传id值。
显示所有user的jsp页面
graph TD; id0[< jsp:useBean>标签将UserDao类的对象用id'userDao'表示]-->id1[userDao.getAllUser存入ArrayListUser< user> userList]-->id2["循环调用列表里的user:for(User user:userList)"]-->id3["通过表达式<%= user.getId()%>向表格插入User信息"];- 显示所有用户的queryUser.jsp,注意到删除是跳转到deleteUser.jsp的
- deleteUser.jsp的写法
- UserDao中deleteUser方法
-
public static void updateUser(User user) {...},逻辑也是一样,updateUser的jsp页面先useBean,再通过request获取id值,但这里方法的输入是user,所以要new 一个user对象,调用它的getUser(id)方法获得user,再调用它的updateUser方法,注意,这个方法需要输入有完整属性的user对象,而既然是更新,那肯定要有输入框传入更新后的值。
故这里再用一个表格跳转至另一个jsp页面,通过前表格的每一个input 得到更新后的user各属性,通过input框特有的name传值法,在下一个页面用request.getParameter(name)就能获得这些属性值
graph TD; id0["通过request获取上个页面传来的id值"]-->id1["通过form得到更新后的各属性值,再跳转至另一界面"]-->id2["通过request.getParameter 获得上个界面各属性"]-->id3["new user,调用其setId等来保存更新后的各属性"]-->id4["再用userDao调用其updateUser(user)方法,<br>传入sql,数据库执行"];
最后response.sendRedirect跳回queryUser.jsp,发现各项已更新。
还差两个返回列表的
-
public static ArrayList
getUserList(User user){...} ,这个方法的作用是通过用户名或邮箱模糊查询用户,虽然在代码中并没有用到这部分功能。 -
public static ArrayList
getAllUser(){...} ,这个方法可以返回所有的用户,因为其sql语句是"select * from users",再一次次地判断结果列表是否还有下一个,有的话rs.next()就会使光标后移一位,假设总数据共有九行,相当于判断第八行.next是否存在时返回true,之后执行的语句都是对第九行的数据进行操作,自然下一次判断rs.next()是否存在就是false了。
积累的地方:
1. 在href里通过变量名+?可以传值 |
---|
2. request对象可以通过getParameter(变量名)获取上个页面传来的变量值,不仅是类似href中 变量?=,还有上个页面input的name值 |
3. setString方法(1,value)可以根据?的顺序填充值 |
4. 在update时form表格通过type="hidden" 保证了user的id不被更改 |
5. response.sendRedirect 重定向? |
期待能在空闲时间把模糊查询功能完善。
这篇关于220421__JSP与JAVABEAN的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?