<jsp:userbean>的用法

<jsp:userbean>的用法

需要两个页面一个bean,一个action(应为我用struts做的所以是action,这里当然可以换成servlet);

第一个页面中userbean.jsp中什么都没有只有一个form

<body>
   <html:form action="/userbean">
    <html:submit/><html:cancel/>
   </html:form>
</body>

====================

然后是一个简单的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

   <body>
   <jsp:useBean id="person" class="vo.Person" scope="request"></jsp:useBean>  
   <%
    out.println(person.getName()+person.getAge());
   
    %>
   </body>

需要注意:对于接受页面的scope参数因该与前面的action中的设置的参数一样,这里接受是request,而前面action中也是用request.setAttribute来做的所以可以取到,如果换成了不一样的就不可能去不到了,因为是不同的对象

所以:action或servlet中使用什么范围,jsp中就使用什么范围

另外jsp有四个范围page,request,session,application,要搞清楚他们之间的区别

现在要介绍如果在strut-config.xml中将<forward>标签中的属性redirect="true"会怎样?答案是在success.jsp中取到的是空,为什么?

应为request的范围只有在一次请求中才有效,这次请求的发起者是userbean.jsp中的form:

<body>
   <html:form action="/userbean">
    <html:submit/><html:cancel/>
   </html:form>
</body>

没有redirect或者redirect="false"的UserbeanAction处理完业务后就转发了这次请求,所以这次请求的发起者仍然是userbean.jsp,于是在success.jsp中可以接到数据。

但是用了redirect="true"后,当UserbeanAction处理完业务后就从新定向到success.jsp这时就相当于这个action执行了一次请求(request),而request.setAttribute("person",person)的这个request是第一个页面userbean.jsp的,所以第二个页面没有得到

所以问题的关键在于你是否明白了有redirect就表示多创造了一个request,于是原来的那个就结束了

而没有转发是延长了request的生命周期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值