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代码了,直接写标签)