JSP_5_JavaBean

Eclipse:快捷提示 alt +/

 

==============================

JavaBean附和某种特定规范的类

1 公有

2 公有的无参构造方法

3 属性私有

4 getter/setter进行封装

---5-3 JSP动作元素------------------------------------------------------------------------

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

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有关

<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中,有两个元素

<jsp:invoke> <jsp:dobody>

---5-4 普通方式创建JavaBean------------------------------------------------------------------------

在JSP页面中如何使用Javabeans

1 像普通Java类一样,创建Javabeans实例(instance)

javabean:

package com.po;
/*
 * 用户类
 * */
public class Users {

    private String username;//用户名
    private String password;//密码
    
    //保留此默认的构造方法
    public Users()
    {
        
    }

    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;
    }
    
    
}

 使用javabean:

 1 导入javabean<%@ page import="com.po.Users" %>

 2 使用普通方法创建javabean 

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%@ page import="com.po.Users" %>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head>
11     <base href="<%=basePath%>">
12     
13     <title>My JSP 'index.jsp' starting page</title>
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22   </head>
23   
24   <body>
25     <% 
26        Users user = new Users();
27        user.setUsername("admin"); //设置用户名
28        user.setPassword("123456");//设置密码
29     %>
30     <h1>使用普通方式创建javabean的实例</h1>
31     <hr>
32        用户名:<%=user.getUsername() %><br>
33        密码:<%=user.getPassword() %><br>
34   </body>
35 </html>

 

---5-5 useBean动作元素------------------------------------------------------------------------

2 在JSP页面中通常使用jsp动作标签使用javabean

与存储JavaBean有关的,包括:

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

1) <jsp:useBean>

  作用:在jsp页面中实例化或者在指定范围内使用javabean:

  <jsp:useBean id="标示符" class="java类名(包名+类名,即全限定名)" scope="作用范围" />

useBean.jsp:

Eclipse:快捷提示 alt +/

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'index.jsp' starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22   
23   <body>
24     <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
25     <h1>使用useBean动作创建javabean的实例</h1>
26     <hr>
27        用户名:<%=myUsers.getUsername() %><br>
28        密码:<%=myUsers.getPassword() %><br>
29   </body>
30 </html>

 

---5-6 setProperty------------------------------------------------------------------------

jsp:setProperty用来设置已经实例化的Bean对象的属性,一共四中形式。

1.跟表单关联 <jsp:setProperty name="JavaBean实例名" property="*" />(跟表单关联)

2.跟表单关联 <jsp:setProperty name="JavaBean实例名" property="javaBean属性名" />(跟表单关联)

3.手工设置    <jsp:setProperty name="JavaBean实例名" property="javaBean属性名"  value ="BeanValue" />(手工设置)

4.request参数关联 <jsp:setProperty name="JavaBean实例名" property="propertyName"  param="request对象中的参数名" />(跟request参数关联)

表单:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
    <h1>系统登录</h1>
    <hr>
    <form name="loginForm" action="dologin.jsp?mypass=999999" 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>
  </body>
</html>

 setProperty四种使用方式:

1.跟表单关联 <jsp:setProperty name="JavaBean实例名" property="*" />

  property="*"自动匹配名字一致的属性,调用setter方法设置

2.跟表单关联 <jsp:setProperty name="JavaBean实例名" property="javaBean属性名" />

  部分匹配,匹配指定的属性

3.手工设置    <jsp:setProperty name="JavaBean实例名" property="javaBean属性名"  value ="BeanValue" />(手工设置)

