cookie
cookie最早是由Netscape公司提出来的,用来存储客户的少量状态信息。如果您对cookie的具体细节感兴趣可以查阅
参考资料
中的cookie spec。
bean:cookie标签取回请求中名称为name的cookie的值。如果没有指定multiple属性则依据刚取回的值创建一个Cookie类型的bean。如果指定了multiple属性则依据刚取回的值创建一个Cookie[]类型的数组。然后用id属性值将Cookie或Cookie[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
下面的代码片段示例了如何使用bean:cookie标签读取名为JSESSIONID的cookie的值,并且使用了两种方式进行了输出:
<logic:present cookie="JSESSIONID"> <bean:cookie id="jSession" name="JSESSIONID"/> <!-- 其它标签通过绑定到page作用域中的属性使用该值 --> 这个cookie的名称是<bean:write name="jSession" property="name"/>,值为<bean:write name="jSession" property="value"/>。<br/> <!-- JSP脚本通过scripting变量使用该值 --> <% String name = jSession.getName(); String value = jSession.getValue(); out.println("这个cookie的名称是"+name+",值为"+value+"。<br/>"); %></logic:present>
回页首
bean:define bean:define标签在toScope(如果没有指定值就使用page作用域)指定的作用域中创建一个新属性,同时创建一个scripting变量。我们可以通过id值使用它们。新创建的属性可以由其它标签使用,而新创建的scripting变量可以由JSP脚本使用。
我们可以使用三种方式为新创建的属性和scripting变量赋值:
通过该标签的name、property和scope取回值,并且保持类型的一致性,除非取回的值为Java的原始类型,这时会使用适合的包装器类对这些值进行包装。 通过该标签的value指定值,这时新创建的属性和scripting变量的类型为java.lang.String。 通过在该标签的体中嵌入值,这时新创建的属性和scripting变量的类型为java.lang.String。
下面的代码片段示例了如何使用bean:define标签创建新属性values和新scripting变量values,它将listForm中persons的值取出来赋给values:
<bean:define id="values" name="listForm" property = "persons" type="java.util.List"/>
下面给出ListForm的代码片段以帮助您更好的理解,其中Person是一个只有id和name两个属性的简单bean:
public class ListForm extends ActionForm { private List<Person> persons = null; public List<Person> getPersons() { return persons; } public void setPersons(List<Person> persons) { this.persons = persons; } public void reset(ActionMapping mapping, HttpServletRequest request) { persons = null; }}
下面的代码片段示例了logic:iterate标签如何使用bean:define标签创建的新属性values:
<logic:iterate id="person" name="values"> <bean:write name="person" property="id"/><br/></logic:iterate>
下面的代码片段示例了JSP脚本如何使用bean:define标签创建的新scripting变量values:
<% Person p = new Person(); for(int i=0;i<values.size();i++){ p = (Person)values.get(i); out.println(p.getId()); out.println("<br/>"); } %>
bean:cookie标签取回请求中名称为name的cookie的值。如果没有指定multiple属性则依据刚取回的值创建一个Cookie类型的bean。如果指定了multiple属性则依据刚取回的值创建一个Cookie[]类型的数组。然后用id属性值将Cookie或Cookie[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
下面的代码片段示例了如何使用bean:cookie标签读取名为JSESSIONID的cookie的值,并且使用了两种方式进行了输出:
<logic:present cookie="JSESSIONID"> <bean:cookie id="jSession" name="JSESSIONID"/> <!-- 其它标签通过绑定到page作用域中的属性使用该值 --> 这个cookie的名称是<bean:write name="jSession" property="name"/>,值为<bean:write name="jSession" property="value"/>。<br/> <!-- JSP脚本通过scripting变量使用该值 --> <% String name = jSession.getName(); String value = jSession.getValue(); out.println("这个cookie的名称是"+name+",值为"+value+"。<br/>"); %></logic:present>
回页首
bean:define
我们可以使用三种方式为新创建的属性和scripting变量赋值:
通过该标签的name、property和scope取回值,并且保持类型的一致性,除非取回的值为Java的原始类型,这时会使用适合的包装器类对这些值进行包装。 通过该标签的value指定值,这时新创建的属性和scripting变量的类型为java.lang.String。 通过在该标签的体中嵌入值,这时新创建的属性和scripting变量的类型为java.lang.String。
下面的代码片段示例了如何使用bean:define标签创建新属性values和新scripting变量values,它将listForm中persons的值取出来赋给values:
<bean:define id="values" name="listForm" property = "persons" type="java.util.List"/>
下面给出ListForm的代码片段以帮助您更好的理解,其中Person是一个只有id和name两个属性的简单bean:
public class ListForm extends ActionForm { private List<Person> persons = null; public List<Person> getPersons() { return persons; } public void setPersons(List<Person> persons) { this.persons = persons; } public void reset(ActionMapping mapping, HttpServletRequest request) { persons = null; }}
下面的代码片段示例了logic:iterate标签如何使用bean:define标签创建的新属性values:
<logic:iterate id="person" name="values"> <bean:write name="person" property="id"/><br/></logic:iterate>
下面的代码片段示例了JSP脚本如何使用bean:define标签创建的新scripting变量values:
<% Person p = new Person(); for(int i=0;i<values.size();i++){ p = (Person)values.get(i); out.println(p.getId()); out.println("<br/>"); } %>
