JavaWeb学习笔记二 --- 会话机制、JSP、 EL+JSTL 总结(超详细的总结~

本文详细介绍了JSP页面的基本语法、EL表达式、JSTL标签库在JavaWeb开发中的使用,以及在处理高并发秒杀场景中的数据一致性、高可用性和优化策略。
摘要由CSDN通过智能技术生成

<session-config> 

<session-timeout>30</session-timeout> 

</session-config>



在java程序中设置


s1.setMaxInactiveInterval(10);

参数为秒



JSP

JSP,Java Server Pages,Java服务器端页面(网页)技术

在JSP页面中,Java代码可以和HTML代码共存,其中Java代码负责处理数据,HTML代码负责显示数据

jsp就是一个Servlet

创建JSP页面

右击WebContent—New—JSP File—输入文件名

或者:右击WebContent—New—Other—Web—JSP File—输入文件名

在这里插入图片描述

修改jsp页面的编码为UTF-8

Window—Preferences----搜索JSP—Templates----

JSP基本语法

代码块

在JSP页面中可以将Java代码块写到:

<% Java代码块 %>


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

    pageEncoding="utf-8"%>

<!DOCTYPE html >

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<% out.write("helloword") %>

</body>

</html>



输出变量/表达式结果:

<%=变量 或 表达式%>


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

    pageEncoding="utf-8"%>

<!DOCTYPE html >

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<% 

	out.write("helloword") 

	int a = 12;

	int b = 30;

%>

<p>输出表达式结果</p>

<%=a+b %>

<p>输出变量结果</p>

<%=b %>

</body>

</html>



JSP注释

HTML代码注释:

JSP代码注释: <%-- 注释的内容 --%>

注释的快捷键:ctrl + shift + /

JSP指令

在jsp2.0中共定义了page、include和taglib三种指令。

page指令, 配置JSP页面信息的。

include指令,页面包含的,导入页面的。

<%@include file=“top.jsp”%>

taglib指令, 导入资源,格式:

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

* prefix:前缀,自定义的

在这里插入图片描述

JSP内置对象

为了提升开发效率,JSP给我们提供了9大内置对象,不需要定义,我们在JSP脚本中可以直接使用。

在这里插入图片描述

4大域对象:

request域对象

session域对象

application域对象

pageContext域对象

在这里插入图片描述

四大域对象的作用范围:从大到小

application > session > request > pageContext

四大域对象的作用优先级范围:从大到小:

pageContext > request > session > application

EL+JSTL

EL

在JSP页面开发中,为了获取Servlet域对象中存储的数据,经常需要书写很多Java代码,这样的做法会使JSP页面混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。

EL是Expression Language的缩写,它是一种简单的数据访问语言。

EL的目的:简化JSP脚本的书写。

EL语法格式:${EL表达式}

EL表达式获取数据

使用EL表达式获取四大域对象中的数据

${key}

如果获取域中的数据时,如果没有指定所在的域,会按照下面的顺序依次查找

—依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找


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

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

	<!-- 四大域对象 -->

	<%

		/*pageContext 对象只能在本页面才能访问到*/

		pageContext.setAttribute("name", "pageContext");

		request.setAttribute("name", "request");

		session.setAttribute("name", "session");

		application.setAttribute("name", "application");

	%>

	

	<!-- 使用EL表达式取出域对象中的数据 -->

	${pageScope.name}<br/>

	${requestScope.name}<br/>

	${sessionScope.name}<br/>

	${applicationScope.name}<br/>

</body>

</html>



浏览器访问该地址:

在这里插入图片描述

EL表达式获取基本数据类型


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

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

	<!-- 四大域对象 -->

	<%

		request.setAttribute("name", "张三");

	%>

	

	${name }

</body>

</html>



EL表达式获取对象类型数据

对象:${域名称.键名.属性名}

  • 本质上会去调用对象的getter方法

    在这里插入图片描述

    获取List集合中的数据

    List集合:${域名称.键名[索引]}

    在这里插入图片描述

    获取Map集合中的数据

    Map集合:

    ${域名称.键名.key名称}

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

在这里插入图片描述

JSTL介绍

JSTL,JSP Standard Tag Lib,JSP标准标签库,提供了一些标签(<c:if> <c:forEach>),能够在JSP页面完成更加复杂的业务逻辑,总之用于简化和替换jsp页面上的java代码

使用步骤:

  1. 导入jstl相关jar包

  2. 引入标签库:taglib指令: <%@ taglib %>

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

  3. 使用标签:

Java的标签库,常见的标签有:

<c:if></c:if>

<c:forEach></c:forEach>

<c:choose></c:choose>

利用jstl循环遍历用户集合:


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

    pageEncoding="UTF-8"%>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

	<!-- 四大域对象 -->

	<%

		java.util.List<com.blog.bean.User> users = new java.util.ArrayList<com.blog.bean.User>();

		users.add(new com.blog.bean.User("张三", 23));


### 总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

**高性能**。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

**一致性**。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

**高可用**。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。

-----

篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

![](https://img-blog.csdnimg.cn/img_convert/df7ec53216dd355661aebfe39f3c6f61.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/69200edcbf960cfa980145b2750d9d48.webp?x-oss-process=image/format,png)

由于内容太多,这里只截取部分的内容。


优化这4个方面重点介绍。

**一致性**。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

**高可用**。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。

-----

篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

[外链图片转存中...(img-jf1MAkqc-1714328597569)]

[外链图片转存中...(img-mZlICxjb-1714328597569)]

由于内容太多,这里只截取部分的内容。


> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值