用struts2和jsp做一个系统,从用户列表选中一个用户修改,修改完成后返回用户列表,如何带回原列表

樊惠萍 2019-12-21 18:29:00

推荐回答

struts与数据库的增删查改没关系,操作数据库你可以用hibernate或者jdbc理这些数值时,常常返回错误。VLOOKUP函数函数名称:VLOOKU。
黄盛磊2019-12-21 19:14:35

提示您:回答为网友贡献,仅供参考。

其他回答

  • /jsp/userList.jspuserList.acion//操作成功之后,跳到显示列表的的action里边,由显示列表的action来返回到列表页面。
    赵韦韦2019-12-21 18:57:37
  • struts2中用户提交的表单数据可以保存下来,一旦提交失败就会把原来的数据填充到对应的位置。思路:将struts2的控制标签嵌套在input表单元素中,根据action取得的值是否与页面radio的值相等,来判断用户原来选择的是哪个radio。checked="checked"官方电话官方网站向TA提问。
    赵高印2019-12-21 18:41:32

相关问答

#include"stdio.h"#include"stdlib.h"#defineSTACK_INIT_SIZE10//栈的初始长度#defineSTACKINCREMENT5//栈的追加长度typedefstructbitree{chardata;structbitree*lchild,*rchild;}bitree;//二叉树结点定义typedefstruct{bitree**base;bitree**top;intstacksize;}sqstack;//链栈结点定义top栈顶base栈底且栈元素是指向二叉树结点的二级指针//建立一个空栈intinitstacksqstack*s{s->base=bitree*mallocSTACK_INIT_SIZE*sizeofbitree;//栈底指向开辟空间if!s->baseexit1;//抛出异常s->top=s->base;//栈顶=栈尾表示栈空s->stacksize=STACK_INIT_SIZE;//栈长度为开辟空间大小return1;}//进栈intpushsqstack*s,bitree*e{ifs->top-s->base>=s->stacksize//如果栈满追加开辟空间{s->base=bitree*reallocs->base,s->stacksize+STACKINCREMENT*sizeofbitree;if!s->baseexit1;//抛出异常s->top=s->base+s->stacksize;//感觉这一句没用s->stacksize+=STACKINCREMENT;}*s->top=e;s->top++;//进栈栈顶后移return1;}//出栈intpopsqstack*s,bitree**e{ifs->top==s->basereturn0;//栈空返回0--s->top;*e=*s->top;//栈顶前移取出栈顶元素给ereturn1;}//取栈顶intgettopsqstack*s,bitree**e//去栈顶元素注意top指向的是栈顶的后一个{ifs->top==s->basereturn0;//所以s->top-1*e=*s->top-1;return1;}/*------------------------非递归-----先序建立二叉树----------------------------------*/bitree*createprebitree{charch;bitree*ht,*p,*q;sqstack*s;s=mallocsizeofbitree;//加上这一句为s初始化开辟空间ch=getchar;ifch!=''#''&&ch!=''\n''/*输入二叉树先序顺序是以完全二叉树的先序顺序不是完全二叉树的把没有的结点以#表示*/{ht=bitree*mallocsizeofbitree;ht->data=ch;ht->lchild=ht->rchild=NULL;p=ht;initstacks;pushs,ht;//根节点进栈whilech=getchar!=''\n''//算{ifch!=''#''{q=bitree*mallocsizeofbitree;//法q->data=ch;//ifp==*s->top-1p->lchild=q;//核elsep->rchild=q;//pushs,q;p=q;//心}//else{ifp==*s->top-1p->lchild=NULL;//的elsep->rchild=NULL;//pops,&p;}//步//}//骤returnht;}elsereturnNULL;}/*--------------------------递归---------先序建立二叉树-------------------------------*/voidCreateBiTreebitree**T{//按先序次序输入二叉树中的结点的值,空格字符表示空树,//构造二叉链表表示二叉树charch;scanf"%c",&ch;ifch==''#''*T=NULL;else{*T=bitree*mallocsizeofbitree;if!*Texit1;*T->data=ch;//生成根结点CreateBiTree&*T->lchild;//构造左子树CreateBiTree&*T->rchild;//构造右子树}}/*--------------------------非递归-------中序建立二叉树-------------------------------*//*--------------------------递归---------中序建立二叉树-------------------------------*//*--------------------------非递归-------后序建立二叉树-------------------------------*//*--------------------------递归---------后序建立二叉树-------------------------------*//*-----------------------非递归------先序输出二叉树------------------------------*/voidpreordertraversebitree*h{sqstackm;initstack&m;whileh||m.base!=m.top{ifh{push&m,h;printf"%c",h->data;h=h->lchild;}else{pop&m,&h;h=h->rchild;}}}/*------------------------非递归-----中序输出二叉树----------------------------*/voidinordertraversebitree*h{sqstackm;initstack&m;whileh||m.base!=m.top{ifh{push&m,h;h=h->lchild;}else{pop&m,&h;printf"%c",h->data;h=h->rchild;}}}/*---------------------非递归----后序遍历二叉树----------------------------------*/voidpostordertraversebitree*h{sqstackm;initstack&m;whileh||m.base!=m.top{ifh{push&m,h;h=h->lchild;}else{bitree*r;//使用r结点表示访问了右子树代替标志域gettop&m,&h;ifh->rchild&&h->rchild!=r{h=h->rchild;push&m,h;h=h->lchild;}else{pop&m,&h;printf"%c",h->data;r=h;h=NULL;}}}}//层次遍历二叉树用队列哈哈以后做/*-------------------------------主过程-------------------------------*/intmain{bitree*ht;printf"先序非递归建立一个二叉树:";ifht=createprebitree!=NULL//非递归建立//CreateBiTree&ht;//ifht!=NULL//递归建立{printf"先序遍历输出二叉树:";preordertraverseht;putchar''\n'';printf"中序遍历输出二叉树:";inordertraverseht;putchar''\n'';printf"后序遍历输出二叉树:";postordertraverseht;putchar''\n'';}elseprintf"空二叉树\n";}这是先序递归和非递归建立二叉树和先、中、后的遍历输出。
文件main.cpp代码如下:#include//malloc等#include//标准输入输出头文件,包括EOF=^Z或F6,NULL等#include//atoi,exit#include//数学函数头文件,包括floor,ceil,abs等#defineClearBiTreeDestroyBiTree//清空二叉树和销毁二叉树的操作一样typedefstructBiTNode{intdata;//结点的值BiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;intNil=0;//设整型以0为空voidvisitinte{printf"%d",e;//以整型格式输出}voidInitBiTreeBiTree&T{//操作结果:构造空二叉树TT=NULL;}voidCreateBiTreeBiTree&T{//算法6.4:按先序次序输入二叉树中结点的值可为字符型或整型,在主程中定义,//构造二叉链表表示的二叉树T。变量Nil表示空子树。修改intnumber;scanf"%d",&number;//输入结点的值ifnumber==Nil//结点的值为空T=NULL;else//结点的值不为空{T=BiTreemallocsizeofBiTNode;//生成根结点if!TexitOVERFLOW;T->data=number;//将值赋给T所指结点CreateBiTreeT->lchild;//递归构造左子树CreateBiTreeT->rchild;//递归构造右子树}}voidDestroyBiTreeBiTree&T{//初始条件:二叉树T存在。操作结果:销毁二叉树TifT//非空树{DestroyBiTreeT->lchild;//递归销毁左子树,如无左子树,则不执行任何操作DestroyBiTreeT->rchild;//递归销毁右子树,如无右子树,则不执行任何操作freeT;//释放根结点T=NULL;//空指针赋0}}voidPreOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数。修改算法6.1//操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT//T不空{VisitT->data;//先访问根结点PreOrderTraverseT->lchild,Visit;//再先序遍历左子树PreOrderTraverseT->rchild,Visit;//最后先序遍历右子树}}voidInOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:中序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT{InOrderTraverseT->lchild,Visit;//先中序遍历左子树VisitT->data;//再访问根结点InOrderTraverseT->rchild,Visit;//最后中序遍历右子树}}voidPostOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT//T不空{PostOrderTraverseT->lchild,Visit;//先后序遍历左子树PostOrderTraverseT->rchild,Visit;//再后序遍历右子树VisitT->data;//最后访问根结点}}voidmain{BiTreeT;InitBiTreeT;//初始化二叉树Tprintf"按先序次序输入二叉树中结点的值,输入0表示节点为空,输入范例:1200300\n";CreateBiTreeT;//建立二叉树Tprintf"先序递归遍历二叉树:\n";PreOrderTraverseT,visit;//先序递归遍历二叉树Tprintf"\n中序递归遍历二叉树:\n";InOrderTraverseT,visit;//中序递归遍历二叉树Tprintf"\n后序递归遍历二叉树:\n";PostOrderTraverseT,visit;//后序递归遍历二叉树T。