将对象数组从 servlet 发送到 JSP

2023-12-06

我想通过请求将我自己的对象数组发送到 JSP 页面。

在 servlet 中的这部分代码中,我将获取数据,将其放入对象数组中,并将它们设置为请求。

     if (request.getParameter("todo").equals("show_article_list")) {
         try {
             Article[] articles = this.getArticleList();

             request.setAttribute("articles", articles);
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("article/article_list.jsp");
            dispatcher.forward(request, response);
         } catch (Exception e) {
         }
     }

    public Article[] getArticleList() throws Exception {
    db data = new db();
    Connection con = data.OpenConnection();

    PreparedStatement statement = con.prepareStatement("SELECT * FROM `article`");
    ResultSet result = statement.executeQuery();


    int size = 0;  
    if (result != null)   
    {  
        if (result.last()) {
            size = result.getRow();
            result.beforeFirst();
        }
    }  

    Article[] articles = new Article[size];
    int i = 0;
    while(result.next()){
        articles[i] = new Article (
                result.getInt(1),
                result.getString(2),
                result.getString(3),
                result.getString(4));
        i++;        
    }

    return articles;
  }

这是我的课:

public class Article {
public Integer getId(){return id;}

public String getTitle(){return title;}
public void setTitle(String title){this.title = title;}

public String getText(){return text;}
public void set(String text){this.text = text;}

public String getDescription(){return description;}
public void setDescription(String description){this.description= description;}

private Integer id;
private String title;
private String text;
private String description;

public Article(Integer Id, String Title, String Text, String Description)
{
    id = Id;
    title = Title;
    text = Text;
    description = Description;
}
}

在我的 JSP 页面上,我想使用循环这样的对象数组request.getAttribute("articles");我怎样才能做到呢?

我必须使用<jsp:useBean/>或者是其他东西?我尝试这样做:

Article[] articles = request.getAttribute("articles");

但我有一个错误:Article cannot be resolved to a type

我做错了什么?


您应该通过使用 JSTL 来避免使用 scriptlet。 请看下面的例子:

一个例子POJO class:

public class Article {
    private int id;
    private String title;

    public Article(int id, String title) {
        this.id = id;
        this.title = title;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

}

Servlet 的示例:

public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Article[] articles =
                new Article[] {new Article(1, "Article one"), new Article(2, "Article two")};
        request.setAttribute("articles", articles);

        RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
        dispatcher.forward(request, response);
    }

}

JSP 页面的示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <c:forEach items="${articles}" var="article">
    <c:out value="${article.id} ${article.title}"/><br />
  </c:forEach>
</body>
</html>

结果 HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    1 Article one<br />

    2 Article two<br />

</body>
</html>

我希望这个例子可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象数组从 servlet 发送到 JSP 的相关文章

