Java 我不知道';在我刷新页面一两次后,我看不到提交的数据:ArrayList如何自己变为空?
我必须通过网站的控制面板提交一些链接,它们应该会自动出现在jsp页面中,下次用户刷新它时。为此,我在粘贴链接后单击提交按钮,生成post请求,servlet通过从自身调用bean函数来处理该链接,并将该链接存储在ArrayList中 来自servlet的代码片段 豆类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);
公共类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);
}