4.request参数关联 <jsp:setProperty name="JavaBean实例名" property="propertyName"  param="request对象中的参数名" />(跟request参数关联)

  url地址栏传参的方式

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'dologin.jsp' starting page</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22 
23   </head>
24   
25   <body>
26     <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
27     <h1>setProperty动作元素</h1>
28     <hr>
29    <!--根据表单自动匹配所有的属性 -->
30    <%-- 
31    <jsp:setProperty name="myUsers" property="*"/>  
32    --%>
33    <!--根据表单匹配所有部分的属性 -->
34    <%-- 
35    <jsp:setProperty name="myUsers" property="username"/>  
36    --%>
37    <!--根表单无关,通过手工赋值给属性 -->
38    <%-- 
39    <jsp:setProperty name="myUsers" property="username" value="lisi"/>
40    <jsp:setProperty name="myUsers" property="password" value="888888"/>
41    --%>
42    <!--通过URL传参数给属性赋值 -->
43    <jsp:setProperty name="myUsers" property="username"/>
44    <jsp:setProperty name="myUsers" property="password" param="mypass"/>
45    <!-- 使用传统的表达式方式来获取用户名和密码 -->
46    <%--     
47        用户名:<%=myUsers.getUsername() %><br>
48        密码:<%=myUsers.getPassword() %><br> 
49    --%>
50    <!-- 使用getProperty方式来获取用户名和密码 -->
51       用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
52       密码:<jsp:getProperty name="myUsers" property="password"/><br>
53    <br>
54    <br>
55       <a href="testScope.jsp">测试javabean的四个作用域范围</a>
56       <% 
57          request.getRequestDispatcher("testScope.jsp").forward(request, response);
58       %>
59   </body>
60 </html>

 

---5-7 getProperty------------------------------------------------------------------------

获取指定javabean对象的属性值

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

代码参见5-6

---5-8 JavaBean四个作用域范围------------------------------------------------------------------------

使用useBean的scope属性可以指定javabean的作用范围

·page        //仅当前页面有效

·request     //可以通过HttpRequest.getAttribute()方法取得javaBean对象

·session     //可以通过HttpSession.getAttribute()方法取得javaBean对象

·application//可以通过application.getAttribute()方法取得javaBean对象

dologin.jsp:

从此页设置scope,迁移到testScope.jsp

1) <a href="testScope.jsp">测试javabean的四个作用域范围</a> 相当于请求重定向,request无法传递,改为使用下面"2)"的转发。
2) <% request.getRequestDispatcher("testScope.jsp").forward(request, response); %>

相当于同一个request,可以使用request的参数

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'dologin.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
    <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
    <h1>setProperty动作元素</h1>
    <hr>
   <!--根据表单自动匹配所有的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="*"/>  
   --%>
   <!--根据表单匹配所有部分的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username"/>  
   --%>
   <!--根表单无关,通过手工赋值给属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username" value="lisi"/>
   <jsp:setProperty name="myUsers" property="password" value="888888"/>
   --%>
   <!--通过URL传参数给属性赋值 -->
   <jsp:setProperty name="myUsers" property="username"/>
   <jsp:setProperty name="myUsers" property="password" param="mypass"/>
   <!-- 使用传统的表达式方式来获取用户名和密码 -->
   <%--     
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br> 
   --%>
   <!-- 使用getProperty方式来获取用户名和密码 -->
      用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
      密码:<jsp:getProperty name="myUsers" property="password"/><br>
   <br>
   <br>
      <a href="testScope.jsp">测试javabean的四个作用域范围</a>
      <% 
         request.getRequestDispatcher("testScope.jsp").forward(request, response);
      %>
  </body>
</html>

 

testScope.jsp:

2 <%@ page import="com.po.Users" %>导入JavaBean,在下面转换类型时使用:

