JavaBean 及 jsp函数

来源:互联网 发布:苏联入侵芬兰知乎 编辑:程序博客网 时间:2024/06/06 03:23

一、JavaBean(封装数据,传递数据 VO:Value Object)
1、必须有一个无参的构造方法(默认构造方法)
2、字段必须私有化。如果只有一个单词构成,全部小写;如果有多个单词构成,从第2个单词开始,首字母大写
3、提供公共的getter或setter方法。比如name字段,getName,setName
4、一般情况下需要实现Serializable
二、JSP中操作JavaBean的动作元素
1、jsp:useBean
 id:查找或实例化的bean的名称。必须的
 class:要实例化的bean的类型(全类名)。必须的
 scope:page|request|session|application 不是必须的。默认值是page。实例化的bean存放的域范围
2、jsp:setProperty
 name:javabean的名称
 property:属性名称(请求参数填充属性的话,可以使用通配符*)
 value:属性的值。可以是字符串或者Java表达式
 param:请求参数的名称。可以填充到bean的属性中。
 
3、jsp:getProperty
 name:javabean的名称
 property:属性名称
注:如果属性的取值为null,则会在页面上输出null字符串(不可取)
三、EL表达式
1、作用:替换掉JSP中的Java表达式<%=%>
2、其他作用
 a、获取数据
  EL获取域范围中的指定名称的对象
  可以使用.和[]运算符取某个属性或索引上的元素
  p.name    ==  p["name"]
  用[]取某个属性时,要加上引号。用在名称不符合java语法命名规范的地方
  
  -------------------------------
  
  

 b、执行运算
  empty非常有用:
   对象不存在 返回true
   空字符串 返回true
   空集合 返回true
  ----------------------------------
  EL不支持字符串连接操作

 c、获取web开发常用对象(11个内置EL对象)
  pageContext:代表PageContext对象
  pageScope:page域范围的那个Map
  requestScope:request域范围的那个Map
  sessionScope:session域中用于保存属性的Map对象
  applicationScope:代表application域中用于保存属性的Map对象
  
  param:表示一个保存了所有请求参数的Map对象
  paramValues:表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
  header:表示一个保存了所有http请求头字段的Map对象
  headerValues:同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
  cookie:表示一个保存了所有cookie的Map对象
  initParam:表示一个保存了所有web应用初始化参数的map对象
 d、调用Java(静态)方法
  开发步骤:
   1、编写一个类,方法要是静态的
   2、在WEB-INF目录下建立一个扩展名为tld的xml文档(C:\apache-tomcat-6.0.32\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld)
    <?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 version="2.0">
 <description>A tag library exercising SimpleTag handlers.</description>
 <tlib-version>1.0</tlib-version>
 <short-name>myfn</short-name>
 <uri>http://www.itheima.com/jsp/functions</uri>
 <function>
  <description>to upper case</description>
  <name>toUpperCase</name>
  <function-class>com.itheima.fn.MyFunction</function-class>
  <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>
 </function>
</taglib>
   3、利用taglib指令,引入自定的tld函数(自定义标签)
    ${myfn:toUpperCase(s)}
四、JSTL标签库(借助标签技术,可以消除JSP中的Java脚本)
1、Core
 c-1_0.tld:1.0,不支持EL的
 c-1_0-rt.tld:1.0,支持EL的
 c.tld:1.1 支持EL

 if:判断
  属性
   test:boolean。必选的
   var:保存结果的域变量名
   scope:var指定的名称保存的域范围

 forEach:完成迭代。数组、List、Set、Map,打印自然数
  items:迭代的集合或数组
  varStatus:取一个名称,引用javax.servlet.jsp.jstl.core.LoopTagSupport
    count:代表当前记录的序号。从1开始的
    index:代表当前记录的索引。从0开始
    last:代表当前记录是否是最后一条记录
    first:代表当前记录是否是第一条记录
2、SQL
3、XML
4、Format:国际化有关
5、Function:SUN提供的函数库EL
 16个