ZhihanXing 发表于 2024-1-8 17:47:39

JavaWeb中如何让按钮删除指定的文章?

下面的代码是一个用于展示未通过审核的博客的页面,我想通过点击按钮改变博客的审核状态。但是当我点击按钮后所有博客都进行了修改,而我只想修改按钮被点击的那篇,应该如何修改?
<%@ page import="edu.zjku.bean.Blog" %>
<%@ page import="edu.zjku.service.BlogService" %>
<%@ page import="java.util.List" %>
<%@ page import="edu.zjku.service.BlogServiceImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>审核博客</title>
    <link rel="stylesheet" href="style/public.css">
    <link rel="stylesheet" href="style/index.css">
    <link rel="stylesheet" href="style/audit.css">
</head>
<body>
<jsp:include page="header.jsp"/>
<div class="box">
    <%--    判断用户是否为管理员--%>
    <%
      Object username = session.getAttribute("username");
      if (username != null) {
            if (username.equals("root")) {
                //展示审核内容,执行操作
                BlogService service = new BlogServiceImpl();
                List<Blog> blogs = service.selectUnpass();
                for (Blog blog : blogs) {%>
    <table>
      <tr>
            <td class="title"><%=blog.getTitle()%>
            </td>
      </tr>
      <tr>
            <td class="text"><%=blog.getText()%>
            </td>
      </tr>
      <tr>
            <td class="user"><%=blog.getUser()%>
            </td>
      </tr>
      <tr>
            <td class="time"><%=blog.getTime()%>
            </td>
      </tr>
      <tr>
            <td>
                <form action="allow.jsp" method="get" autocomplete="off">
                  <input type="hidden" name="blogId" value="<%blog.getPid();%>                  %>">
                  <button type="submit">通过</button>
                </form>
            </td>
      </tr>
    </table>
    <%
                }
            } else {
                //非管理员,强制返回首页
                response.getWriter().write("权限不足!2秒后返回首页");
                response.setHeader("Refresh", "2;URL=/theBlog/index.jsp");
            }
      }else {
            //非管理员,强制返回首页
            response.getWriter().write("权限不足!2秒后返回首页");
            response.setHeader("Refresh", "2;URL=/theBlog/index.jsp");
      }
    %>

</div>
<jsp:include page="footer.jsp"/>
</body>
</html>

FishC 发表于 2024-1-8 17:47:51

您好!要实现只修改按钮被点击的那篇博客,您可以通过给每个按钮设置一个唯一的标识符(如文章的ID),然后在点击的时候传递该标识符到后台。

下面是一个简单的示例代码:

<!-- 审核博客页面 -->
<!DOCTYPE html>
<html>
<head>
    <title>审核博客</title>
</head>
<body>
    <!-- 假设这里有多篇未通过审核的博客 -->
    <div class="blog">
      <p>博客标题1</p>
      <button onclick="approveBlog(1)">通过</button>
    </div>
    <div class="blog">
      <p>博客标题2</p>
      <button onclick="approveBlog(2)">通过</button>
    </div>
    <!-- ...其他博客... -->

    <script type="text/javascript">
      // 通过AJAX向后台发送请求
      function approveBlog(blogId) {
            // 创建一个XMLHttpRequest对象
            var xhr = new XMLHttpRequest();
            // 设置请求方法和URL
            xhr.open('POST', '/approve', true);
            // 设置请求头
            xhr.setRequestHeader('Content-Type', 'application/json');
            // 设置请求内容
            var data = {id: blogId};
            // 将请求内容转为JSON字符串并发送
            xhr.send(JSON.stringify(data));
            
            // 检查响应状态
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                  // 请求成功,更新页面或执行其他操作
                  console.log('博客已通过审核');
                }
            };
      }
    </script>
</body>
</html>

在上面的代码中,我们为每篇博客的按钮添加了一个`onclick`事件,当点击某个按钮时,会触发`approveBlog`函数,并将该博客的ID作为参数传递给后台。在`approveBlog`函数中,使用AJAX发送一个POST请求到后台的`/approve`接口,并携带该博客的ID作为请求内容。

在后台接收到请求后,根据传递的博客ID执行相应的操作(例如修改博客的审核状态),然后返回响应给前端。

请注意,上述代码只是一个简单的示例,实际情况中您需要根据自己的项目结构和需求进行适当的修改。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ZhihanXing 发表于 2024-1-8 18:24:44

FishC 发表于 2024-1-8 17:47
您好!要实现只修改按钮被点击的那篇博客,您可以通过给每个按钮设置一个唯一的标识符(如文章的ID),然后 ...

不使用AJAX可以实现吗?

FishC 发表于 2024-1-8 18:24:58

ZhihanXing 发表于 2024-01-08 18:24
不使用AJAX可以实现吗?

是的,您也可以不使用AJAX来实现。您可以在后台代码中使用Java的服务端技术(如Servlet)来处理按钮点击事件,并修改指定博客的审核状态。

首先,在前端页面的按钮元素上添加一个`name`属性,值为对应博客的唯一标识符(如文章的ID),然后通过表单提交按钮的点击事件到后台。

下面是一个简单的示例代码:

<form action="/approve" method="post">
<div>
    <label for="blog1">博客标题1</label>
    <input type="submit" name="blogId" value="通过" id="blog1">
</div>
<div>
    <label for="blog2">博客标题2</label>
    <input type="submit" name="blogId" value="通过" id="blog2">
</div>
</form>

在上述代码中,我们给每个按钮元素添加了一个`name`属性,值为`blogId`,并给每个按钮添加了一个独立的`id`属性来标识对应的博客。

然后,在后台的Java代码中,您可以通过获取请求参数中的`blogId`值来确定哪篇博客被点击了,然后执行相应的操作。

下面是一个简单的Servlet代码示例:

@WebServlet("/approve")
public class ApproveServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String blogId = request.getParameter("blogId");
   
    // 根据博客ID修改相应博客的审核状态
    // ...
   
    response.getWriter().println("博客已通过审核");
}

}

在上述代码中,我们通过`request.getParameter("blogId")`方法获取到了表单提交过来的`blogId`值,然后可以根据这个值来确定需要修改的博客,并执行相应的操作(修改审核状态等)。

请注意,上述代码只是一个简单的示例,实际情况中您可能需要根据自己的项目结构和需求进行适当的修改。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: JavaWeb中如何让按钮删除指定的文章?