javabean
就看这一句,这不就是Java的抽象成类吗?也不是,是一种特殊格式的类。
为什么写成这种格式,就可以解决代码重复?利于维护??
jsp动作:
xml元素
XML的基本组成单位是元素,元素由标记来定义,标记包括起始标记<>和结束标记</>,属性要写在起始标记内。在XML中,所有元素必须有结束标记。
语法样式:
<元素名 属性名=“属性值”>
元素内容
</元素名>
提供信息??指什么
useBean标签
创建javabeans
第一种:
像普通的Java类一样,创建javabean示例
类文件是在src文件夹里,右键src—new—package
包里右键—new—class
类型是public,javabeans是共有类。
代码:
创建get、set方法可以用快捷键。空白处右键—Source—创建getters和setters:
这样就创建了用户类的javabean。
Jsp用使用javabeans:
使用import导入。写全名,包名类名一块写。
和普通的java类使用方法一样,使用new创建实例。
运行结果:
第二种用jsp标签使用javabean:
useBeans标签:
id是实例化出来的标识符,其实就是自己用这个类new的一个实例,名字是自己起的。
Class就是要用的javabeans。写全名,包名.类名。
Scope是javabeans的作用范围,默认值就是page,可以不写。
代码:
运行结果:
实例化的时候,没有初始化用户名和密码,所以都是null。
setProperty标签:
第一种:
跟表单关联,property= “ * ” * 表示匹配,根据表单提交的参数名称和javabeans里的属性名称一一匹配,匹配上了,就一一复制。意思是表单里提交的数据,如果javabean里有,就接受这些数据给自己的属性赋值?
Login.jsp:
表单里有username、password。
去user类里查找有没有这两个属性。
user.java:
有对应的属性,则调用属性的set方法,进行复制:
<jsp:setProperty name="myUsers" property="*"/> 里面的name要和
<jsp:useBean id="myUsers" class="com.po.User" scope="page"/>里的实例id一致。
第二种:
根据指定的属性部分匹配。
<jsp:setProperty name="myUsers" property="username"/>
此时就只对用户名匹配传值了,密码的值还是为 null。
第三种:
第四种:
在login.jsp的表单里添加了mypass参数。
dologin.jsp里:
这样password就不是表单里填的密码的值了,而是这里填的mypass的值了。
上面的username还是从表单里填的值取的。
(这算是干什么?login.jsp里有表单传递值进来,但是也有设置一下其他的request参数,这个参数也可以用在javabean的赋值里)
getProperty标签
<!-- 使用传统的表达式方式来获取用户名和密码 -->
用户名:<%=myUsers.getUsername() %><br>
密码:<%=myUsers.getPassword() %><br>
<!-- 使用getProperty方式来获取用户名和密码 -->
用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
密码:<jsp:getProperty name="myUsers" property="password"/><br>
(好像也并没有很方便,就是不用写Java代码了,直接写标签)