Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从方法返回多个变量?_Java_Jsp_Arraylist_Methods - Fatal编程技术网

Java 如何从方法返回多个变量?

Java 如何从方法返回多个变量?,java,jsp,arraylist,methods,Java,Jsp,Arraylist,Methods,这里我从数据库中获取数据,并将这些数据放入不同的ArrayList中。我需要将所有这些数组列表传递到jsp页面。如何传递多个数组列表,这是我的代码 package ConnectionPack; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Connection; import java.util.ArrayList; import com.mysql.jdbc.Statement

这里我从数据库中获取数据,并将这些数据放入不同的ArrayList中。我需要将所有这些数组列表传递到jsp页面。如何传递多个数组列表,这是我的代码

 package ConnectionPack;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.Connection;
 import java.util.ArrayList;

 import com.mysql.jdbc.Statement;

 public class DBConnection {
  String DB_URL="jdbc:mysql://localhost:3306/bbc";
  String DB_Username="root";
  String DB_Password="";
  String sql ="select * from news";
  Connection con = null;


ArrayList<String> para=new ArrayList<String>();
ArrayList<String> link=new ArrayList<String>();
ArrayList<Integer> image=new ArrayList<Integer>();

public ArrayList data(){
    ArrayList<String> li=new ArrayList<String>();
    ArrayList<String> li1=new ArrayList<String>();
    ArrayList<String> li2=new ArrayList<String>();
    ArrayList<Integer> li3=new ArrayList<Integer>();
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(DB_URL,DB_Username,DB_Password);  
        Statement statement = (Statement) con.createStatement();
        ResultSet resultset = statement.executeQuery(sql);

        while(resultset.next()){
            String headdata = resultset.getString("Title");
            li.add(headdata);

            String paradata = resultset.getString("Description");
            li1.add(paradata);

            String linkdata = resultset.getString("Link");
            li2.add(linkdata);

            int imagedata = resultset.getInt("id");
            li3.add(imagedata);
        }   
    }catch(Exception e){
        e.printStackTrace();
    }
    return li;
}
    //close the connection

}
包连接包;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Connection;
导入java.util.ArrayList;
导入com.mysql.jdbc.Statement;
公共类数据库连接{
String DB_URL=“jdbc:mysql://localhost:3306/bbc";
字符串DB_Username=“root”;
字符串DB_Password=“”;
String sql=“从新闻中选择*”;
连接con=null;
ArrayList para=新的ArrayList();
ArrayList link=新的ArrayList();
ArrayList image=新的ArrayList();
公共ArrayList数据(){
ArrayList li=新的ArrayList();
ArrayList li1=新的ArrayList();
ArrayList li2=新的ArrayList();
ArrayList li3=新的ArrayList();
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
con=DriverManager.getConnection(DB_URL、DB_用户名、DB_密码);
语句=(语句)con.createStatement();
ResultSet ResultSet=statement.executeQuery(sql);
while(resultset.next()){
String headdata=resultset.getString(“Title”);
li.添加(标题数据);
字符串paradata=resultset.getString(“说明”);
li1.添加(paradata);
String linkdata=resultset.getString(“链接”);
li2.添加(linkdata);
int imagedata=resultset.getInt(“id”);
li3.添加(图像数据);
}   
}捕获(例外e){
e、 printStackTrace();
}
返回李;
}
//关闭连接
}

我需要将这个'li'、'li1'、'li2'、'li3'传递到JSP页面,我该怎么做?

在我看来,您需要传回一个新闻列表,例如定义一个名为
news
的类(包含您的标题、id等)并返回
list

请注意,这在返回(比如)字符串列表时强制了某种类型安全性。您可以更进一步,返回一个
新闻列表
(它本身包含一个
列表
,并且能够迭代这个渲染,或者您需要的任何其他功能?)


不要羞于创建这样的对象。它们为您提供了类型安全性以及封装行为和内容的能力。

您必须传递的是一个包含多个对象的列表。列表不多您可以使用ArrayList的ArrayList、ArrayList的数组、ArrayList的任何集合、您自己的包含列表的数据对象类……或者为什么不尝试创建一个数据结构来实际建模您正在传递的内容:创建一个包含标题、说明、,链接和id并传递这些对象的列表。@OHGODSPIDERS正好找到了它。最好是创建一个数据结构。这将使您对代码的意图更加清晰,以供将来可能阅读它的任何人,甚至在远离它几个月后的您自己。它还将使进一步的代码生成更容易处理