jsp:userbean的用法一直是大家所关心的一个点,大家看完下面的内容可以去试一试这个的用法,希望能对大家有所帮助。
需要两个页面一个bean,一个action(应为我用struts做的所以是action,这里当然可以换成servlet);
第一个页面中userbean.jsp中什么都没有只有一个form。
====================
然后是一个简单的bean,
package vo;
public class Person {
private String name;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
================
接着是action
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserbeanForm userbeanForm = (UserbeanForm) form;// TODO Auto-generated method stub
Person person = new Person();
person.setAge("21");
person.setName("hp");
request.setAttribute("person", person);
return mapping.findForward("success");
}
我这里采用findForward是转发(当使用重定向时就因该使用session.setAttribute)
最后是接受页面success.jsp
需要注意:对于接受页面的scope参数因该与前面的action中的设置的参数一样,这里接受是request,而前面action中也是用request.setAttribute来做的所以可以取到,如果换成了不一样的就不可能去不到了,因为是不同的对象。
所以:action或servlet中使用什么范围,jsp中就使用什么范围。
另外jsp有四个范围page,request,session,application,要搞清楚他们之间的区别。
现在要介绍如果在strut-config.xml中将标签中的属性redirect="true"会怎样?答案是在success.jsp中取到的是空,为什么?
应为request的范围只有在一次请求中才有效,这次请求的发起者是userbean.jsp中的form:
没有redirect或者redirect="false"的UserbeanAction处理完业务后就转发了这次请求,所以这次请求的发起者仍然是userbean.jsp,于是在success.jsp中可以接到数据。
但是用了redirect="true"后,当UserbeanAction处理完业务后就从新定向到success.jsp这时就相当于这个 action执行了一次请求(request),而request.setAttribute("person",person)的这个request是 第一个页面userbean.jsp的,所以第二个页面没有得到。
上一篇:Session工作原理
下一篇:http保存会话状态3种方法
一级建造师二级建造师消防工程师造价工程师土建职称房地产经纪人公路检测工程师建筑八大员注册建筑师二级造价师监理工程师咨询工程师房地产估价师 城乡规划师结构工程师岩土工程师安全工程师设备监理师环境影响评价土地登记代理公路造价师公路监理师化工工程师暖通工程师给排水工程师计量工程师
执业药师执业医师卫生资格考试卫生高级职称护士资格证初级护师主管护师住院医师临床执业医师临床助理医师中医执业医师中医助理医师中西医医师中西医助理口腔执业医师口腔助理医师公共卫生医师公卫助理医师实践技能内科主治医师外科主治医师中医内科主治儿科主治医师妇产科医师西药士/师中药士/师临床检验技师临床医学理论中医理论