zoukankan      html  css  js  c++  java
  • 在JSP页面中使用JavaBean

    一、JavaBean

    JavaBean是符合某种特定规范的Java类,通过JavaBean可以有效减少代码冗余,解决代码重复编写问题,功能区分明确,提高代码可维护性。

    JavaBean的设计原则:共有类+无参的共有构造方法+getter和setter方法+属性私有

    二、JSP动作元素

    JSP动作元素(action elements),动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。

    JSP动作的分类:

    1、与存取JavaBean有关的动作

    <jsp:useBean><jsp:setProperty><jsp:getProperty>

    2、JSP1.2开始有的基本元素,包括6个动作元素

    <jsp:include><jsp:forward><jsp:param><jsp:plugin><jsp:params><jsp:fallback>

    3、JSP2.0新增加的元素,主要与JSP Document有关,包括6个元素

    <jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>

    4、JSP2.0新增加的元素,主要是用来动态生成XML元素标签的值,包括3个动作

    <jsp:attribute><jsp:body><jsp:element>

    5、JSP2.0新增加的元素,主要用在Tag File中,有2个元素

    <jsp:invoke><jsp:dobody>

    三、在JSP页面中使用JavaBean

    3.1、使用普通方式创建JavaBean的实例

      <body>
        <% 
           User user = new User();
           user.setName("admin"); //设置用户名
           user.setPwd("000000");//设置密码
        %>
        <h1>使用普通方式创建JavaBean的实例</h1>
        <hr>
           用户名:<%=user.getName() %><br>
           密码:<%=user.getPwd() %><br>
      </body>

    3.2 在JSP页面通过动作标签来使用JavaBean

    1、<jsp:useBean>在JSP页面中实例化或者在指定范围内使用JavaBean

    <jsp:useBean id="标示符" class="类名" scope="作用范围">

    示例代码:

      <body>
        <jsp:useBean id="user" class="model.User" scope="page">
        <h1>使用useBean动作创建JavaBean的实例</h1>
        <hr>
           用户名:<%=user.getName() %><br>
           密码:<%=user.getPwd() %><br>
      </body>

    【注】用户名和密码的页面显示结果都为null,因为没有给该实例的属性赋值

    2、<jsp:setProperty>给已经实例化的JavaBean对象的属性赋值,共有四种形式

    <!-- 全部属性与表单关联 -->
    <jsp:setProperty name="JavaBean实例名" property="*"/>
    <!-- 部分属性与表单关联-->
    <jsp:setProperty name="JavaBean实例名" property="指定属性名"/>
    <!-- 手工设置属性-->
    <jsp:setProperty name="JavaBean实例名" property="指定属性名" value="指定属性值"/>
    <!-- 与request参数关联-->
    <jsp:setProperty name="JavaBean实例名" property="指定属性名" value="指定属性值" param="request对象中的参数名"/>

    3、<jsp:getProperty>获取指定JavaBean对象的属性值

    <jsp:getProperty name="JavaBean实例名" property="属性名"/>

    综合实例

    <body>
        <jsp:useBean id="myUser" class="model.User" scope="page"/>
        <h1>setProperty动作元素</h1>
        <hr>
       <!--根据表单自动匹配所有的属性 -->
       <%-- 
       <jsp:setProperty name="myUser" property="*"/>  
       --%>
       <!--根据表单匹配所有部分的属性 -->
       <%-- 
       <jsp:setProperty name="myUser" property="name"/>  
       --%>
       <!--根表单无关,通过手工赋值给属性 -->
       <%-- 
       <jsp:setProperty name="myUser" property="name" value="admin"/>
       <jsp:setProperty name="myUser" property="pwd" value="000000"/>
       --%>
       <!--通过URL传参数给属性赋值 -->
       <jsp:setProperty name="myUsers" property="name"/>
       <jsp:setProperty name="myUsers" property="pwd" param="password"/>
       <!-- 使用传统的表达式方式来获取用户名和密码 -->     
          用户名:<%=myUser.getName() %><br>
          密码:<%=myUser.getPwd() %><br>  
       <!-- 使用getProperty方式来获取用户名和密码 -->
          用户名:<jsp:getProperty name="myUser" property="name"/><br>
          密码:<jsp:getProperty name="myUser" property="pwd"/><br>   
      </body>

    3.3 JavaBean的4个作用域范围

    ①page:仅在当前页面有效

    ②request:可以通过HttpRequest.getAttribute()方法获得JavaBean对象

    ③session:可以通过HttpSession.getAttribute()方法获得JavaBean对象

    ④application:可以通过application.getAttribute()方法获得JavaBean对象

      <body>
        <h1>Javabean的四个作用域范围</h1>
        <hr>
        <jsp:useBean id="myUser" class="model.User" scope="page"/>
           用户名:<jsp:getProperty name="myUser" property="name"/><br>
           密码:<jsp:getProperty name="myUser" property="pwd"/><br>
        <!-- 使用内置对象获取用户名和密码 -->
        <hr>
       <%-- 
           用户名:<%=((Users)application.getAttribute("myUser")).getName()%><br>
           密码:<%=((Users)application.getAttribute("myUser")).getPwd() %><br>
       --%>
       <%-- 
           用户名:<%=((Users)session.getAttribute("myUser")).getName()%><br>
           密码:<%=((Users)session.getAttribute("myUser")).getPwd() %><br>
       --%>
       <%-- 
           用户名:<%=((Users)request.getAttribute("myUser")).getName()%><br>
           密码:<%=((Users)request.getAttribute("myUser")).getPwd() %><br>
       --%>
       <% 
           String username = "";
           String password = "";
           if(pageContext.getAttribute("myUser")!=null )
           {
              username = ((Users)pageContext.getAttribute("myUser")).getName();
              password = ((Users)pageContext.getAttribute("myUser")).getPwd();
           }       
       %>    
           用户名:<%=username%><br>
           密码:<%=password%><br>   
      </body>

    【注】<a href="url">标签是一次请求重定向,相当于重新发送了一次request,要想request域起作用,应该使用请求转发,即request.getRequestDispatcher(url).forward(request, response);

    参考资料:慕课网【JAVA遇见HTML——JSP篇】http://www.imooc.com/learn/166





  • 相关阅读:
    对vue-cli各个目录的理解 和 在 vue 中使用json-server
    发论文的一些常见问题
    latex初步入门:springer llncs
    docker tomcat8 mysql8部署常见错误
    docker快速部署本地项目到服务器(tomcat8+mysql8)
    IDEA构建spring项目
    [b0042] python 归纳 (二七)_gui_tkinter_基本使用
    [b0038] python 归纳 (二三)_多进程数据共享和同步_队列Queue
    springboot进入html
    HbaseShell启动
  • 原文地址:https://www.cnblogs.com/sherryueda/p/4270400.html
Copyright © 2011-2022 走看看