JavaBean 简介
JavaBeans 就是符合某种特定规范的 Java 类。使用 JavaBeans 的好处是解决代码重复编写,减少代码的冗余,功能区分明确,提高了代码的维护性。
-
JavaBeans 的设计原则
- 公有类
- 私有属性
- 无参的公有构造方法
- getter 和 setter 方法(特别注意 setter 方法名一定要和属性变量名一致,比如有属性为username,必须为setUsername 若 setter 为 setName(),则会发生空指针问题)
以下这个类就满足
代码 1
//公有类
public class JavaBeans {
//私有成员属性
private String nameString;
private String ageString;
public JavaBeans() {
//无参公有构造方法
}
//getter 和 setter 方法
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public String getAgeString() {
return ageString;
}
public void setAgeString(String ageString) {
this.ageString = ageString;
}
}
JSP 动作元素
什么是 JSP 的动作:JSP 的动作元素(action elements),动作元素为请求处理阶段提供信息;动作元素遵循 Xml 元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签
-
第一类是与存取 JavaBean 有关的,包括:
- < jsp:useBean> < jsp:setProperty> < jsp:getProperty>
其他类请看官方API
JavaBean 的使用
像使用普通 java 类一样,创建 javabean 类的实例
-
在 Jsp 页面中通常使用 Jsp 动作标签使用 javabean
- useBean 动作
- setProperty 动作
- getProperty 动作
-
< jsp:useBeans>作用,在 Jsp 页面中实例化或者指定范围内使用 javabean:
- < jsp:useBean id="提示符" class="java类名" scope ="作用范围"/>
< jsp:setProperty>
- < jsp:setProperty>作用,给已实例化了的 javabean 对象的属性赋值,一共有四种形式
- < jsp:setProperty name="JavaBean实例名" property ="*"/>(跟表单关联)
- < jsp:setProperty name="JavaBean实例名" property ="JavaBean属性名"/>(跟表单关联)
- < jsp:setProperty name="JavaBean实例名" property ="JavaBean属性名" value="BeanValue"/>(手工设置)
- < jsp:setProperty name="JavaBean实例名" property ="propertyNam" param="request对象中的参数名"/>(跟request对象中的参数有关)
- 结合以下代码分析
代码 2 login.jsp
<%@ 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>
代码 3 dologin.jsp
<%@ 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>
< jsp:getProperty>
- 输出 < jsp:getProperty property="JavaBean实例属性" name="JavaBean实例对象">