//创建一个rs结果集,ps对象 PreparedStatement ps; ResultSet rs; //调用db中的查询方法 ps = db.getPs(sql); try { rs = ps.executeQuery();//执行语句 //判断旧密码是否存在,rs.next()返回的是布尔值 if(rs.next()) {//存在,则执行更新操作 //调用更新操作 ps = db.getPs(sql1); //要更新的数据 ps.setString(1, newPw); ps.setInt(2, oldId); ps.executeUpdate();//执行更新 //成功返回管理员信息页面,这里可以设置一个提示页面再跳,不设置也可以 PrintWriter out = response.getWriter(); response.sendRedirect("admin/adminMes.jsp?oldName=" + oldName + "&oldId=" + oldId); }else {//不存在,则跳回修改页面,并提示错误 PrintWriter out = response.getWriter(); response.sendRedirect("admin/adminEdi.jsp?oldName=" + oldName + "&oldId=" + oldId + "&message=" + "1"); } } catch (SQLException e) { e.printStackTrace(); }
时间: 2023-06-26 19:10:11 浏览: 90
这段代码是一个Java Servlet中的数据库操作,主要是用于修改管理员的密码。首先,它通过调用数据库操作类(假设命名为db)中的getPs方法获取PreparedStatement对象ps,然后执行SQL语句,查询旧密码是否存在。如果查询结果rs.next()返回true,说明旧密码存在,则调用getPs方法获取另一个PreparedStatement对象ps,更新数据表中对应管理员的密码为新密码newPw。最后,使用sendRedirect方法重定向到管理员信息页面,并通过URL参数oldName和oldId传递管理员的姓名和ID。如果查询结果rs.next()返回false,说明旧密码不存在,则使用sendRedirect方法重定向回修改页面,并通过URL参数message传递错误消息。需要注意的是,这段代码中的异常处理只是简单地调用printStackTrace方法输出异常信息,没有进行更深入的处理。
相关问题
public List<News> deleteNews(List<Integer> ids) { List<News> list = new ArrayList<>(); // 创建一个空的集合用于存放被删除的 News 对象 db = new DBUtil(); String sql = "DELETE FROM news WHERE nid IN (" + String.join(",", Collections.nCopies(ids.size(), "?")) + ")"; // 构造 SQL 语句 try { PreparedStatement ps = db.getPs(sql); // 设置 SQL 语句中的占位符参数 for (int i = 0; i < ids.size(); i++) { ps.setInt(i + 1, ids.get(i)); } int count = ps.executeUpdate(); // 执行 SQL 语句 if (count > 0) { // 如果有数据被删除,则查询被删除的数据并添加到集合中 sql = "SELECT * FROM news WHERE nid IN (" + String.join(",", Collections.nCopies(ids.size(), "?")) + ")"; ps = db.getPs(sql); for (int i = 0; i < ids.size(); i++) { ps.setInt(i + 1, ids.get(i)); } ResultSet rs = ps.executeQuery(); while (rs.next()) { News news = new News(); news.setId(rs.getInt("nid")); news.setTitle(rs.getString("title")); news.setContent(rs.getString("content")); news.setCreateTime(rs.getTimestamp("createtime")); list.add(news); } } } catch (SQLException e) { e.printStackTrace(); } finally { db.close(); } return list; // 返回被删除的 News 对象集合 }根据这串代码写出servlet的代码
假设你要在 Servlet 中调用上述方法来删除一组新闻,可以按照以下步骤操作:
1. 在 web.xml 文件中添加 Servlet 的映射:
```
<servlet>
<servlet-name>DeleteNewsServlet</servlet-name>
<servlet-class>com.example.DeleteNewsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteNewsServlet</servlet-name>
<url-pattern>/deleteNews</url-pattern>
</servlet-mapping>
```
2. 编写 DeleteNewsServlet 类:
```
package com.example;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DeleteNewsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 从请求参数中获取要删除的新闻 ID 列表
String[] idArray = request.getParameterValues("id");
if (idArray == null || idArray.length == 0) {
response.getWriter().write("参数错误");
return;
}
// 将字符串类型的 ID 转换成整数类型
List<Integer> ids = new ArrayList<>();
for (String id : idArray) {
ids.add(Integer.parseInt(id));
}
// 调用 deleteNews 方法删除新闻
NewsService newsService = new NewsService();
List<News> deletedNews = newsService.deleteNews(ids);
// 将被删除的新闻返回给客户端
response.getWriter().write(new ObjectMapper().writeValueAsString(deletedNews));
}
}
```
以上代码仅供参考,具体实现需要根据实际业务需求进行修改。需要注意的是,这里没有进行任何的参数校验和安全措施,如果你要将其用于生产环境,需要添加相应的安全保护。
public boolean login(Admin admin) throws SQLException, ClassNotFoundException { String sql="select * from admin where id=? and password=?"; Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, admin.getID()); ps.setString(2, admin.getPassword()); // ps.setString(3,admin.getName()); ResultSet rs = ps.executeQuery(); int ans = 0; if(rs.next()) { ans = 1; } rs.close(); ps.close(); conn.close(); if(ans == 1) { return true; } else return false; } public int JudgeAdmin() { try { if(login(this.admin)) { System.out.println("登录成功"); return 1; }else { return 0; } }catch(Exception e) { //e.printStackTrace(); //System.out.println("!!!!!!!!!"); } return 0; } }解释一下这段代码
这段代码实现了一个管理员登录系统。其中 `login` 方法用于验证管理员的身份,接受一个 `Admin` 对象作为参数,该对象包含了管理员的账号和密码。方法中通过 JDBC 连接到数据库,查询管理员表中是否存在对应的账号和密码记录,如果存在则返回 `true`,否则返回 `false`。`JudgeAdmin` 方法调用 `login` 方法进行登录验证,如果验证成功则返回 `1`,表示登录成功,否则返回 `0`,表示登录失败。如果在执行过程中出现异常,则返回 `0`。代码中的注释是对异常处理部分的说明。
阅读全文