如:(Users)application.getAttribute("myUsers")).getUsername()

 

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%@ page import="com.po.Users" %>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head>
11     <base href="<%=basePath%>">
12     
13     <title>My JSP 'testScope.jsp' starting page</title>
14     
15     <meta http-equiv="pragma" content="no-cache">
16     <meta http-equiv="cache-control" content="no-cache">
17     <meta http-equiv="expires" content="0">    
18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
19     <meta http-equiv="description" content="This is my page">
20     <!--
21     <link rel="stylesheet" type="text/css" href="styles.css">
22     -->
23 
24   </head>
25   
26   <body>
27     <h1>Javabean的四个作用域范围</h1>
28     <hr>
29     <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
30        用户名:<jsp:getProperty name="myUsers" property="username"/><br>
31        密码:<jsp:getProperty name="myUsers" property="password"/><br>
32     <!-- 使用内置对象获取用户名和密码 -->
33     <hr>
34    <%-- 
35        用户名:<%=((Users)application.getAttribute("myUsers")).getUsername()%><br>
36        密码:<%=((Users)application.getAttribute("myUsers")).getPassword() %><br>
37    --%>
38    <%-- 
39        用户名:<%=((Users)session.getAttribute("myUsers")).getUsername()%><br>
40        密码:<%=((Users)session.getAttribute("myUsers")).getPassword() %><br>
41    --%>
42    <%-- 
43        用户名:<%=((Users)request.getAttribute("myUsers")).getUsername()%><br>
44        密码:<%=((Users)request.getAttribute("myUsers")).getPassword() %><br>
45    --%>
46    <% 
47        String username = "";
48        String password = "";
49        if(pageContext.getAttribute("myUsers")!=null )
50        {
51           username = ((Users)pageContext.getAttribute("myUsers")).getUsername();
52           password = ((Users)pageContext.getAttribute("myUsers")).getPassword();
53        }
54        
55    %>
56     
57        用户名:<%=username%><br>
58        密码:<%=password%><br>
59    
60    
61    
62   </body>
63 </html>

 

 

---5-10 Model1------------------------------------------------------------------------

Model1模型出现前,整个Web应用的情况几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求处理后直接作出相应。

弊端:在界面层充斥大量的业务逻辑代码和数据访问层的代码,Web程序可扩展性和可维护性非常差。

Javabean的出现使jsp页面中使用Javabean封装的数据或者调用Javabean的业务逻辑代码,这样大大提升了程序的可维护性。

Model1模型:

 

 

 JspLoginDemoByModel1参照

javabean:

package com.po;
//モテサァタ・
public class Users {

    private String username;
    private String password;
    
    public Users()
    {
        
    }

    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;
    }
    
    
}

 

DAO:

package com.dao;

import com.po.Users;

//用户的业务逻辑类
public class UsersDAO {
    
    //用户登录方法
    public boolean usersLogin(Users u)
    {
        if("admin".equals(u.getUsername())&&"admin".equals(u.getPassword()))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

 

login:

 

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
   String path = request.getContextPath();
   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
    <head>
        <!-- Page title -->
        <title>imooc - Login</title>
        <!-- End of Page title -->
        <!-- Libraries -->
        <link type="text/css" href="css/login.css" rel="stylesheet" />    
        <link type="text/css" href="css/smoothness/jquery-ui-1.7.2.custom.html" rel="stylesheet" />    
        <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
        <script type="text/javascript" src="js/easyTooltip.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
        <!-- End of Libraries -->    
    </head>
    <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">
            <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>
</html>

 

 

dologin.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>

<% 
  request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="loginUser" class="com.po.Users" scope="page"/>
<jsp:useBean id="userDAO" class="com.dao.UsersDAO" scope="page"/>
<jsp:setProperty property="*" name="loginUser"/>

<%
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  
  //如果用户和密码都等于admin,则登录成功
  if(userDAO.usersLogin(loginUser))
  {
     session.setAttribute("loginUser", loginUser.getUsername());
     request.getRequestDispatcher("login_success.jsp").forward(request, response);
     
  }
  else
  {
     response.sendRedirect("login_failure.jsp");
  }
%>

 

dologin:

 

 

 

---3-3 ------------------------------------------------------------------------

---3-3 ------------------------------------------------------------------------

---3-3 ------------------------------------------------------------------------

posted @ 2017-04-12 09:59  charles999  阅读(246)  评论(0编辑  收藏  举报