JSP+EL+JSTL

JSP

文件头

<%@page contentType="text/html;charset=utf-8" language="java"%>

JSP 基本使用

jsp 页面不能像 HTML 页面, 直接用浏览器运行。只能通过浏览器访问 Tomcat 来访问 jsp 页面

<html>
<head>
    <title>求和计算器</title>
</head>
<body>
<h1>计算器</h1>
<%
    //在该标签中可以写java代码
    int i = 10;
    int j = 20;
    int res = i + j;
    //输出也可以 PrintWriter writer = response.getWrite(),已经内置了对象
    out.print(i + "+" + j + "=" + res);
%>
</body>
</html>

运行原理

jsp 页面本质是一个 Servlet 程序, 其性能是和java关联的

第1次访问 jsp 页面的时候。Tomcat 服务器会把 jsp 页面解析成为一个 java 源文件。 并且对它进行编译成 为.class 字节码程序。看下 Cal.jsp 对应的 cal_jsp.java 和cal_jsp.class 文件

JSP 三种常用脚本 

声明脚本

格式:<%!   声明java代码   %>

作用:定义jsp需要的属性、方法、静态代码块和内部类等

<body>
<h1>jsp声明脚本</h1>
<%!
    //定义成员
    //声明jsp需要使用的属性,方法,静态代码块,内部类
    private String name = "jack";
    private int age;
    private static String company;

    public String getName() {
        return name;
    }
    static {
        company = "字节跳动";
    }
%>
</body>

表达式脚本

代码脚本 

应用

注释

JSP内置对象(inbuild)

 

JSP域对象

pageContext (域对象,存放的数据只能在当前页面使用)

request (域对象,存放的数据在一次request请求有效)

session(域对象,存放的数据在一次会话有效)

application(域对象,存放的数据在整个web应用运行期间有效, 范围更大)

 

注意事项和细节

JSP请求转发标签 

<jsp:forward page="/bb.jsp">        //服务器解析/
等价于  request.getRequestDispatcher("/bb.jsp").forward(request,response);
地址仍然保留在aa.jsp

EL

EL 表达式主要是代替 jsp 页面的表达式脚本<%=request.getAttribute("xx")%>
EL表达式基本语法:${key1},key1相当于xx

<body>
<%request.setAttribute("name","hsp");%>
<!--如果name是null,jsp方式返回null字符串,el方式返回""   -->
名字:<%=request.getAttribute("name") == null ? "" : request.getAttribute("name")%>
名字:${name}
</body>

EL常用输出形式

public class Book {
    private String name;
    private String[] writer;//作者
    private List<String> reader;//读者
    private Map<String, String> topics;//话题
}
 <body>
 <%
     Book book = new Book();
     book.setName("昆虫总动员");
     book.setWriter(new String[]{"jack", "tom"});
     

     ArrayList<String> readers = new ArrayList<>();
     readers.add("汤姆");
     readers.add("玛丽");
     book.setReader(readers);

     HashMap<String, String> topics = new HashMap<>();
     topics.put("key1", "这是我看过的最好的动画片");
     topics.put("key2", "非常期待..");
     book.setTopics(topics);

    request.setAttribute("bookkey", book);
 %>
 <h1>EL 输出数据</h1><hr/>
 book 信息:${bookkey}<br/>

 book.name:${bookkey.name}<br>
 book.writer 的第 1 个元素:${bookkey.writer[0]}<br>

 book.reader 集合:${bookkey.reader}<br>
 book.reader 集合第二个元素:${bookkey.reader[1]}<br>
 book.reader 集合第二个元素:${bookkey.reader.get(1)}<br>

 book 的Map集合:${bookkey.topics}<br>
 book 的Map集合key1的值:${bookeyk.topics["key1"]}<br>

 </body>
 </html>

EL 的 empty 运算

empty 运算可以判断一个数据是否为空,如果为空,返回true,否则返回false

  

EL 获取四个特定域中的属性

pageContext对象的使用 

java获取http协议的方式

 通过pageContext获取

 

JSTL  

JSTL是为了替换代码脚本

文件头

​​​​​​​<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set>标签

<c:if>标签

<c:choose><c:when><c:otherwise>标签  

注意

<c:forEach>标签

 1、遍历从i到j

2、遍历数组

3、遍历map

4、遍历list

 

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值