Jsp(五)——JavaBean组件
目录
3.jsp:setProperty 设置 javabean 属性值
3.2 再来用jsp:setProperty 设置 javabean 属性值:
4 jsp:getProperty 获取javabean 属性值
1.JavaBean组件引入
JavaBean 是使用 Java 语言开发的一个可重用的组件,在 JSP 开发中可以使用 JavaBean 减少重复代码,使整个 JSP 代码的开发更简洁。
传统地引入对象是先建一个model,再引入对象路径:
Student类:
package com.java.model;
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
javabean.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="com.java.model.Student" %>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
Student student=new Student();
student.setName("张三");
student.setAge(20);
%>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果:
2.Jsp: useBean创建JavaBean
<jsp:useBean id="实例化对象名称" scope="保存范围" class="类完整名称"/>
Scope,一共有 page,request,session 和 application4 个属性范围,默认是 page;
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="student" scope="page" class="com.java.model.Student"></jsp:useBean>
<%
student.setName("王炸");
student.setAge(22);
%>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果:
3.jsp:setProperty 设置 javabean 属性值
<jsp:setProperty property="属性名称" name="实例化对象的名称" value="属性值" param="参数名称"/>
Property=”*” 自动匹配所有
3.1 先看看原始方法:
student1.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="javabean3.jsp" method="post">
<table>
<tr>
<td>姓名:</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
javabean3.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="com.java.model.Student" %>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置字符集编码为utf-8
request.setCharacterEncoding("utf-8");
//获取用户名和年龄
String name=request.getParameter("name");
String age=request.getParameter("age");
//实例化对象
Student student=new Student();
student.setName(name);
student.setAge(Integer.parseInt(age));
%>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果:
点击提交之后:
3.2 再来用jsp:setProperty 设置 javabean 属性值:
来创建一个javabean3-1.jsp文件,前面将form的action改成javabean3-1.jsp;
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置字符集编码为utf-8
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="page" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="*" name="student"/>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果:
点击提交之后:
可以看到非常方便!
3.3 用Property设置单个值:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置字符集编码为utf-8
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="page" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="name" name="student"/>
<!-- 这里我们将年龄的值设定为100,即前台年龄不管输入多少,后台始终接受的是100 -->
<jsp:setProperty property="age" name="student" value="100"/>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果:
3.4 Param属性的运用:
假如我们将student1.jsp中的姓名这一行中的name属性值改为userName;
并且后台的获取name的属性不改变的话,就只能获取到null,因此我们在后台可以将加一个Param属性值;
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置字符集编码为utf-8
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="page" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 ,并且加入param属性来配对前台的userName属性-->
<jsp:setProperty property="name" name="student" param="userName"/>
<!-- 这里我们将年龄的值设定为100,即前台年龄不管输入多少,后台始终接受的是100 -->
<jsp:setProperty property="age" name="student" value="100"/>
<h1>姓名:<%= student.getName() %></h1>
<h1>年龄:<%= student.getAge() %></h1>
</body>
</html>
运行结果和之前是一样的!
4 jsp:getProperty 获取javabean 属性值
<jsp:getProperty property="属性名称" name="实例化对象的名称"/>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="page" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="*" name="student"/>
<!-- jsp:getProperty 获取javaBean 属性值 -->
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>
运行前面的student1.jsp代码,将action路径改为上述文件路径,运行成功后就会获取到用户输入的信息!
5. javabean 的保存范围
Javabean 的保存范围有 page,request,session.application,默认是 page;
5.1 request范围;
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="request" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="name" name="student" value="张飞"/>
<jsp:setProperty property="age" name="student" value="55"/>
<jsp:forward page="target1.jsp"/>
</body>
</html>
target1.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="request" class="com.java.model.Student"></jsp:useBean>
<!-- jsp:getProperty 获取javaBean 属性值 -->
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>
运行结果:
5.2 session范围;
session的范围是单个会话内保存数据;
javabean3.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="session" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="name" name="student" value="张飞"/>
<jsp:setProperty property="age" name="student" value="55"/>
<h1>session数据设置完毕!</h1>
</body>
</html>
target2.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="session" class="com.java.model.Student"></jsp:useBean>
<h1>session中取值完毕!</h1>
<!-- jsp:getProperty 获取javaBean 属性值 -->
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>
运行结果:
期间javabean3.jsp的页面不能关闭;
5.3 application范围;
javabean4.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="application" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="name" name="student" value="项羽"/>
<jsp:setProperty property="age" name="student" value="52"/>
<h1>application数据设置完毕!</h1>
</body>
</html>
target3.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="application" class="com.java.model.Student"></jsp:useBean>
<h1>application中取值完毕!</h1>
<!-- jsp:getProperty 获取javaBean 属性值 -->
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>
运行结果:
6. javabean 删除
Page 范围:pageContext.removeAttribute(“javaBean Name”);
request 范围:request.removeAttribute(“javaBean Name”);
session 范围:session.removeAttribute(“javaBean Name”);
application 范围:application.removeAttribute(“javaBean Name”);
我们先运行session设置数据的代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="session" class="com.java.model.Student"></jsp:useBean>
<!-- 用jsp:setProperty来设置javaBean属性值 -->
<jsp:setProperty property="name" name="student" value="张飞"/>
<jsp:setProperty property="age" name="student" value="55"/>
<h1>session数据设置完毕!</h1>
</body>
</html>
再运行javabeanDelete删除代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
session.removeAttribute("student");
%>
<h1>session中javabean已经删除!</h1>
</body>
</html>
再运行获取数据的target2.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<!-- 用jsp:useBean组件创建JavaBean -->
<jsp:useBean id="student" scope="session" class="com.java.model.Student"></jsp:useBean>
<h1>session中取值完毕!</h1>
<!-- jsp:getProperty 获取javaBean 属性值 -->
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>
可以看到javabean中的对象student已经成功删除!