JSP学习笔记

指令

用于配置JSP页面,导入资源文件
格式
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
分类
1.page 配置JSP页面

contentType:等同于response.setContentType();
	1.设置响应体的mime类型以及字符集
	2.设置当前jsp页面的编码,或用pageEncoding设置
<%@ page contentType="text/html;charset=gbk" language="java" buffer="8kb" %>//那么页面编码自动变为gbk
//buffer为缓冲区设置大小,默认是8kb
//import为导包
//errorPage当前页面发生异常后,会自动跳转到指定的错误页面
//isErrorPage表示当前页面是否是错误页面,默认值为false,当值为true时,可用内置对象exception.getMessage()获取异常信息

2.include 页面包含的。导入页面的资源文件

<%@ include file="hello.jsp"%>

3.taglib 导入资源

<%@ taglib prefix="c" uri="http://baidu.com" %>
//prefix:前缀,自定义的

注释
1.html注释
2.jsp注释:推荐使用,不会被response对象接收
<%-- --%>
内置对象
在这里插入图片描述

MVC——使得程序的设计更加合理

在这里插入图片描述-------Jsp的本质是Servlet类也就是Jsp被Jsp引擎编译之后会生成一个标准的Servlet类,Jsp是Html标签和Java代码组合而成的一个.jsp文件,jsp编译后生成的Servlet类里面Servlet通过输出流把html标签输出到浏览器显示生成动态的网页。

EL表达式——替换和简化jsp页面中java代码的编写,将其书写到页面上

语法
${表达式}
注意
若想不解析el表达式,可以用指令isELIgnored=“true”,或\ ${表达式}
运算
1.算术运算符:+ - * /(div) %(mod)
2.比较运算符:> < >= <= == !=
3.逻辑运算符:&&(and) ||(or) !(not)
4.空运算符:empty

用于判断字符串、集合、数组对象是否为null并且长度是否为0
${empty list}

获取值

域名称域从小到大
pageScopepageContext
requestScoperequest
sessionScopesession
applicationScopeapplication(ServletContext)
<%  request.setAttribute("name","李四");  %>
${requestScope.name}<%-- 获得‘李四’字符串--%>
${name}<%--省略 requestScope则从最小域中查找对应值,知道找到位置--%>

如果没有找到则表达式为null

${requestScope.error}可替换
<%=request.getAttribute("error") == null ? " " :request.getAttribute("error") %>

对象
如果获取键值是一个对象,则需要通过对象的属性来获取,本质上调用getter方法。

${域名.键名.属性}

规则
setter或getter方法来获取,去掉set或get,再将剩余部分,首字母变小写。
例如haha变量,则可以写成getHaha(),获取则h.haha


List集合

${域名.键名[索引]}

<%
        response.getWriter().write("============");//总是会优先输出
        user u=new user();//创建user类的对象u,user类不再展示
        u.setName("张三");
        List list=new ArrayList();//穿件LIst集合
        list.add("list!");
        list.add(u);//添加一个字符串和一个对象
        request.setAttribute("list",list);
 %>
${requestScope.list[0]}//list!//这两处都可以省去requestScope
${requestScope.list[1].name}//张三

Map集合

$ {域名.键名.key名} 或$ {域名.键名[“key名”]}

<%
user u=new user();
u.setName("张三");
Map map=new HashMap();
map.put("name","张三");
map.put("user",u);
request.setAttribute("map",map);%>
${map.name}//张三
${map["name"]}//张三
${map.user.name}//张三

隐式对象
EL表达式中有11个隐式对象
pageContext——>获取其他八个内置对象

${pageContext.request.contextPath}//动态获取虚拟目录

JSTL——JSP标准标签库

用于简化和替换jsp页面上的代码,更好与前端交流

1.导入jstl相关的jar包
2.引入标签库:taglib指令 <%@  taglib %>
3.使用标签

if标签——相当于java代码的if

<%@ 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" %>
<html>
<head>
    <title>jstl</title>
</head>
<body>
<%
    List list=new ArrayList();
    list.add("张三");
    request.setAttribute("list",list);
%>
<c:if test="${not empty list}">//一般情况下会结合el表达式使用
    <h3>list集合不为空</h3>
</c:if>
</body>
</html>

关于test必须属性
接受boolean表达式,表达式为true显示标签体内容。为false则不显示
choose标签——相当于java代码的switch

<c:choose></c:choose>——>相当于switch声明
<c:when></c:when>——>相当于case
<c:otherwise></c:otherwise>——>相当于default

foreach标签——相当于java代码的for循环
1.普通for循环

for(int i=0;i<10;i++){
}
属性:
begin:开始值,相当于i=0
end:结束值,相当于<10
var:临时变量,相当于i
step:步长,相当于i++
varStatus:循环状态对象
	index:容器中元素的索引,从0开始
	count:循环次数,从1开始

2.增强for循环

for(User user:list){
}
属性:
items:容器对象,相当于list
var:临时变量,相当于user
varStatus:循环状态变量
	index:容器中元素的索引,从0开始
	count:循环次数,从1开始
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值