Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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 我不知道';在我刷新页面一两次后,我看不到提交的数据:ArrayList如何自己变为空?_Java_Jsp_Arraylist - Fatal编程技术网

Java 我不知道';在我刷新页面一两次后,我看不到提交的数据:ArrayList如何自己变为空?

Java 我不知道';在我刷新页面一两次后,我看不到提交的数据:ArrayList如何自己变为空?,java,jsp,arraylist,Java,Jsp,Arraylist,我必须通过网站的控制面板提交一些链接,它们应该会自动出现在jsp页面中,下次用户刷新它时。为此,我在粘贴链接后单击提交按钮,生成post请求,servlet通过从自身调用bean函数来处理该链接,并将该链接存储在ArrayList中 来自servlet的代码片段 豆类 公共类StoreSongLink{ public static ArrayList linkList=new ArrayList(); 公共int-storeSongLink(字符串链接){ linkList.add(link);

我必须通过网站的控制面板提交一些链接,它们应该会自动出现在jsp页面中,下次用户刷新它时。为此,我在粘贴链接后单击提交按钮,生成post请求,servlet通过从自身调用bean函数来处理该链接,并将该链接存储在ArrayList中

来自servlet的代码片段

豆类

公共类StoreSongLink{
public static ArrayList linkList=new ArrayList();
公共int-storeSongLink(字符串链接){
linkList.add(link);
返回0;
}   
}
在此之后,我尝试获取提交的链接(在jsp页面中):


  • 我看到的链接提交了一两次,然后它消失后,我刷新同一页,我看到的消息,是没有任何链接提交了!为什么会这样?我知道这可能不是最好的方法,但我还是想这样做


    为什么刷新页面后我看不到提交的链接?ArrayList中的数据是如何丢失的?

    您在servlet中创建的StoreSongLink对象的范围仅限于该特定调用。您将此对象或其内容存储在何处?您需要将其放入会话或数据库中,具体取决于您期望的功能。

    看起来您希望在每个会话中实例化该SongStoreLink一次。在创建对象之前,您应该从会话中检索它,如果找到,则使用它,否则创建对象并将其保存在会话中。

    从会话或类似内容获取StoreSongLink实例

    StoreSongLink store = (StoreSongLink)request.getSession().getAttribute("storeSongLink");
    if (store == null)
    {
       store = new StoreSongLink();
       request.getSession().setAttribute("storeSongLink", store);
    }
    
    或者,您可以使用单例模式来创建/获取StoreSongLink实例。
    此外,重构storeSongLink方法并避免JSP中的脚本是明智的。有很多框架将代码和布局分开。

    请您解释一下“您在servlet中创建的StoreSongLink对象的范围仅限于该特定调用。”我想在jsp页面中嵌入歌曲。为此,我从网站的控制面板提交这些歌曲的链接。我提交的链接放在bean中的
    ArrayList
    中,并由servlet调用。然后我加载jsp页面,尝试获取ArrayList中提交的所有链接。但它显示了提交的链接只有一次,在我刷新页面后,它什么也没有显示
    public class StoreSongLink {
    public static ArrayList<String> linkList = new ArrayList<String>();
    
     public int storeSongLink(String link) {
        linkList.add(link);
        return 0;
     }   
    }
    
            <%! ArrayList<String> songList = new ArrayList<String>(); %>
    
           <%
               songList = StoreSongLink.linkList;
           %> 
    
           <% for (String links : songList){ %>
                 <li><%= links%></li>
           <%}%>
    
    StoreSongLink store = (StoreSongLink)request.getSession().getAttribute("storeSongLink");
    if (store == null)
    {
       store = new StoreSongLink();
       request.getSession().setAttribute("storeSongLink", store);
    }