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>