zoukankan      html  css  js  c++  java
  • javabean的自省机制

    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。对于自省机制,举例如下:

    HTML中内容(注意红色部分):

    <form name="form1" method="post" action="chkuser.jsp" onSubmit="return check()">
    登录帐号:
    <input type="text" id="userName" name="userName"><br>
    登录密码:
    <input type="password" id="userPWD" name="userPWD"><br>
    <input type="submit" name="submit" value="提交">
    <input type="reset" name="reset" value="重填">
    </form>

    JSP中内容:

    <jsp:useBean id="user" class="test.UserBean" scope="session"></jsp:useBean>
    < jsp:setProperty name="
    user" property="*" />

    useBean中的id必须和setProperty中的name一致

    JavaBean中内容(注意红色部分):

    String userName = null;
    String userPWD = null;

    可以看到,HTML表单中的参数值会自动赋给JavaBean中的同名属性,而且由于在JSP中设置了user属性,在JSP中出现的以下语句:

    String userName = user.getUserName();

    String userPWD = user.getUserPWD();

    其中的userName和userPWD也可以间接通过JavaBean的自省机制赋值

    HttpServlet 中使用JAVA BEAN 自省机制

    在JSP 中是这样用的:

    <jsp:useBean id="bean" class="webtest.beans.UserBean"/>
    <jsp:setProperty name="bean" property="*" />

    查看work 目录JSP 转化成class 的代码后,

    在Servlet中使用JAVA BEAN 自省机制,很简单只需要调用 org.apache.jasper.runtime.JspRuntimeLibrary.introspect() 方法

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    UserBean bean
    =new UserBean();
    org.apache.jasper.runtime.JspRuntimeLibrary.introspect(bean,request);
    response.setContentType(
    "text/html");
    PrintWriter out
    = response.getWriter();
    out.println(
    "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
    out.println(
    "<HTML>");
    out.println(
    " <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println(
    " <BODY>");
    out.print(
    " This is ");
    out.print(
    this.getClass());
    out.print(
    "<br>");
    out.print(
    "username="+bean.getUsername());
    out.print(
    "<br> password="+bean.getPassword());
    out.println(
    ", using the POST method");
    out.println(
    " </BODY>");
    out.println(
    "</HTML>");
    out.flush();
    out.close();
    }
  • 相关阅读:
    C#将JSON字符串对象序列化与反序列化
    Chrome 中的 JavaScript 断点设置和调试技巧
    JS 关闭 页面 浏览器 事件
    使用Jquery向一个空白网页动态创建一个iframe,及嵌入页面,和向嵌入页面传参
    js/jquery判断浏览器的方法小结
    Javascript中document.execCommand()的用法
    js 点击默认另存 ,不是打开 Blob 操作
    浅析jQuery删除节点的三个方法
    IE 和Firefox的js兼容性总结
    removeNode is not defined removeNode is not a function
  • 原文地址:https://www.cnblogs.com/haquanwen/p/3812617.html
Copyright © 2011-2022 走看看