欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第三课 - JSP:useBean 用法和详解

程序员文章站 2022-06-18 16:01:54
  第三课 - jsp-usebean 用法和详解 一丨基本要素 bean类: 1.必须要有一个空的构造器,在jsp元素创建bean时会调用空构造器 2.不能有任何公共实例变量,(也...

 

第三课 - jsp-usebean 用法和详解



一丨基本要素

bean类:
1.必须要有一个空的构造器,在jsp元素创建bean时会调用空构造器 2.不能有任何公共实例变量,(也就是说不允许直接通过变量名访问变量),并且变量名首字母必须小写。 3.通过getter/setter方法来读写变量的值,并且方法中变量的首字母必须大写。 4.不要使用裸体类(要打包) 5.补充,最好实现 java.io.serializable接口,使其转化为byte流,
(可以通过反编译,更好地消除一地网络的数据差异,其他好处请百度。)



二丨基本用法

代码如下:

jsp:usebean application="" class="package.beanclass" id="beanname" request="" scope="page" session="" type="typename">

/*id 实例化出来后的引用名称
class bean类scope 即变量的作用域,默认是page.(page即页面局部变量,request范围,session范围,application范围)
type 默认和class一样,就是把new出来的beanclass当成typename来用。(父类引用指向子类对象)
相当于 java 语句:*/
package.beanclass beanname=null,typename=null;
typename beanname = new package.beanclass();



/*name bean类实例化后的变量名 
property bean类的私有成员变量
value 赋值 
相当于 java 语句:*/
beanname.setproperty(value);



/*	 name bean类实例化后的变量名	
property bean类的私有成员变量 	
相当于 java 语句:*/

out.write(beanname.getproperty());
标准实例 student.java
package com.qsuron.study;
public class student implements java.io.serializable{
	private string name;
	
	public  string getname() {
		return name;
	}


	public  void setname(string name) {
		this.name = name;
	}
}
usebean.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>

取出的值是:



三丨scope 详解 - page request session application

bean.java
package com.qsuron.study;

public class bean implements java.io.serializable{
	private int count = 0;

	public int getcount() {
		count++;
		return count;
	}

	public void setcount(int count) {
		this.count = count;
	}
}

pagebean.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>

scope:page

取出的值是:


requestbean.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>
<%--相当于 com.qsuron.study.bean bean = (bean)request.getattribute(bean); if(bean == null){ bean = new com.qsuron.study.bean(); request.setattribute(bean,bean); } --%> <% bean.setcount(100); %>/>

scope:request1

<%--requestbean2 返回101 --%> <%----%> <%--requestbean2 返回1 --%> <% response.sendredirect(requestbean2.jsp);%>
请注意注释部分,如果不明白,请查照博文-(

第二课 - jsp之forward & sendredirect 的区别

)


requestbean2.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>
<%--相当于 com.qsuron.study.bean bean = (bean)request.getattribute(bean); if(bean == null){ bean = new com.qsuron.study.bean(); request.setattribute(bean,bean); } --%>

scope:request2

取出的值是:

forward - 正常递增 sendredirect - 重新初始化

sessionbean.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>
<%--相当于 com.qsuron.study.bean bean = (bean)session.getattribute(bean); if(bean == null){ bean = new com.qsuron.study.bean(); session.setattribute(bean,bean); } --%>

scope:session

取出的值是:


相同窗口正常递增,新建窗口则重新初始化
applicationbean.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@page import=com.qsuron.study.* %>
<%--相当于 com.qsuron.study.bean bean = (bean)session.getattribute(bean); if(bean == null){ bean = new com.qsuron.study.bean(); session.setattribute(bean,bean); } --%>

scope:application

取出的值是:


不重启tomcat,则正常递增。重启则重新初始化。


四丨其他相关语法

param参数

//直接把从上一个页面通过重写url传递来的 urlparam直接赋值到num中
//相当于 />

property=* 把上个页面表单传递来的键值对直接存入对应的bean中 实例: sayhello.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
姓名: 

sayhello2.jsp
<%@ page language=java 
	contenttype=text/html; charset=utf-8
    pageencoding=utf-8%>
<%@ page import=com.qsuron.study.* %>
你好! <%= new string(man.getname().getbytes(iso8859_1),utf-8) %> <%= new string(man.getsex().getbytes(iso8859_1),utf-8) %>






转载请注明出处:blog.csdn.net/qsuron 小树博客 博主小树 (qsuron)