javabean简介:符合某种特定的规范的Java类,使用javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。
javabean的设计原则:共有类,无参的共有构造方法,属性私有,getter和setter方法
jsp动作元素,动作元素为请求处理阶段提供信息,动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选内容,与开始标签匹配的结束标签。
什么是JSP动作?
(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有关,包括6个元素,<jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>
(4)JSP2.0新增加的动作元素,主要是用来动态生成XML元素标签的值,包括3个动作,<jsp:attribute><jsp:body><jsp:element>
javabean的设计原则:共有类,无参的共有构造方法,属性私有,getter和setter方法
jsp动作元素,动作元素为请求处理阶段提供信息,动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选内容,与开始标签匹配的结束标签。
什么是JSP动作?
(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有关,包括6个元素,<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中,有2个元素,<jsp:invoke><jsp:dobody>
<%@ page import="com.User" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
User user=new User();
user.setUsername("admin");
user.setPassword("123");
%>
<h1>使用普通方式创建javabean的实例</h1>
<hr/>
用户名:<%=user.getUsername() %>
密码:<%=user.getPassword() %>
</body>
</html>
User.java
package com;
public class User {
private String username;
private String password;
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;
}
public User(){
}
}
login.jsp
<body>
<h1>系统登录</h1>
<hr/>
<form name="loginForm" action="dologin.jsp?mypass=9999" 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>
dologin.jsp
<body>
<!-- 下面的name都要和id一样 -->
<jsp:useBean id="myUsers" class="com.User" 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="8888"> --%>
<!-- 通过URL传参数给属性赋值 ,根据提交参数有关和你在表单填写的无关,param设定的是你传的参数-->
<jsp:setProperty name="myUsers" property="username">
<jsp:setProperty name="myUsers" property="password" param="mypass">
<!-- 使用传统的表达式方式获取用户名和密码 -->
<%-- 用户名:<%=myUsers.getUsername() %><br/>
密码:<%=myUsers.getPassword() %> --%>
<!-- 使用getProperty方式来获取用户和密码 -->
用户名:<jsp:getProperty name="myUsers" property="username"/>
密码:<jsp:getProperty name="password" property="password"/>
</body>
javabean的四个作用于范围j
page:仅在当前页面有效,超链接是获取不到的
success.jsp
<body>
<h1>javabean的四个作用域范围</h1>
<hr/>
<jsp:useBean id="myUsers" class="com.User" scope="page"/>
<%
String username="";
String password="";
if(pageContext.getAttribute("myUsers")!=null){
username=((User)pageContext.getAttribute("myUsers")).getUsername();
password=((User)pageContext.getAttribute("myUsers")).getPassword();
}
%>
用户名:<%=username%><br/>
密码:<%=password %><br/>
</body>
request:可以通过HttpRequest.getAttribute()方法取得javabean对象
dologin.jsp,login页面还是上面的页面
<body>
<!-- 下面的name都要和id一样 -->
<jsp:useBean id="myUsers" class="com.User" scope="request"/>
<h1>setProperty动作元素</h1>
<hr/>
<jsp:setProperty name="myUsers" property="username"/>
<jsp:setProperty name="myUsers" property="password"/>
<!-- 使用getProperty方式来获取用户和密码 -->
用户名:<jsp:getProperty name="myUsers" property="username"/><br/>
密码:<jsp:getProperty name="myUsers" property="password"/>
<br/>
<a href="success.jsp">测试javabean的四个作用域范围</a>
<%
request.getRequestDispatcher("success.jsp").forward(request,response);
%>
</body>
success.jsp
<body>
<h1>javabean的四个作用域范围</h1>
<hr/>
<jsp:useBean id="myUsers" class="com.User" scope="request"/>
<%-- 用户名:<jsp:getProperty name="myUsers" property="username"/><br/>
密码:<jsp:getProperty name="myUsers" property="password"/><br/> --%>
<hr/>
<%-- 用户名:<%=((User)session.getAttribute("myUsers")).getUsername()%><br/>
密码:<%=((User)session.getAttribute("myUsers")).getPassword() %><br/> --%>
<hr/>
用户名:<%=((User)request.getAttribute("myUsers")).getUsername()%><br/>
密码:<%=((User)request.getAttribute("myUsers")).getPassword() %><br/>
</body>
session:可以通过HttpSession.getAttribute()方法取得javabean对象
application:可以通过application.getAttribute()方法取得javabean对象