JspAndEl表达式

JSP

JSP指令

1.用于配置jsp页面的和导入资源文件
2.格式:<%@ 指令名称 属性名=xxx ,%>

3.分类:

1. page 配置jsp页面的
    1. contentType:设置相应的MIME类型和响应类型
    2. language:语言类型
    3. buffer :缓冲区 默认是8kb
    4. import:导包
    5. errorPage:错误页面:当前页面发生异常后会跳转到指定的错误页面
    6.isErrorPage:是否是错误页面 true可是使用内置对象Exception 对象默认是false
2. include :页面包含的 导入页面的资源文件
    1. 比如说页面的logo和导航栏任意一个jsp页面都是可以共用的 就可以使用include标签 包含
3. taglib:导入资源的 
    1. 用來导入标签库使用taglib引入
    2. 

Jsp注释

1. html注释:
2. 代码注释:<% -- --%>

Jsp内置对象 #(在jsp中不需要创建对象直接能够使用的对象)

1. pageContext
    1. 真实类型:PageContext
    2. 范围:当前页面共享数据
    3. 他可以用来获取其他的八个内置对象
2. request  
    1. 一次请求访问的多个资源(转发)
3. session
    1. 一次会话的多个请求之间共享数据
4. application
    1. 真实对象:ServletContext
    2. 所有的用户共享数据
5. response
    1. HttpServletResponse
6. page
    1. 当前的servlet对象 this
7. config
8. exception:(只有在isErrorPage为true的时候 才会有这个对象)
    1.  1. 真实类型: Throwable
9. out
    1. jspWriter

EL表达式 #(使用el表达式和jstl标签 替换jsp中的java代码 )

  1. 语法:${表达式}
  2. 运算符
  3. 使用el表达式获取域对象中的值(request application session pageContext)
  4. 语法:${域名城.键名}
  5. pageScope requestScope sessionScope applicationScope
  6. 用法:${requestScope.name}
  7. 用法:${键名} 依次从最小的域对象开始找到为止
  8. 8.

8. ` 

运算符号

${3>4} <%--算数运算符号 比较运算符 逻辑预算符--%> <%System.out.println("这是一个分割符号");%> <% request.setAttribute("name","nihaoJava"); session.setAttribute("age",11); pageContext.setAttribute("sex",0); application.setAttribute("school","beijing"); %>

使用el表达式

${sessionScope.age}
${requestScope.name}
${sex}
${school}

`

EL表达式获取对象的值


`<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>


    Title


<% user user = new user();
    user.setAge(13);
    user.setName("javaEE");
    user.setBirthday(new Date());
    request.setAttribute("user", user);%>

使用El表达式读取对象的值

${requestScope.user}
${requestScope.user.name}
${requestScope.user.age}
${user.birthday}
${requestScoper.user.birth}
`

使用EL表达式获取集合中的值

----------
    `<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>
<%@ page import="javax.management.ListenerNotFoundException" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>


    Title


<%
    List list= new ArrayList() ;
    list.add("aaa");
    list.add("bbb");
    list.add(new user("java",13,new Date()));
    request.setAttribute("list",list);
%>

<%
    HashMap map = new HashMap();
    map.put("sname","javase");
    map.put("score",88);
    map.put("suser",new user("python",66,new Date()));
    request.setAttribute("map",map);

%>

使用el表达式读取list集合中value

${requestScope.list[0]}
${list[1]}
${list[2].name}

使用El表达式读取map集合中的value

${map.sname}
${requestScope.map.suser.name}
${requestScope.map.suser.birthday}

`

El表达式中空运算符合隐式对象


`

运算符empty

<% String str= "liang"; request.setAttribute("string",str); %> <%--empty运算符用来判断字符串,数组,集合是否是null并且长度是否大于零--%> ${empty str}`

el中的隐式对象十一个


  1. 获取其他的jsp中八个对象
  2. ${pageContext.request.contextPath}动态的获取虚拟路径的问题

JSTL #(JavaServer Page Tag Library)jsp标准标签库

  1. 常用的jstl的标签if choose foreach
  2. 2.

jstl中if标签的使用

1. `<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    jstlif标签的使用


<% List list = new ArrayList();
    list.add("java");
    list.add("python");
    request.setAttribute("list", list);
/*
* 
    test是必须的属性, 接受boolean类型的表达式 如果表达式为true 则会显示if标签体中的内容
    这里面没有else标签

* */
%>

    

如果test中的条件成立 标签内容就会输出

request域对象中不为空我我就会输出

`

1.jstl中choose标签的使用

`<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    jstl中choose标签的使用


<%--完成数字编号 对应星期几的案例
使用choose去取出數字 相当一 switch
使用when标签做判断条件  相当于case
使用otherwise 做其他条件的判断 相当于default
--%>
<%
    request.setAttribute("num", 3);
%>

    星期一
    星期二
    星期三
    星期四
    星期五
    星期六
     星期日
    内容不符合要求


`

jstl中foreach标签的使用


`<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    jstl中for标签的使用 相当于for循环


<%--使用for循环 1.完成重复的操作 2. 遍历容器--%>
<%-- 一下代码相当于 for(i=1; i<=10 ;i++){
System.out.pirintln(i);
}--%>
<%--varStatus 代表的是循环状态 item 相当于容器中临时变量--%>

    ${i} 
<%--遍历容器--%>
<% List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); request.setAttribute("list",list); %> <%--一下代码相当于 foreach(String str : list){ System.out.println(str)}--%> ${s.index} ${s.count} ${str}

demo练习 ### `

`<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    练习将request域对象中的list集合输出到页面的表格中使用jstl和el表达式完成


<%--准备数据--%>
<% List list = new ArrayList();
    list.add(new user("python", 111, new Date()));
    list.add(new user("java", 122, new Date()));
    list.add(new user("javaScript", 111, new Date()));
    list.add(new user("C++", 4444, new Date()));
    request.setAttribute("list", list);
%>


        
编号 姓名 年龄 生日
${s.count} ${user.name} ${user.age} ${user.birthday}
> `

你可能感兴趣的:(Java,ee,开发)