关于在jsp和servlet间多次传值的问题,欢迎讨论 为什么要自找麻烦呢,把fore1,与form2 分开到两个不同的jsp叶面不好吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。既然每次都要既提交form1又form2,为何不合并?2。开始不提交form1,最后finish时候,才提交,考虑用javascript进行控制 是这样,在逻辑上form1是基本信息,form2是附加信息,首先填写form1,然后才能填form2。form1只填写一次,form2填写多次,也就是说一个form1对应多个form2。开始提交form1是因为,想让填到form1里的内容一直显示其实关键在于怎么多次填写form2,每填一次提交一次,最后把所有内容存到数据库中。 可以在jsp和servlet中个设个Vector,jsp每传一个form2,就存在servlet中的Vector中,返回jsp时将Vector传回,保存在jsp中,然后jsp提交servlet,将新的form2存在vector中.就是用vector存信息,通过把vector当参数传递来保存vector。还有就是可以用session 把2个form写在一个jsp文件中可以用javascript实现function test1{document.form1.action="1.jsp";document.submit;}function test2{document.form2.action="2.jsp";document.submit;} 把2个form写在一个jsp文件中可以用javascript实现function test1(){document.form1.action="1.jsp";document.form1.submit;}function test2(){document.form2.action="2.jsp";document.form2.submit;} 我的想法:form1的内容如果在每个页面都需要,可以考虑把它存在session中,就是说第一次提交后,判断如果session中没有这个valuebean,则保存,以后只需让jsp页从session取这个valuebean显示即可。于是,jsp页就当成一个只包含form2的页面来处理,应该不难了。 form1解决了,关键是form2的问题,所有的form2都提交后和form1一起加到数据库中,并不是提交一次加一次,而是最后一起加到数据库中,这是难点,所以请大家多向这方面想想. 这可以变通嘛:就是这个JSP页面中的FORM 提交给自己。这个JSP再把数据保存在SESSION中。如果FORM提交时数据已经输入完,JSP就转到下一个JSP页,这下个JSP页中SESSION中取数据,并且保存起来,这就完成了数据处理 你每次从form2填写数据后提交,交到servlet后,对数据干了些什么?根据你的做法好像什么也没干(如果只是做些输入内容的合理性的判断)那倒不如用javascript来解决。如果若干次提交的信息不是很多的话,还是用session比较好如果很多,建议修改设计思路。 form2的多次提交问题我觉得可以这样:每次提交后存在session中,最后一次再写到DB中。如果是用EJB来实现,可以用有状态的会话bean,很方便。或者也可以用JDBC的事务来处理,设置它不是自动commit,然后手工提交,每次都insert,但直到最后才commit。不知道你觉得哪种比较合适? 我觉得可以给form2一个专门的值Bean,放在Servlet中,每次提交后都把form2提交的内容写入值Bean,等到最后由Servlet将这个值Bean内的数据一起写到DB中去。BTW:为什么要多次提交form2呢?我觉得应该可以没提交一次就往数据库里写一次吧。 是这样,jsp中提交form1和form2,一个form1对应多个form2,因此form1只提交一次,而form2提交多次,每次提交调用此servlet,如果bat=con说明还有form2要提交,此时servlet将M2Port存到vector中,然后将vector放在session里,返回jsp,下一次将session中的vector调出来,再将新的M2Port加到vector中.如果bat=fns说明全部提交完毕,servlet调用M2Service将M2和vector中的多个M2Port加到数据库中.关键是用session保存jsp多提交的值的问题,我得源程序只能保存最后一次提交的数据,请看看哪里出了错.所有需要的类都已导入,程序调试通过,只有一个问题,为什么最后session中的vector只有一个对象.源程序如下:public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=GBK"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); response.addHeader("Pragma","No-cache"); response.addHeader("Cache-Control","no-cache"); response.addDateHeader("Expires",1); AsciiBean change=new AsciiBean();//转换为字符串的类,已导入 ChangNum cn =new ChangNum();//转换为数字的类,已导入 RequestDispatcher view = null; Status status = new Status(); String bat = request.getParameter("bat"); request.setAttribute("status",status); int m2PortId = 0; String type = ""; int systemId = 0; String m34 = ""; String m2 = ""; int firstMachineHouseId = 0; String firstMachineHouse = "" ; String firstSubrack = ""; int firstCardId = 0; int firstPortRow = 0; int endMachineHouseId = 0; String endMachineHouse = ""; String endSubrack = ""; int endCardId = 0; int endPortRow = 0; int serial = 0; M2Port m2Port = new M2Port(); M2 aM2 = new M2(); M2Service m2Service = new M2Service();// 执行数据库操作的类 Vector m2PortVector = new Vector(); if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); } try { if(bat.equals("con"))//如果jsp中继续添加M2Port { m2PortId = 0; if(request.getParameter("type") != null) { type = change.AsciiBean(request.getParameter("type")); } if(request.getParameter("systemId") != null) { systemId = cn.ChangNum(request.getParameter("systemId")); } if(request.getParameter("m34") != null) { m34 = change.AsciiBean(request.getParameter("m34")); } if(request.getParameter("m2") != null) { m2 = change.AsciiBean(request.getParameter("m2")); } if(request.getParameter("firstMachineHouseId") != null) { firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId")); } if(request.getParameter("firstMachineHouse") != null) { firstMachineHouse = change.AsciiBean(request.getParameter("firstMachineHouse")); } if(request.getParameter("firstSubrack") != null) { firstSubrack = change.AsciiBean(request.getParameter("firstSubrack")); } if(request.getParameter("firstCardId") != null) { firstCardId = cn.ChangNum(request.getParameter("firstCardId")); } if(request.getParameter("firstPortRow") != null) { firstPortRow = cn.ChangNum(request.getParameter("firstPortRow")); } if(request.getParameter("endMachineHouseId") != null) { endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId")); } if(request.getParameter("endMachineHouse") != null) { endMachineHouse = change.AsciiBean(request.getParameter("endMachineHouse")); } if(request.getParameter("endSubrack") != null) { endSubrack = change.AsciiBean(request.getParameter("endSubrack")); } if(request.getParameter("endCardId") != null) { endCardId = cn.ChangNum(request.getParameter("endCardId")); } if(request.getParameter("endPortRow") != null) { endPortRow = cn.ChangNum(request.getParameter("endPortRow")); } serial++; m2Port = new M2Port(m2PortId, type, systemId, m34, m2, firstMachineHouseId, firstMachineHouse, firstSubrack, firstCardId, firstPortRow, endMachineHouseId, endMachineHouse, endSubrack, endCardId, endPortRow, serial ); m2PortVector.add(m2Port); session.setAttribute("vector",m2PortVector); view = request.getRequestDispatcher("/M2Jsp/Insert.jsp"); view.forward(request,response); } if(bat.equals("fns"))//如果jsp中完成添加 { m2PortId = 0; if(request.getParameter("type") != null) { type = change.AsciiBean(request.getParameter("type")); } if(request.getParameter("systemId") != null) { systemId = cn.ChangNum(request.getParameter("systemId")); } if(request.getParameter("m34") != null) { m34 = change.AsciiBean(request.getParameter("m34")); } if(request.getParameter("m2") != null) { m2 = change.AsciiBean(request.getParameter("m2")); } if(request.getParameter("firstMachineHouseId") != null) { firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId")); } if(request.getParameter("firstMachineHouse") != null) { firstMachineHouse = change.AsciiBean(request.getParameter("firstMachineHouse")); } if(request.getParameter("firstSubrack") != null) { firstSubrack = change.AsciiBean(request.getParameter("firstSubrack")); } if(request.getParameter("firstCardId") != null) { firstCardId = cn.ChangNum(request.getParameter("firstCardId")); } if(request.getParameter("firstPortRow") != null) { firstPortRow = cn.ChangNum(request.getParameter("firstPortRow")); } if(request.getParameter("endMachineHouseId") != null) { endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId")); } if(request.getParameter("endMachineHouse") != null) { endMachineHouse = change.AsciiBean(request.getParameter("endMachineHouse")); } if(request.getParameter("endSubrack") != null) { endSubrack = change.AsciiBean(request.getParameter("endSubrack")); } if(request.getParameter("endCardId") != null) { endCardId = cn.ChangNum(request.getParameter("endCardId")); } if(request.getParameter("endPortRow") != null) { endPortRow = cn.ChangNum(request.getParameter("endPortRow")); } serial++; m2Port = new M2Port(m2PortId, type, systemId, m34, m2, firstMachineHouseId, firstMachineHouse, firstSubrack, firstCardId, firstPortRow, endMachineHouseId, endMachineHouse, endSubrack, endCardId, endPortRow, serial ); m2PortVector.add(m2Port); int m2Id = 0; String circuitName = ""; String systemCall = ""; String systemNum = ""; String startDate = ""; String userName = ""; int userTypeId = 0; String builder = ""; String re = ""; if(request.getParameter("circuitName") != null) { circuitName = change.AsciiBean(request.getParameter("circuitName")); } if(request.getParameter("firstMachineHouseId") != null) { firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId")); } if(request.getParameter("endMachineHouseId") != null) { endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId")); } if(request.getParameter("systemCall") != null) { systemCall = change.AsciiBean(request.getParameter("systemCall")); } if(request.getParameter("systemNum") != null) { systemNum = change.AsciiBean(request.getParameter("systemNum")); } if(request.getParameter("startDate") != null) { startDate = change.AsciiBean(request.getParameter("startDate").trim()); } if(request.getParameter("userName") != null) { userName = change.AsciiBean(request.getParameter("userName")); } if(request.getParameter("userTypeId") != null) { userTypeId = cn.ChangNum(request.getParameter("userTypeId")); } if(request.getParameter("builder") != null) { builder = change.AsciiBean(request.getParameter("builder")); } if(request.getParameter("re") != null) { re = change.AsciiBean(request.getParameter("re")); } aM2 = new M2( m2Id, circuitName, firstMachineHouseId, endMachineHouseId, systemCall, systemNum, startDate, userName, userTypeId, builder, re ); m2Service.insertM2(aM2,m2PortVector); session.removeAttribute("vector"); view = request.getRequestDispatcher("/servlet/citytelecom.Servlet.M2.FindAll"); view.forward(request,response); } } catch (Exception e) { status.addException(e); System.out.println(e); } } 这么长,头晕。你说只能看到最后一次的记录,可能的原因是:在每次提交后你没有创建新的元素加入,Vector的add只是加引用,如果你每次用同一个对象,当然是只有一个元素了。是不是作为servlet的全局了?是不是没有new一个对象再加入,等等,还是你自己看一下吧。-----------我是燕赤霞,替人办事是要收钱的。 大体上看了你的code 想问一下:如果你是在form2中每提交一次就调用一次这个servlet(也就是说新建了一个Vector的对象m2PortVector,虽然都叫m2PortVector,但事实上没调用一次servlet,就新建了一个。没有对先前的进行存储。具体如何解决,就看看老前辈的办法吧。 是新建了一个,但是通过 if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); }得到一切保存的vector程序简化如下:response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); response.addHeader("Pragma","No-cache"); response.addHeader("Cache-Control","no-cache"); response.addDateHeader("Expires",1); AsciiBean change=new AsciiBean(); ChangNum cn =new ChangNum(); RequestDispatcher view = null; Status status = new Status(); String bat = request.getParameter("bat"); request.setAttribute("status",status); Vector m2PortVector = new Vector(); if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); } 是新建了一个,但是通过 if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); }得到一切保存的vector程序简化如下: HttpSession session = request.getSession(true); response.addHeader("Pragma","No-cache"); response.addHeader("Cache-Control","no-cache"); RequestDispatcher view = null; Vector m2PortVector = new Vector(); if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); } if(bat.equals("con"))//jsp继续提交form2 { m2Port = new M2Port(.,.,.,.,..); m2PortVector.add(m2Port); session.setAttribute("vector",m2PortVector); view = request.getRequestDispatcher("/M2Jsp/Insert.jsp");//返回jsp view.forward(request,response); } if(bat.equals("fns"))//jsp完成提交 { m2Port = new M2Port(.,.,.,.,..); m2PortVector.add(m2Port); am2 = new M2(.,.,.,.,..); m2Service.insertM2(aM2,m2PortVector); } 从你的程序和描述的现象看,是有些奇怪。因为即便是插入相同的对象,vector的size也会增加的。感觉上象是,每次都没有从session中取到保存的vector,所以每次都是新建的m2PortVector,因此vector的size就是1。你可以增加这样的系统输出看看:if(session.getAttribute("vector")!=null) { m2PortVector=(Vector)session.getAttribute("vector"); //add: System.out.println("Get m2PortVector from Session(Id:"+session.getId()+"). The size is:"+m2PortVector.size()); }首先,你看看有没有这句输出,如果有,再看看Session的Id是否相同;最关键是看看每次vector的size到底有没有增加!另外你的serial有什么意义啊?每次的初值都是0,然后加1存入(没有起到累加的作用)。 这个问题你也可以JScript + DHtml 实现。用JScript在客户端生成一颗DOM树,附表录入的每一条数据都先保存在客户的DOM树中,也可以将主表信息保存在同一颗DOM树中。最终提交时:可以以XML文件的方式提交,也可以以字符串的形式提交。到后台,对这颗树进行解析。数据同时保存在数据库中。这样做的优点在于:1、录入的附表数据在未提交之前可以方便修改和删除。2、数据便于管理。 JSP运行出现HTTP STATUS 500-是什么意思?怎么改? 有几个待解决的问题 请帮忙写一下内外网双接入的route脚本 急求:struts文件上传+进度条 请教,win下用myeclipse开发,运行环境为linux+jboss+mysql,该怎么测试代码呢 大型网站一般用什么操作系统做服务器? 求教一段生成js文件的方法 test 关于日期的问题~~请赐教 谁是性价比最高的web application server? 如何用JSP链接ACCESS数据库? 如何取到格式2002-05-06的日期!(在线,急)
2。开始不提交form1,最后finish时候,才提交,考虑用javascript进行控制
其实关键在于怎么多次填写form2,每填一次提交一次,最后把所有内容存到数据库中。
还有就是可以用session
function test1{
document.form1.action="1.jsp";
document.submit;
}
function test2{
document.form2.action="2.jsp";
document.submit;
}
function test1(){
document.form1.action="1.jsp";
document.form1.submit;
}
function test2(){
document.form2.action="2.jsp";
document.form2.submit;
}
这下个JSP页中SESSION中取数据,并且保存起来,这就完成了数据处理
如果很多,建议修改设计思路。
BTW:为什么要多次提交form2呢?我觉得应该可以没提交一次就往数据库里写一次吧。
关键是用session保存jsp多提交的值的问题,我得源程序只能保存最后一次提交的数据,请看看哪里出了错.
所有需要的类都已导入,程序调试通过,只有一个问题,为什么最后session中的vector只有一个对象.源程序如下:public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html; charset=GBK");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
response.addHeader("Pragma","No-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("Expires",1);
AsciiBean change=new AsciiBean();//转换为字符串的类,已导入
ChangNum cn =new ChangNum();//转换为数字的类,已导入
RequestDispatcher view = null;
Status status = new Status();
String bat = request.getParameter("bat");
request.setAttribute("status",status); int m2PortId = 0;
String type = "";
int systemId = 0;
String m34 = "";
String m2 = "";
int firstMachineHouseId = 0;
String firstMachineHouse = "" ;
String firstSubrack = "";
int firstCardId = 0;
int firstPortRow = 0;
int endMachineHouseId = 0;
String endMachineHouse = "";
String endSubrack = "";
int endCardId = 0;
int endPortRow = 0;
int serial = 0; M2Port m2Port = new M2Port();
M2 aM2 = new M2();
M2Service m2Service = new M2Service();// 执行数据库操作的类
Vector m2PortVector = new Vector(); if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
}
try
{
if(bat.equals("con"))//如果jsp中继续添加M2Port
{
m2PortId = 0;
if(request.getParameter("type") != null)
{
type = change.AsciiBean(request.getParameter("type"));
}
if(request.getParameter("systemId") != null)
{
systemId = cn.ChangNum(request.getParameter("systemId"));
}
if(request.getParameter("m34") != null)
{
m34 = change.AsciiBean(request.getParameter("m34"));
}
if(request.getParameter("m2") != null)
{
m2 = change.AsciiBean(request.getParameter("m2"));
}
if(request.getParameter("firstMachineHouseId") != null)
{
firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId"));
}
if(request.getParameter("firstMachineHouse") != null)
{
firstMachineHouse = change.AsciiBean(request.getParameter("firstMachineHouse"));
}
if(request.getParameter("firstSubrack") != null)
{
firstSubrack = change.AsciiBean(request.getParameter("firstSubrack"));
}
if(request.getParameter("firstCardId") != null)
{
firstCardId = cn.ChangNum(request.getParameter("firstCardId"));
}
if(request.getParameter("firstPortRow") != null)
{
firstPortRow = cn.ChangNum(request.getParameter("firstPortRow"));
}
if(request.getParameter("endMachineHouseId") != null)
{
endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId"));
}
if(request.getParameter("endMachineHouse") != null)
{
endMachineHouse = change.AsciiBean(request.getParameter("endMachineHouse"));
}
if(request.getParameter("endSubrack") != null)
{
endSubrack = change.AsciiBean(request.getParameter("endSubrack"));
}
if(request.getParameter("endCardId") != null)
{
endCardId = cn.ChangNum(request.getParameter("endCardId"));
}
if(request.getParameter("endPortRow") != null)
{
endPortRow = cn.ChangNum(request.getParameter("endPortRow"));
}
serial++; m2Port = new M2Port(m2PortId,
type,
systemId,
m34,
m2,
firstMachineHouseId,
firstMachineHouse,
firstSubrack,
firstCardId,
firstPortRow,
endMachineHouseId,
endMachineHouse,
endSubrack,
endCardId,
endPortRow,
serial
);
m2PortVector.add(m2Port);
session.setAttribute("vector",m2PortVector);
view = request.getRequestDispatcher("/M2Jsp/Insert.jsp");
view.forward(request,response);
}
{
m2PortId = 0;
if(request.getParameter("type") != null)
{
type = change.AsciiBean(request.getParameter("type"));
}
if(request.getParameter("systemId") != null)
{
systemId = cn.ChangNum(request.getParameter("systemId"));
}
if(request.getParameter("m34") != null)
{
m34 = change.AsciiBean(request.getParameter("m34"));
}
if(request.getParameter("m2") != null)
{
m2 = change.AsciiBean(request.getParameter("m2"));
}
if(request.getParameter("firstMachineHouseId") != null)
{
firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId"));
}
if(request.getParameter("firstMachineHouse") != null)
{
firstMachineHouse = change.AsciiBean(request.getParameter("firstMachineHouse"));
}
if(request.getParameter("firstSubrack") != null)
{
firstSubrack = change.AsciiBean(request.getParameter("firstSubrack"));
}
if(request.getParameter("firstCardId") != null)
{
firstCardId = cn.ChangNum(request.getParameter("firstCardId"));
}
if(request.getParameter("firstPortRow") != null)
{
firstPortRow = cn.ChangNum(request.getParameter("firstPortRow"));
}
if(request.getParameter("endMachineHouseId") != null)
{
endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId"));
}
if(request.getParameter("endMachineHouse") != null)
{
endMachineHouse = change.AsciiBean(request.getParameter("endMachineHouse"));
}
if(request.getParameter("endSubrack") != null)
{
endSubrack = change.AsciiBean(request.getParameter("endSubrack"));
}
if(request.getParameter("endCardId") != null)
{
endCardId = cn.ChangNum(request.getParameter("endCardId"));
}
if(request.getParameter("endPortRow") != null)
{
endPortRow = cn.ChangNum(request.getParameter("endPortRow"));
}
serial++; m2Port = new M2Port(m2PortId,
type,
systemId,
m34,
m2,
firstMachineHouseId,
firstMachineHouse,
firstSubrack,
firstCardId,
firstPortRow,
endMachineHouseId,
endMachineHouse,
endSubrack,
endCardId,
endPortRow,
serial
);
m2PortVector.add(m2Port); int m2Id = 0;
String circuitName = "";
String systemCall = "";
String systemNum = "";
String startDate = "";
String userName = "";
int userTypeId = 0;
String builder = "";
String re = "";
if(request.getParameter("circuitName") != null)
{
circuitName = change.AsciiBean(request.getParameter("circuitName"));
}
if(request.getParameter("firstMachineHouseId") != null)
{
firstMachineHouseId = cn.ChangNum(request.getParameter("firstMachineHouseId"));
}
if(request.getParameter("endMachineHouseId") != null)
{
endMachineHouseId = cn.ChangNum(request.getParameter("endMachineHouseId"));
}
if(request.getParameter("systemCall") != null)
{
systemCall = change.AsciiBean(request.getParameter("systemCall"));
}
if(request.getParameter("systemNum") != null)
{
systemNum = change.AsciiBean(request.getParameter("systemNum"));
}
if(request.getParameter("startDate") != null)
{
startDate = change.AsciiBean(request.getParameter("startDate").trim());
}
if(request.getParameter("userName") != null)
{
userName = change.AsciiBean(request.getParameter("userName"));
}
if(request.getParameter("userTypeId") != null)
{
userTypeId = cn.ChangNum(request.getParameter("userTypeId"));
}
if(request.getParameter("builder") != null)
{
builder = change.AsciiBean(request.getParameter("builder"));
}
if(request.getParameter("re") != null)
{
re = change.AsciiBean(request.getParameter("re"));
}
aM2 = new M2( m2Id,
circuitName,
firstMachineHouseId,
endMachineHouseId,
systemCall,
systemNum,
startDate,
userName,
userTypeId,
builder,
re
);
m2Service.insertM2(aM2,m2PortVector);
session.removeAttribute("vector");
view = request.getRequestDispatcher("/servlet/citytelecom.Servlet.M2.FindAll");
view.forward(request,response);
}
}
catch (Exception e)
{
status.addException(e);
System.out.println(e);
} }
-----------
我是燕赤霞,替人办事是要收钱的。
m2PortVector,但事实上没调用一次servlet,就新建了一个。没有对先前的进行存储。具体如何解决,就看看老前辈的办法吧。
if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
}
得到一切保存的vector
程序简化如下:
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
response.addHeader("Pragma","No-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("Expires",1);
AsciiBean change=new AsciiBean();
ChangNum cn =new ChangNum();
RequestDispatcher view = null;
Status status = new Status();
String bat = request.getParameter("bat");
request.setAttribute("status",status); Vector m2PortVector = new Vector();
if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
}
if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
}
得到一切保存的vector
程序简化如下:
HttpSession session = request.getSession(true);
response.addHeader("Pragma","No-cache");
response.addHeader("Cache-Control","no-cache");
RequestDispatcher view = null;
Vector m2PortVector = new Vector();
if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
}
if(bat.equals("con"))//jsp继续提交form2
{
m2Port = new M2Port(.,.,.,.,..);
m2PortVector.add(m2Port);
session.setAttribute("vector",m2PortVector);
view = request.getRequestDispatcher("/M2Jsp/Insert.jsp");//返回jsp
view.forward(request,response);
}
if(bat.equals("fns"))//jsp完成提交
{
m2Port = new M2Port(.,.,.,.,..);
m2PortVector.add(m2Port);
am2 = new M2(.,.,.,.,..);
m2Service.insertM2(aM2,m2PortVector);
}
感觉上象是,每次都没有从session中取到保存的vector,所以每次都是新建的m2PortVector,因此vector的size就是1。
你可以增加这样的系统输出看看:
if(session.getAttribute("vector")!=null)
{
m2PortVector=(Vector)session.getAttribute("vector");
//add:
System.out.println("Get m2PortVector from Session(Id:"+session.getId()+"). The size is:"+m2PortVector.size()); }
首先,你看看有没有这句输出,如果有,再看看Session的Id是否相同;最关键是看看每次vector的size到底有没有增加!另外你的serial有什么意义啊?每次的初值都是0,然后加1存入(没有起到累加的作用)。
到后台,对这颗树进行解析。数据同时保存在数据库中。这样做的优点在于:
1、录入的附表数据在未提交之前可以方便修改和删除。
2、数据便于管理。