随机推荐

  • 如何以固定速率安排持续时间长于速率的任务?

    我正在尝试安排一个每秒运行大约 2 25 秒的任务 因此我知道 3 个线程应该足以处理负载 我的代码如下所示 private final ScheduledExecutorService scheduler Executors newSch
  • 谷歌地图的第二次调用未显示正确尺寸的地图

    使用 gwt maps 3 8 0 我在 gwt 弹出窗口中显示一条路线 调用一次时有效 但第二次调用时无效 What should i do some advice to refresh the mapWidget 当您显示地图时 触发其
  • Python类方法,什么时候返回self?

    我很困惑何时在类中返回 self 以及何时返回一个可能或不可能用于检查方法是否正确运行的值 def api request self data api web request code return response text def co
  • 如何使用 h5py 导入 .mat-v7.3 文件

    我有 mat 文件 其中有 3 个矩阵 A B C 实际上我使用 scipy io 导入这个 mat 文件 如下所示 data sio loadmat data mat A data A B data B C data C 但是 v7 3
  • 橙色 PI 上的双 RC522

    我的目标是使用带有 Orange PI 的双 RFID RC522 读取器 到目前为止 我只成功完成了一项工作 阅读 google armbian 和 Orange pi 论坛 这是我到目前为止所做的 硬件连接 单RC 522 MOSI g
  • 为什么 JavaScript 中的 IF 语句允许重新声明变量

    我知道一个if语句不像函数那样有自己的作用域 这意味着它与包含的上下文共享相同的作用域 但如果是这样 为什么我允许再次重新声明相同的变量 var foo 123 if true console log foo 123 var foo 456
  • 错误:这可能不是 npm 的问题。上面可能有额外的日志输出

    在我的项目中 我使用 Angular6 作为前端 现在我想做的是将远程服务器中的项目部署到实际服务器中 我在用着npm run build prod首先构建前端的命令 但我无法构建我的项目 因为以下错误一次又一次发生 npm ERR cod
  • 提取最后一个斜杠和问号之间的文件名

    我想使用提取最后一个斜杠和问号之间的文件名regex我读了一些相关的答案 但我有几个域名 所以我想提取特定名称的文件名并寻找适用于所有域的正则表达式 我如何将其限制在某些域 我的目标是更换域名 http old domain com asd
  • C# 中的三元运算符

    谁能向我解释一下当您使用三元运算符时幕后会发生什么 这行代码执行 string str 1 1 abc def 是作为一个简单的 if else 语句生成的吗 考虑以下 class A class B A class C A 现在使用三元表
  • 如何使用 JavaScript 仅定位 Internet Explorer 11?

    使用 JavaScript 仅针对 IE11 的最不容易出错的方法是什么 注意 这实际上应该只用于分析或告知用户他们正在使用什么浏览器 对于其他一切 还有特征检测 IE 11 的用户代理字符串当前是这样的 Mozilla 5 0 Windo
  • 正则表达式更改所有 img src 属性的格式

    假设我有一个包含 HTML 标记的字符串 其中有许多 img 标签 如下所示 img src data images original 3 png alt 我需要一个正则表达式来更改所有图像以具有如下路径 img src utils loc
  • MySQL 将度、分、秒转换为十进制数

    我有多行度分秒 需要通过查询进行转换 36 19 11 46 北纬 36 31985 95 36 02 22 宽 95 600617 每行都会有所不同 我已经被这个问题困扰了两天了 这可能吗 不错的生活窍门 使用 SEC TO TIME 内
  • 将 seq 从 F# 传递到 RProvider

    我希望能够传递一系列option float到 RProvider 中F 如果我有一系列的浮点数Some float and None 我怎样才能得到None值转化为R与RProvider 我本以为Nones 相当于NA值在R 但我无法通过
  • 如何使用 @JmsListener 暂停和开始消费消息

    我使用的是 Spring Boot 版本 1 3 2 我正在使用 JmsListener 来使用来自 activemq 的消息来获取我使用 JmsTemplate 创建 生成的消息 这是代码 JmsListener destination
  • 通过 iso ''0001-01-01T01:00:00' 创建日期添加 16 秒

    new Date 0001 01 01T01 00 00Z gt Mon Jan 01 0001 02 50 16 GMT 0150 Moscow Standard Time 不正确的 GMT 我的时区GMT 3000 但是日期创建GMT
  • 在 android 中我可以使用什么来代替上下文菜单? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想在单击按钮时显示一些选项 我现在使用上下文菜单 但 Android 3 下面显示的上下文菜单不适合当前的应用程序设计 我想更改上下文菜单的样式或
  • d3.js 如何简化复杂路径 - 使用自定义算法

    我这里有一个非常基本的例子 http jsfiddle net jEfsh 57 这会创建一条复杂的路径 有很多点 我已经阅读了一种算法 可以查看这些点并创建一组更简单的坐标 有谁有这方面的经验 有关如何循环路径数据并将其传递给算法的示例
  • 在 PHP 中从动态 Unicode 创建 UTF-8 代码

    我正在用 PHP 制作一个动态 Unicode 图标 我想要 Unicode 图标的 UTF 8 代码 到目前为止我已经做了 value 1F600 emoIcon u value emoIcon preg replace u 0 9A F
  • 谷歌 OAuth 错误 -1001

    在我的应用程序中 我尝试实现谷歌帐户访问 当我在登录会话中初始化其工作时 之后它在屏幕截图中抛出以下错误 这是我的代码初始化和方法实现 static NSString const kKeychainItemName nil NSString
  • 将对象数组从 servlet 发送到 JSP

    我想通过请求将我自己的对象数组发送到 JSP 页面 在 servlet 中的这部分代码中 我将获取数据 将其放入对象数组中 并将它们设置为请求 if request getParameter todo equals show article