JSP

2020-12-07 00:20

阅读:811

在html中嵌入大量java代码同样页面很难看,不易于维护。为了解决这问题,SUN开发了标签技术,开发标签去替代JSP页面中的源代码。

1.JSP标签

      标签:实现页面包含。

      标签:实现页面转发。

     

2.EL标签

       一种表达式,可以在JSP中使用,实现如下四个功能 ${...}。

       1. 获取数据

               获取常量:字符串,数字,布尔常量。

               获取变量:在四大作用域中搜寻指定名称变量,如果没有找到则什么也不输出。

                     注意:

                              el获取的变量必须在域中才可以获取。

                              []与.的区别: 使用[]的地方都可以换成. 但是[]中有特殊字符时除外。

                              el表达式只能获取值,不能设置值,也不能遍历数据。

                              如果需要在JSP中写web应用名称,不要写死,也不要写java代码

                              ${pageContext.request.contextPath}

mamicode.com,搜素材

@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
@page import="com.itcast.domain.Person"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
html>
  head>
  head>
  body>
      h1>EL获JavaBean的属性h1>
      
          Person p = new Person();
          p.setName("金毛狮王");
          p.setAge(200);
          pageContext.setAttribute("p",p);
       %>
      ${p.name }
      ${p.name }
      ${p.age }
      a href="${pageContext.request.contextPath }/index.jsp">xxa>
      
      h1>EL获Map中的数据h1>
      
          Map map = new HashMap();
          map.put("name","张无忌");
          map.put("age",19);
          map.put("wugong","乾坤大挪移");
          map.put("wugong.2","九阳神功");
          pageContext.setAttribute("wugong","age");
          pageContext.setAttribute("map",map);
       %>
       ${map["wugong"] }
      xxx ${map[wugong] }xxx
       ${map["wugong.2"] }
      h1>EL获集合中的数据h1>
      
          List list = new ArrayList();
          list.add("张翠山");
          list.add("殷素素");
          list.add("无忌孩儿");
          list.add("赵敏");
          request.setAttribute("list",list);
       %>
       ${list[3] }
  
      h1>EL获取数组中的数据h1>
      
          String [] addrs = {"武昌","汉口","汉阳"};
          pageContext.setAttribute("ads",addrs);
       %>
       ${ads[1] }
      h1>EL获取变量h1>
      
          request.setAttribute("name","zhang");
       %>
      ${name }
      h1>EL支持的常量:字符串  数字  布尔h1>
      ${"abc" }
      ${123.234}
      ${false }
  body>
html>
mamicode.com,搜素材

       2. 执行运算

           在el表达式中如果遇到非数字运算,会试图自动转换成数字,如果转换失败则报错。

mamicode.com,搜素材
@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
html>
  head>
  head>
  body>
  h1>三元运算符h1>hr>
  ${3>2 ? "yes":"no" }
  h1>empty运算符h1>hr>
  
      List list = new ArrayList();
      list.add("aaa");
      pageContext.setAttribute("list",list);
      
      String str = "sdf";
      pageContext.setAttribute("str",str);
      
   %>
  ${empty  list}
  ${empty str }
  h1>el支持逻辑运算符h1>hr>
      && and
      || or
      ! not
       ${!(3>2 && 31)}
  

>el支持比较运算h1>hr> > gt >= ge lt = le == eq != ne ${3>2 }${53 }${3 ne 2 } ${3 eq 2 }

>el支持算数运算h1>hr> ${3+2 } ${3*2 } ${3+"5"} body> html>

mamicode.com,搜素材

       3. 获取常用开发对象

              el内置了11个对象,可以不存入域中就直接使用。

              pageContext : 可以作为入口通过el获取八大隐式对象。

            

              pageScope

              requestScope

              sessionScope

              appcationScope

              四大域中所有域属性组成的Map.

                注意:这是Map,而不是四大作用域对象本身。

              param            Map

              paramValues  Map

              代表当前请求中,所有请求参数组成的Map。

              header           Map

              headerValues Map

              代表请求头组成的Map。

              cookie           Map

              cookie信息组成的Map

              initParam      Map

              web初始化信息组成的Map

       4. 调用java方法,限于调静态的共有方法

            写一个类包含要被调用的静态共有方法
                   写一个tld描述文件,描述一下要被调用的方法 -- tld文件必须放置在WEB-INF目录下非classes和lib目录中
                   再在jsp页面中使用taglib指令引入tld描述文件,从而在jsp页面中调用函数

3.JSTL标签库

              标签:用于输出一段文本内容到pageContext对象当前保存的out对象中。

              标签:把某个对象存在指定域的范围内。或者设置web域中的java.util.Map类型的属性对象或javaBean类型的属性对象的属性。

              标签:用于删除web域中的属性。

              标签:用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:

                                                  nested actions

              标签:可以构造“if-then”简单的判断表达式。

             标签:用于指定多个条件选择的组合边界,它必须与标签一起使用。

             使用三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
                   标签:用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。 
                   标签:用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
                  

            

                             URL重写就是将会话标识号以参数形式附加在URL地址后面 
                  标签用于实现请求重定向

4.自定义标签

 


评论


亲,登录后才可以留言!