ly.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<table width="386" border="1" align="center">
<tr>
<td width="376" height="111">
<form id="form1" name="form1" method="post" action="doly.jsp"> <textarea name="textarea"></textarea> <input type="submit" name="Submit" value="提交" />
</form>
<p>
<label></label>
</p>
</td>
</tr>
<tr>
<td height="124">

<% 
 List list = (List)session.getAttribute("list");
if(list != null)
for(Object o : list)
{
{
%>
<table width="250" border="1" align="center">
<tr>
<td height="47">
<%=o %>
</td>
</tr>
</table>
<%}} %>

</td>
</tr>
</table>
</body>
</html>doly.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="javax.faces.application.Application"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> </head> <body>
<%
request.setCharacterEncoding("UTF-8");
String content = request.getParameter("textarea");
if (session.getAttribute("list") == null) {
List list = new ArrayList();
list.add(content);
session.setAttribute("list", list);
response.sendRedirect("ly.jsp");
} else {
List list = (List) session.getAttribute("list");
list.add(content);
response.sendRedirect("ly.jsp");
}
%>
</body>
</html>
1、我说下我认为的执行流程,先是单击ly.jsp中的提交按钮,跳转到doly.jsp中,然后通过判断后response.sendRedirect("ly.jsp");返回ly.jsp然后进行判断输出内容。以上说的有误请纠正下。
2、if (session.getAttribute("list") == null) {
List list = new ArrayList();
list.add(content);
session.setAttribute("list", list);
response.sendRedirect("ly.jsp");
}中,为什么list可以先拿来判断,后初始化呢??

解决方案 »

  1.   

    session.getAttribute("list")这句的意思是在session中找找看是否存在list,如果没有就初始化,有就直接取出来用……
      

  2.   

    session.getAttribute("list") == null  这句话得到的值是null  固然就可以判断了  
    便进入了if语句   LZ若是有疑问 你吧if语句改为:
    if (session.getAttribute("list") != null) {  你看看他还会不会进去。
      

  3.   

    必须要要先进行判断,如果list为空,才可以new一个新的,如果先一上来就先初始化的话,那岂不是有存在session里面的list就被初始化了吗
      

  4.   

    if (session.getAttribute("list") == null) //这里的判断是从session里面取的内容{
    List list = new ArrayList();//这里的初始化是你自己从新new的,这两个list并非是同一个list,只是名字都是叫list而已。以后命名注意这一点,不要因为名字相同就是同一个
      

  5.   

    if (session.getAttribute("list") == null) {
    List list = new ArrayList();
    list.add(content);
    session.setAttribute("list", list);
    }
    response.sendRedirect("ly.jsp");
    你的代码应该这样写吧,session在setAttribute前一般会先判断是否为空的,否则会覆盖之前的。还有你的这个应该不是用session而用request的吧?如果用request则可
    List list = new ArrayList();
    list.add(content);
    request.setAttribute("list", list);
    response.sendRedirect("ly.jsp");