javabean

作者: 在努力中 | 来源:发表于2018-07-05 20:07 被阅读0次
    简介:

    Javabean就是一个java类。符合某种规定的java类。作用是,减少代码重复,减少代码冗余,功能区分明确,提高代码的可维护性。

    遵循的设计原则

    公有类、无参的公有构造方法、属性私有、getter和setter方法

    JSP动作元素

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

    第一类是与存取JavaBean有关的,包括:
    <jsp:useBeanxjsp:setPropertyxjsp:getProperty>
    
    第二类是JSP1.2就开始有的基本元素,包括6个动作元素
    <jsp:include><jsp:forward><jsp:param><jsp:plugin><jsp:paramsxjsp:fallback>
    
    第三类是JSP2.0新增加的元素,主要与JSPDocument有关,包括六个元素
    <jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>
    
    第四类是JSP2.0新增的动作元素,主要是用来动态生成XML元素标签的值,包括3个动作
    <jsp:attribute><jsp:body><jsp:element>
    
    第五类是JSP2.0新増的动作元索,主要是用在TagFile中,有2个元素
    <jsp:invoke><jsp:dobody>
    

    在Jsp页面中如何使用Javabeans

    1.像使用普通类一样,创建Javabean实例
    <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
    <%@ page import="com.po.*" %>
    ....
        <h1>使用普通方式创建JavaBean实例</h1>
        <%
        // 创建对象,并赋值
        User user = new User();
        user.setName("admin");
        user.setPassword("123456");
         %>
         
         name:<%= user.getName() %><br>
         pass:<%= user.getPassword() %><br>
    
    ...
    
    
    2. 在jsp页面中,通常使用jsp动作标签使用javabean
    • 2.1 useBeans
    • 2.2 setProperty
    • 2.3 getProperty

    2.1 <jsp:useBeans>
    作用:在jsp页面中实例化,或者指定范围内使用javabean
    <jsp:userBean id="标识符" class = "java类名" scope="作用范围"/>

        <h1>使用useBean动作创建JavaBean实例</h1>
        <jsp:useBean id="user" class="com.po.User" scope="page"></jsp:useBean>
         name:<%= user.getName() %><br>
         pass:<%= user.getPassword() %><br>
    

    此处不能赋值,需要动作元素setProperty
    2.2 <jsp:setProperty>
    作用:给已经实例化的JavaBean对象的属性赋值,一共有四种形式

    1. <jsp:setProperty name="JavaBean实例名" property="*" />表单关联(*号表示匹配表单提交的参数的名字)
    2. <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名"/>也是根表单关联,但是是指定匹配,和*的全部匹配不同
    3. <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="给属性赋值"/>和表单无关,直接在value里赋值
    4. <jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象的参数名"/>跟request参数关联
    

    表单登录

    login.jsp
    
    <form name="loginForm" action="doLogin.jsp" method="post">
            <table>
                <tr>
                    <td>用户名:</td>
                    <td><input type="text" name= "username" value="请输入用户名"></td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td><input type="password" name="password" value="请输入密码"/></td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" value="登录"/></td>           
                </tr>       
            </table>
        </form>
    

    第一种形式

    doLogin.jsp
    
        <h1>setProperty详细讲解</h1>
        <!-- 实例化  javaBean对象 -->
        <jsp:useBean id="user" class="com.po.User" scope="page"></jsp:useBean>
        <!-- 第一种形式 ,根据表单自动匹配所有属性-->
        <jsp:setProperty property="*" name="user"/>
        用户名:<%= user.getUsername() %>
        密码:<%= user.getPassword() %>
    
    

    第二种形式:注意,property写了啥属性,就只能得到啥属性,所以此处只能得到username

    <!-- 第二种形式 ,根据指定属性匹配-->
        <jsp:setProperty property="username" name="user"/>
        用户名:<%= user.getUsername() %>
        密码:<%= user.getPassword() %>
    
        <h1>setProperty详细讲解</h1>
        <!-- 实例化  javaBean对象 -->
        <jsp:useBean id="user" class="com.po.User" scope="page"></jsp:useBean>
        
        <!-- 第一种形式 ,根据表单自动匹配所有属性-->
        <%-- 
        <jsp:setProperty property="*" name="user"/>
        --%>
        <hr>
        <!-- 第二种形式 ,根据指定属性匹配-->
        <%--
        <jsp:setProperty property="username" name="user"/>
        --%>
        <hr>
        <!-- 第三种,可以直接手工赋值 -->
        <%--
        <jsp:setProperty property="username" name="user" value="手工赋值"/>
        <jsp:setProperty property="password" name="user" value="88888"/>
        --%>
        <!-- 第四种,url地址-->
        <jsp:setProperty property="username" name="user" />
        <jsp:setProperty property="password" name="user" param="myPassword"/>
        用户名:<%= user.getUsername() %>
        密码:<%= user.getPassword() %>
        <hr>
    
    getProperty

    获取指定Javabean对象的值

    <jsp:getProperty name="JavaBean实例名" property="属性名"
    
    <!-- 第四种,url地址-->
        <jsp:setProperty property="username" name="user" />
        <jsp:setProperty property="password" name="user" param="myPassword"/>
        用户名:<%= user.getUsername() %>
        密码:<%= user.getPassword() %>
        <hr>
      
         <!-- 用getProerty获取用户名和密码 -->
        <jsp:getProperty property="username" name="user"/> 
        <jsp:getProperty property="password" name="user"/> 
    
    javabean的四个作用范围
    1. page//仅对当前页面有效
    2. request  // 可以通过HttpRequest.getAttribute() 方法获取JavaBean对象
    3. session// 可以通过HttpSession.getAttribute() 方法获取JavaBean对象
    4. application//可以通过application.getAttribute() 方法获取JavaBean对象
    

    application--在所有应用程序中有效
    session--在当前会话中有效
    request--在当前请求中有效
    page--在当前页面有效

    简单的登录案例

    User.java

    package com.po;
    /**
     * 用户类
     */
    public class User {
        private String username;
        private String password;
        public User() {
            super();
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }
    

    UserDao.java

    package com.dao;
    
    import com.po.User;
    
    /**
     * 业务逻辑类
     */
    public class UserDao {
        
        // 判断登录的方法
        public boolean testLogin(User u){
            if("admin".equals(u.getUsername())&&"123456".equals(u.getPassword()))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    

    login.jsp

    <body>
        <div id="container">
            <div class="logo">
                <a href="#"><img src="assets/logo.png" alt="" /></a>
            </div>
            <div id="box">
                <form action="dologin.jsp" method="post">
                <%--  页面  form 表单 action 指向 dologin.jsp--%>
                <p class="main">
                    <label>用户名: </label>
                    <input name="username" value="" /> 
                    <label>密码: </label>
                    <input type="password" name="password" value="">    
                </p>
                <p class="space">
                    <input type="submit" value="登录" class="login" style="cursor: pointer;"/>
                </p>
                </form>
            </div>
        </div>
        </body>
    

    doLogin.jsp

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
    
    
    <!-- 实例化JavaBean -->
    <jsp:useBean id="user" class="com.po.User"></jsp:useBean>
    <jsp:useBean id="userDao" class="com.dao.UserDao"></jsp:useBean>
    <jsp:setProperty property="*" name="user"/>
    
    <%-- login.jsp 页面  form 表单 action 指向本页面--%>
    <%
    
      request.setCharacterEncoding("utf-8");//防止中文乱码
     
     
      
      if(userDao.testLogin(user))
      // 此处的user是实例化对象
      {
         // session 设置属性,以供之后调用
         session.setAttribute("loginUser", user.getUsername());
         // 如果登录成功,使用服务器内部转发 到 success.jsp 页面,并提示用户名
         request.getRequestDispatcher("login_success.jsp").forward(request, response);
         
      }
      else
      {
         // 如果失败,请求重定向
         response.sendRedirect("login_failure.jsp");
      }
    %>
    

    相关文章

      网友评论

          本文标题:javabean

          本文链接:https://www.haomeiwen.com/subject/ynmeuftx.html