Javabean
1.Javabean的簡介:
Javabean就是符合某種特定的規範的Java類。使用Javabeans的好處是解決代碼重複編寫,減少代碼冗餘,功能區分明確,提高了代碼維護性。
2.Javabean設計原則:
公有類、屬性私有、無參的公有構造方法、getter和setter方法。
3.JSP動作元素
動作元素爲請求處理階段提供信息。動作元素遵循XML元素的語法,有一個包含元素名的開始標籤,可以有屬性、可選的內容、與開始標籤匹配的結束標籤。
如下
(1)第一類:與Javabean有關的(重點介紹)
<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
(2)第二類:基本元素,包括6個
<jsp:include>、<jsp:foward><jsp:param>、<jsp:plugin>、<jsp:params>、<jsp:fallback>
(3)第三類:JSP Document有關
<jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression>、<jsp:text>、<jsp:output>
(4)第四類:主要是用來動態生成XML元素標籤值
<jsp:attribute>、<jsp:body>、<jsp:element>
(5)第五類:Tag File
<jsp:invoke>、<jsp:dobody>
一、普通方式創建JavaBean
1.創建項目DeMo在src中創建User類
package com.po;
public class User {
private String username;
private String password;
public User(){
}
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;
}
}
2.在WebRoot中編輯index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.po.*" %>//引入java類
<%
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 'index.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>
<%
User user=new User();
user.setPassword("1234");
user.setUsername("admin");
%>
用戶名:<%=user.getPassword() %>
密碼:<%=user.getUsername() %>
</body>
</html>
二、第二種創建JavaBean(useBean動作元素創建“傳統獲取”)
1.<jsp:useBean>
作用:在jsp頁面中實例化或者在指定範圍內使用javabean。導入java類
<jsp:useBean id="標識符" class="java類名" scope="作用範圍" />
(1)id是實例名可隨便設
(2)scope的作用範圍
- page:僅在當前頁面有效(獲取不到)
- request:可以通過HttpRequest.getAttribute( )方法取得JavaBean對象
scope=“request”時必須用服務器跳轉來傳遞參數
request.getRequestDispatcher("testScope.jsp").forward(request, response)
- session:可以通過HttpSession.getAttribute( )方法取得JavaBean對象
- application:可以通過application.getAttribute( )方法取得JavaBean對象
(3)測試
創建testScope.jsp
<body>
<h1>測試scope動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User" scope="application">
</jsp:useBean>
<hr>
<!-- 通過URL傳參給屬性賦值 -->
用戶名: <jsp:getProperty property="username" name="myUsers" />
密碼: <jsp:getProperty property="password" name="myUsers"/>
</body>
創建dologin.jsp
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User" scope="application"></jsp:useBean>
<hr>
用戶名: <jsp:getProperty property="username" name="myUsers" />
密碼: <jsp:getProperty property="password" name="myUsers"/>
<br> <a href="testScope.jsp">測試</a>
2.<jsp:setProperty>
作用:給已經實例化的javabean對象的屬性賦值,一共四種形式。
(1):
<jsp:setProperty name="JavaBean實例名" property="*" />(跟表單關聯)
注:property=”*”:表示自動匹配表單中password、username和java類中的password、username。
例子:<根據表單自動匹配所有屬性>
1)創建login.jsp
<body>
<form action="dologin.jsp"method="post" name="loginFrom">
用戶名:<input type="text" name="username">
密碼:<input type="password" name="password">
<input type="submit" value="登入">
</form>
</body>
2)創建dologn.jsp
<body>
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User">
</jsp:useBean>
<hr>
<!-- 根據表單匹配所有屬性 -->
<jsp:setProperty property="*" name="myUsers"/>
用戶名:<%=myUsers.getUsername() %>
密碼:<%=myUsers.getPassword() %>
</body>
注: “jsp:useBean” 中的id和 “jsp:setProperty”中的name一樣。property表示自動匹配“login.jsp”表單中的屬性“username”,“password”和“User”類中的“username”,“password”
(3)創建User類
package com.po;
public class User {
private String username;
private String password;
public User(){
}
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;
}
}
2:
<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" />(跟表單關聯)
注:property=“JavaBean屬性名”(User類)表示匹配部分屬性
例子:<根據表單匹配部分屬性 >
(1)User類同上
(2)login.jsp同上
(3)創建dologin.jsp
<body>
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User">
</jsp:useBean>
<hr>
<!-- 根據表單匹配部分屬性 -->
<jsp:setProperty property="username" name="myUsers"/>
用戶名:<%=myUsers.getUsername() %>
密碼:<%=myUsers.getPassword() %>
</body>
3:
<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" value="BeanValue" />(手工設置)
property=“JavaBean屬性名”表示User類中的任意屬性名,value表示我們手動賦值
例子:< 跟表單無關 >
(1)User類同上
(2)login.jsp同上
(3)創建dologin.jsp
<body>
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User">
</jsp:useBean>
<hr>
<!-- 跟表單無關,自己賦值 -->
<jsp:setProperty property="username" name="myUsers" value="cxg"/>
<jsp:setProperty property="password" name="myUsers" value="123"/>
用戶名:<%=myUsers.getUsername() %>
密碼:<%=myUsers.getPassword() %>
</body>
4:
<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" param="request對象中的參數" />(跟request參數關聯)
param表示在表單中action傳參的值
(1)login.jsp
<body>
<form action="dologin.jsp?mypass=999"method="post" name="loginFrom">
用戶名:<input type="text" name="username">
密碼:<input type="password" name="password">
<input type="submit" value="登入">
</form>
</body>
(2)創建dologin.jsp
<body>
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User">
</jsp:useBean>
<hr>
<!-- 通過URL傳參給屬性賦值 -->
<jsp:setProperty property="password" name="myUsers" param="mypass"/>
用戶名:<%=myUsers.getUsername() %>
密碼:<%=myUsers.getPassword() %>
</body>
三、通過getProperty獲取JavaBean對象屬性值
<jsp:getProperty>
作用:獲取指定JavaBean對象屬性值
<jsp:getProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" />
(1)創建login.jsp
<body>
<form action="dologin.jsp"method="post" name="loginFrom">
用戶名:<input type="text" name="username">
密碼:<input type="password" name="password">
<input type="submit" value="登入">
</form>
</body>
(2)創建User類
package com.po;
public class User {
private String username;
private String password;
public User(){
}
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;
}
}
(3)創建dologin.jsp
<body>
<h1>setProperty動作元素</h1>
<jsp:useBean id="myUsers" class="com.po.User"></jsp:useBean>
<hr>
<jsp:setProperty property="username" name="myUsers"/>
<jsp:setProperty property="password" name="myUsers" />
<!-- 通過 -->
用戶名:<jsp:getProperty property="username" name="myUsers" />
密碼: <jsp:getProperty property="password" name="myUsers"/>
</body>