Day5-JSP的JavaBean组件

我的学习路线

——本次学习的简单说明

本次的学习分为九节
注:点击题目会跳转到其他博客链接

Day1:JSP的入门&环境的配置&Tomcat的注意点
Day2:简单项目的创建和基本的功能的实现(打war包,共享项目)
Day3:JSP基础语法
Day4:JSP 九大内置对象及四个作用域
Day5:JavaBean 组件
Day6:Servlet 开发
Day7:EL 表达式
Day8:Jsp 自定义标签
Day9:Jsp 标准标签库

持续更新中:新的博客写完会加链接

下面是Day5的学习

Javabean组件引入

JavaBean是使用Java语言开发的一个可重用的组件,在JSP开发中可以使用JavaBean减少重复代码,使用JSP代码的开发更简单。

在这里插入图片描述
Student的代码

package 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;
	}
	
}

jsp的代码如下

<%@page import="model.Student"%>
<%@ 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>
<%
	Student student=new Student();
	student.setName("张三");
	student.setAge(10);
	
%>
<h1>姓名:<%=student.getName() %></h1>
<h1>年龄:<%=student.getAge() %></h1>
</body>
</html>

效果

在这里插入图片描述

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="model.Student"></jsp:useBean>
<%
	student.setName("张三");
	student.setAge(10);
	
%>
<h1>姓名:<%=student.getName() %></h1>
<h1>年龄:<%=student.getAge() %></h1>
</body>
</html>

效果
在这里插入图片描述

setProperty设置javabean属性值

<jsp:setProperty property=“属性名称” name=“实例化对象的名称” value=“属性值”
param=“参数名称”/> Property=”*” 自动匹配所有

先复习一下最原始的写法
首先创建一个Student.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="javaBean03.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>

form表单,实现一个表格的信息录入,submit实现提交,这里其实就像是一个响应事件,javaBean03就是在事件响应之后跳转的页面
javaBean03的代码如下

<%@page import="model.Student"%>
<%@ 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");
//response是通过name属性来获得用户输入的text的
 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>

效果
在这里插入图片描述
提交之后的效果
在这里插入图片描述
下面是把setProperty引入的效果,最终实现的功能的javaBean03的是一样的,这个下面的代码是javaBean04,很显然代码大大的减少了,注意基本模板的使用。

<%@page import="model.Student"%>
<%@ 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 id="student" scope="page" class="model.Student"/>
<!-- 设置属性,name是实例化对象的名称,就是上面的id -->
<jsp:setProperty property="*" name="student"/>
<h1>姓名:<%=student.getName() %></h1>
<h1>年龄:<%=student.getAge() %></h1>
</body>
</html>

getProperty获取javabean属性值

<jsp:getProperty property=“属性名称” name=“实例化对象的名称”/>

下面的Student对象用的还是上面的那个,然后这个是新建的javaBean06.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 id="student" scope="page" class="model.Student"></jsp:useBean>
<%
	student.setName("张三");
	student.setAge(10);
	
%>
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>

效果:
在这里插入图片描述
这里的getProperty 就是把下面这个两行代码取代了
在这里插入图片描述
上面的属性名称其实就是实例化的对象里面的那个属性,通过这个属性名称来获得实例化的这个对象中的属性

javabean的保存范围

Javabean 的保存范围有 page,request,session.application,默认是 page;

这四个范围是什么?不懂的可以看看这个

关于JSP的Day4的学习https://blog.csdn.net/qq_43918130/article/details/100585996

page范围:

如图:这个是限制范围的,一般默认的都是page范围的
在这里插入图片描述

request范围

结构图如下:
在这里插入图片描述JavaBean01代码:

<%@ 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="request" class="model.Student"></jsp:useBean>
<jsp:setProperty property="name" name="student" value="很帅"/>
<jsp:setProperty property="age" name="student" value="12"/>
<!-- 下面一行代码是内部跳转 -->
<jsp:forward page="target.jsp"/>
</body>
</html>

target代码

<%@ 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="request" class="model.Student"></jsp:useBean>
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>

效果图
在这里插入图片描述我们跨越了页面获取数据,因此这里的request是有效的。

session范围

直接取值是没法取到的,注意session的使用范围,想要获得session类型的页面的数据,必须要打开这个session的页面,也就是说,session中的数据是存储在服务器上的
结构图
在这里插入图片描述javaBean02的代码

<%@ 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="session" class="model.Student"></jsp:useBean>
<jsp:setProperty property="name" name="student" value="很帅"/>
<jsp:setProperty property="age" name="student" value="12"/>
<h1>session数据设置完毕</h1>
这要这个页面不关闭,就一直可以访问里面的数据,因为session的东西是存在服务器端的
</body>
</html>

target02的代码

<%@ 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>
<h1>session中取值</h1>
<jsp:useBean id="student" scope="session" class="model.Student"></jsp:useBean>
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>

先看一下直接取值的效果
在这里插入图片描述然后运行session的,再看一下取值的效果
在这里插入图片描述再取值
在这里插入图片描述还是很奇妙的吧,这个就是session的范围,在四大作用域里面学了的,session的特点就是在一个浏览器上可以,看在新的页面中,我们还是没法访问到服务器中存储的数据的
在这里插入图片描述

application范围

这个范围是最大的,可以解决页面的问题,也就是上面说的开新窗口不能访问的问题
结构图
在这里插入图片描述
javaBean03代码
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here

Application数据设置完毕

这要这个页面不关闭,就一直可以访问里面的数据,因为Application的东西是存在服务器端的 target03代码
<%@ 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>
<h1>application中取值</h1>
<jsp:useBean id="student" scope="application" class="model.Student"></jsp:useBean>
<h1>姓名:<jsp:getProperty property="name" name="student"/></h1>
<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>
</html>

如果不把Application跑起来,那么也是不能访问值的
在这里插入图片描述
现在就能跨窗口进行访问了
在这里插入图片描述

javabean 删除

Page 范围

pageContext.removeAttribute(“javaBean Name”); request

request范围

request.removeAttribute(“javaBean Name”); session

session范围

session.removeAttribute(“javaBean Name”); application

application范围

application.removeAttribute(“javaBean Name”);

随便找一个范围的来实现一下,比如session的范围的
具体流程
用上面的session的那个的代码
在这里插入图片描述然后在这个里面加一个delete02,其他的两个jsp的代码都有不变
delete02的代码如下:

<%@ 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>JavaBean已删除</h1>
</body>
</html>

然后先把JavaBean02的代码跑起来,只有把这个跑起来的target里面才能访问到数据,然后再把delete02跑起来,刷新target02的页面,可以看到,我们没法取到数据了,因为javaBean02中的数据已经被delete02移除了,其实本质移除的是一个对象,这个对象存储的位置在session区域的服务器中,效果就不具体演示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值