您的位置:首页 > 运维架构

jsp动作标签(userBean get/setProperty)

2016-07-30 15:58 441 查看
<jsp:userBean id="" class=""  scope=""/>获取一个值对象

属性: class--->一个可访问到的类名(带类名的访问路径/全限类名)字符串

                              new一个该class类的类对象

             id--->创建类对象 的 对象变量名

             scope---->指定的容器 (即可访问作用域)page/request/session/app四种从小到大,默认page

代码示例:

<jsp:useBean id="user" class="cn.hncu.elWeb.domain.UserModel" scope="request" ></jsp:useBean>在request设置属性为:一个名为user的cn.hncu.elWeb.domain.UserModel类对象
解析源代码:

cn.hncu.elWeb.domain.UserModel user = null;
user = (cn.hncu.elWeb.domain.UserModel) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.REQUEST_SCOPE);
if (user == null){
user = new cn.hncu.elWeb.domain.UserModel();
_jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.REQUEST_SCOPE);
}

<jsp:setProperty property="" name="" param="" value=""/>对值对象设置属性值
属性:name--->设置属性的对象名(userBean的id值)

            property--->要设置的属性名(该name类对象的成员变量名)

            value---->指定属性名的值

            param----->参数名(表单组件的组件名)获取该组件提交的value值

           param/value可不添加  或者添加其中一个(不可同时添加)

代码示例:

<!-- 第一种 ,value指定属性值
<jsp:setProperty property="userName" name="user" value="张阿三"/>
<jsp:setProperty property="userPwd" name="user" value="1234"/>
-->
<!-- 与表单名有关,若表单无值提交,则不赋值 -->
<!-- 第二种 ,param获取表单提交值-->
<jsp:setProperty property="userName" name="user" param="userName"/>
<jsp:setProperty property="userPwd" name="user" param="userPwd"/>

<!-- 第三种 ,默认部分对应获取对应值及 property==param
<jsp:setProperty property="userName" name="user" />
<jsp:setProperty property="userPwd" name="user" />
-->
<!-- 第四种 ,全部对应获取对应值及 property==param
<jsp:setProperty property="*" name="user" />
-->解析源代码:
out.write(" <!-- 第一种 ,value指定属性值\r\n");
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userName", "张阿三", null, null, false);
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userPwd", "1234", null, null, false);

out.write(" <!-- 与表单名有关,若表单无值提交,则不赋值 -->\r\n");
out.write(" <!-- 第二种 ,param获取表单提交值-->\r\n");
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userName", request.getParameter("userName"), request, "userName", false);
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userPwd", request.getParameter("userPwd"), request, "userPwd", false);

out.write(" <!-- 第三种 ,默认部分对应获取对应值及 property==param\r\n");
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userName", request.getParameter("userName"), request, "userName", false);
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("user"), "userPwd", request.getParameter("userPwd"), request, "userPwd", false);

out.write(" <!-- 第四种 ,全部对应获取对应值及 property==param\r\n");
out.write(" ");
org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("user"), request);
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${user}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null, false));

<jsp:getProperty property="" name=""/>获取值对象的属性值
属性:name--->设置属性的对象名(userBean的id值)

            property--->要设置的属性名(该name类对象的成员变量名)

代码示例:
<jsp:getProperty property="userName" name="user"/>
<jsp:getProperty property="userPwd" name="user"/>

解析源代码:
out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((cn.hncu.elWeb.domain.UserModel)_jspx_page_context.findAttribute("user")).getUserName())));

out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((cn.hncu.elWeb.domain.UserModel)_jspx_page_context.findAttribute("user")).getUserPwd())));
注意:
    1:jsp:getProperty中的property值对应的是相应的get函数名

    2:jsp:setProperty中的property值是调用org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper()函数,并非是获取类对象调用set函数

          原因:解决当对象属性变量类型与value类型不一致

           解决办法:introspecthelper()中解决(别人做好了,我们注意用法即可:)

          用法:1:对应value值得类型,自建getter/setter函数替代,

                      2:删除原变量类型的getter/setter函数

                      3:property值为替代函数的小写函数名(不带get/set)

代码实例:

前端jsp代码:

 
<form action="show.jsp" method="post">
姓名:<input type="text" name="userName">
密码:<input type="password" name="userPwd">
爱好: <input type="checkbox" name="userbody" value="MISIC"/>音乐
<input type="checkbox" name="userbody" value="TV"/>电视
<input type="checkbox" name="userbody" value="EAT"/>吃
出生日期:<input type="text" name="brityday">
<input type="submit" value="提交">
</form>接受并显示的jsp动作标签代码:
<span style="color:#000000;"><jsp:useBean id="user" class="cn.hncu.elWeb.domain.UserModel" scope="request" ></jsp:useBean>

<jsp:setProperty property="userName" name="user" param="userName"/>
<jsp:setProperty property="userPwd" name="user" param="userPwd"/>
<jsp:setProperty property="userbody" name="user" param="userbody"/>
<jsp:setProperty property="brity" name="user" param="brityday"/>

<jsp:getProperty property="userName" name="user"/>
<jsp:getProperty property="userPwd" name="user"/>
<jsp:getProperty property="userbody" name="user"/>
<jsp:getProperty property="brity" name="user"/></span>值对象:
<span style="color:#000000;">package cn.hncu.elWeb.domain;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class UserModel {

private String userName;
private String userPwd;
private String[] userbody;
private Date brityday;

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String[] getUserbody() {
return userbody;
}
public void setUserbody(String[] userbody) {
this.userbody = userbody;
}

public String getBrity() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(brityday);
}
public void setBrity(String brity) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
brityday=sdf.parse(brity);
} catch (ParseException e) {
throw new RuntimeException("输入格式错误");
}
}

}</span>


         

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Tag jspuserBean