Servlet 学习(上)
Servlet 学习(上)
概论
什么是 Servlet?(通俗定义)
Servlet 是 Java 编写的、运行在 Web 服务器(如 Tomcat、Jetty)上的服务器端小程序,它是 Java EE 规范的核心组件之一,专门用来处理客户端(浏览器 / APP)的 HTTP 请求,并返回动态响应。
简单说:Servlet 就是后端处理网页请求的核心代码,是客户端和服务器业务逻辑之间的桥梁。
补充:Servlet 不是前端页面(HTML/JSP),而是纯 Java 代码,负责后台逻辑处理;我们常用的 SpringMVC、SpringBoot 等框架,底层都是基于 Servlet 封装的。
Servlet 的核心作用
Servlet 的核心使命就是处理 Web 请求、生成动态响应,具体分为 5 个关键作用:
1. 接收并解析 HTTP 请求
这是 Servlet 的入口工作:
- 接收浏览器 / 客户端发送的 HTTP 请求(GET/POST/PUT 等请求方式)
- 解析请求中的数据:请求参数(用户名、密码、查询关键词)、请求头、Cookie、表单数据等
2. 执行业务逻辑处理(核心功能)
这是 Servlet 最关键的作用,负责真正的后端业务:
- 调用业务层(Service)、数据访问层(DAO)代码
- 操作数据库(增删改查:登录校验、数据查询、用户注册等)
- 执行计算、逻辑判断、权限校验等操作
3. 生成并返回 HTTP 响应
处理完业务后,Servlet 会动态生成响应数据返回给客户端,响应内容可以是:
- 网页(HTML)
- 接口数据(JSON/XML,前后端分离常用)
- 文件(下载、图片)
- 状态码(404、500、200 等)
4. 会话管理
维护用户的登录状态,解决 HTTP 协议无状态的问题:
- 创建 / 获取 Session(服务器端存储用户信息)
- 读写 Cookie(客户端存储用户标识)
- 实现登录、购物车、身份验证等功能
5. 请求控制与跳转
负责页面 / 接口的分发调度:
- 请求转发(服务器内部跳转,地址栏不变)
- 重定向(客户端重新请求,地址栏改变)
- 统一拦截、权限控制
Servlet 的工作流程
- 浏览器输入网址,发送 HTTP 请求 到 Web 服务器(Tomcat);
- Tomcat 接收请求,根据配置找到对应的 Servlet;
- Tomcat 调用 Servlet 的
doGet()/doPost()方法处理请求; - Servlet 执行业务逻辑(查数据库、计算等);
- Servlet 生成响应结果,返回给 Tomcat;
- Tomcat 将响应发送给浏览器,浏览器展示内容。

Servlet 的核心特点
- 基于 Java:跨平台,一次编写,多服务器运行;
- 服务器端运行:代码安全,不会暴露给客户端;
- 单例多线程:默认一个 Servlet 实例,同时处理多个请求,性能高效;
- 遵循 HTTP 协议:专门适配 Web 开发,是 Java Web 的基础标准。
实现
创建项目

注意:如果这个项目的webapp没有网络log,说明配置有问题,需要去设置配置。如果有log则说明正常。

点击设置,点击项目结构

选择项目,点+号,选择web


修改路径,选择至WEB-INF的路径,然后点击应用确定

创建工件

选择工件**(需要装Tomcat服务器)**


写一个主页面index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>主界面</h1>
<h3>这两天热得很</h3>
</body>
</html>
后面代码访问方式为:运行对应代码启动的服务器后,在浏览器访问localhost:8080/servlet_s1_war/xx.jsp
入门案例:jsp组成
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!--指令部分:规定了页面的编码、嵌入的语言、导包等信息-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- HTML静态部分 -->
<html>
<head>
<title>Title</title>
</head>
<body>
<!--小脚本:嵌入的代码块-->
<%
// 当前时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatDate = sdf.format(date);
%>
<!--声明部分-->
<%!
int a = 3;
%>
<h3>当前时间是:</h3>
<b>
<!--表达式-->
<%=formatDate%>
<%=a%>
</b>
</body>
</html>
JSP的九大内置对象
out(输出)对象
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:03
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--输出对象,类似于System.out.println("")-->
1.<%="输出的内容"%>
2.<%
out.print("输出的内容");
%>
</body>
</html>
获取到请求的相关信息
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 获取到请求的相关信息
String serverName = request.getServerName();
int serverPort = request.getServerPort();
out.println("服务器名称:" + serverName + "<br/>");
out.println("服务器端口号:" + serverPort + "<br/>");
String remoteHost = request.getRemoteHost();
String remoteUser = request.getRemoteUser();
String remoteAddr = request.getRemoteAddr();
int remotePort = request.getRemotePort();
String uri = request.getRequestURI();
String protocol = request.getProtocol();
out.print("浏览器:" + remoteHost + "," + remoteUser + "," + remoteAddr + "<br/>");
out.println("浏览器端口号:" + remotePort + "<br/>");
out.print("Uri:" + uri + "<br/>");
out.print("协议:" + protocol);
%>
</body>
</html>
如何接受浏览器传递过来的内容*
发送给3-3
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="3-3.jsp" method="post">
账号:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
年龄:<input type="number" name="age"/><br/>
爱好:<input type="checkbox" name="love" value="足球"/>⚽️
<input type="checkbox" name="love" value="篮球"/>🏀
<input type="checkbox" name="love" value="排球"/>🏐<br/>
<button>提交</button>
</form>
</body>
</html>
收
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Arrays" %><%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--
如何接受浏览器传递过来的内容 🌟🌟🌟🌟🌟🌟🌟
-->
<%
// 必须在第一行输出
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
// 会获取到某个参数的值(单个) username:参数名称
String username = request.getParameter("username");
String password = request.getParameter("password");
String age = request.getParameter("age");
// 会获取到数组元素
String[] loves = request.getParameterValues("love");
// 获取到所有值
Map<String, String[]> all = request.getParameterMap();
out.print("username:" + username + "<br/>");
out.print("password:" + password + "<br/>");
out.print("age:" + age + "<br/>");
out.print("loves:" + Arrays.toString(loves) + "<br/>");
out.print("all:" + all.keySet() + "<br/>");
out.print("all:" + all.values() + "<br/>");
%>
</body>
</html>
request对象(容器)
<%@ page import="java.util.Arrays" %><%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>3-4.jsp</h3>
<!--容器操作-->
<%
// 存放
request.setAttribute("A", 23);
request.setAttribute("B", new Object());
request.setAttribute("C", Arrays.asList("aa", "bb", "cc"));
request.setAttribute("D", 23);
// 覆盖
request.setAttribute("B", "abc");
%>
<%
// 删除
request.removeAttribute("A");
%>
<%
// 获取
Object a = request.getAttribute("A");
Object b = request.getAttribute("B");
Object c = request.getAttribute("C");
Object d = request.getAttribute("D");
out.print(a + "," + b + "," + c + "," + d);
%>
<%
// 页面跳转 转发
request.getRequestDispatcher("3-5.jsp").forward(request,response);
%>
</body>
</html>
request存的东西只有当次请求有效,下面这段代码则在3-4运行之后则都是null
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>3-5.jsp</h3>
<%
Object a = request.getAttribute("A");
Object b = request.getAttribute("B");
Object c = request.getAttribute("C");
Object d = request.getAttribute("D");
out.print(a + "," + b + "," + c + "," + d);
%>
</body>
</html>
response(响应)对象
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>response对象----4-1.jsp</h3>
<h4>4-1</h4>
<%
int status = response.getStatus();
response.setCharacterEncoding("utf-8");
String encoding = response.getCharacterEncoding();
out.print("status:" + status + "<br/>");
out.print("encoding:" + encoding);
// 页面跳转 重定向
response.sendRedirect("4-2.jsp");
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:42
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h4>4-2</h4>
</body>
</html>
session对象(容器)
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 14:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 会话ID
String id = session.getId();
// 是否是新会话
boolean isNew = session.isNew();
// 第一次请求的时间
long creationTime = session.getCreationTime();
// 最后一次请求的时间
long lastAccessedTime = session.getLastAccessedTime();
// 最大存活时间
long maxInactiveInterval = session.getMaxInactiveInterval();
// 设置最大存活时间
session.setMaxInactiveInterval(1800);
// 让当前会话失效
// session.invalidate();
out.print("id:" + id + "<br/>");
out.print("isNew:" + isNew + "<br/>");
out.print("creationTime:" + creationTime + "<br/>");
out.print("lastAccessedTime:" + lastAccessedTime + "<br/>");
out.print("maxInactiveInterval:" + maxInactiveInterval + "<br/>");
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 15:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>5-2</h3>
<%
request.setAttribute("A", "request放的A");
request.setAttribute("B", "request放的B");
request.setAttribute("C", "request放的C");
// session容器操作
session.setAttribute("A", "session放的A");
session.setAttribute("B", "session放的B");
session.setAttribute("C", "session放的C");
session.removeAttribute("B");
Object a = session.getAttribute("A");
Object b = session.getAttribute("B");
Object c = session.getAttribute("C");
out.print("a:" + a + "<br/>");
out.print("b:" + b + "<br/>");
out.print("c:" + c + "<br/>");
Object a1 = request.getAttribute("A");
Object b1 = request.getAttribute("B");
Object c1 = request.getAttribute("C");
out.print("a1:" + a1 + "<br/>");
out.print("b1:" + b1 + "<br/>");
out.print("c1:" + c1 + "<br/>");
// request.getRequestDispatcher("5-3.jsp").forward(request, response);
response.sendRedirect("5-3.jsp");
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 15:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>5-3</h3>
<%
Object a = session.getAttribute("A");
Object b = session.getAttribute("B");
Object c = session.getAttribute("C");
out.print("a:" + a + "<br/>");
out.print("b:" + b + "<br/>");
out.print("c:" + c + "<br/>");
Object a1 = request.getAttribute("A");
Object b1 = request.getAttribute("B");
Object c1 = request.getAttribute("C");
out.print("a1:" + a1 + "<br/>");
out.print("b1:" + b1 + "<br/>");
out.print("c1:" + c1 + "<br/>");
%>
</body>
</html>
request存在时间很短,session生命周期要在关闭浏览器或者服务器,或者让会话直接失效才会死亡
application对象(容器)、page对象(容器)和四大容器
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 16:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 存放
application.setAttribute("A", "application存放的a");
application.setAttribute("B", "application存放的b");
application.setAttribute("C", "application存放的c");
// 删除
application.removeAttribute("B");
// 获取
Object a = application.getAttribute("A");
Object b = application.getAttribute("B");
Object c = application.getAttribute("C");
out.print("a:" + a + "<br/>");
out.print("b:" + b + "<br/>");
out.print("c:" + c + "<br/>");
%>
<hr/>
<%
// 四大容器:page容器、request容器、session容器以及application容器 生命周期不同
pageContext.setAttribute("M1", "page容器中的M");
request.setAttribute("M2", "request容器中的M");
session.setAttribute("M3", "session容器中的M");
application.setAttribute("M4", "application容器中的M");
%>
<%=pageContext.getAttribute("M1")%>
<br/>
<%=request.getAttribute("M2")%>
<br/>
<%=session.getAttribute("M3")%>
<br/>
<%=application.getAttribute("M4")%>
<br/>
<%
// request.getRequestDispatcher("6-2.jsp").forward(request, response);
response.sendRedirect("6-2.jsp");
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 16:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>6-2.jsp</h3>
<%=pageContext.getAttribute("M1")%>
<br/>
<%=request.getAttribute("M2")%>
<br/>
<%=session.getAttribute("M3")%>
<br/>
<%=application.getAttribute("M4")%>
<br/>
</body>
</html>
exception对象
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 16:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" errorPage="7-2.jsp" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>7-1.jsp</h1>
<%
int a = 9 / 0;
%>
<%=a%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 16:35
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>我是catch,专门处理错误的页面</h2>
<%
String message = exception.getMessage();
out.print(message);
%>
</body>
</html>
pageContext对象
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 16:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- JSP页面配置:设置响应类型、编码、脚本语言 --%>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>pageContext对象</h3>
<%
// 获取JSP内置对象
ServletRequest req = pageContext.getRequest(); <%-- 获取request请求对象 --%>
ServletResponse resp = pageContext.getResponse(); <%-- 获取response响应对象 --%>
HttpSession session1 = pageContext.getSession(); <%-- 获取session会话对象 --%>
ServletContext app = session1.getServletContext(); <%-- 获取application全局对象 --%>
// 四大作用域存值:1-page 2-request 3-session 4-application
pageContext.setAttribute("A", "aaa", 1); <%-- 存入page作用域 --%>
pageContext.setAttribute("B1", "bbb", 2); <%-- 存入request作用域 --%>
request.setAttribute("B2", "bbb2"); <%-- 直接存入request作用域 --%>
pageContext.setAttribute("C1", "ccc", 3); <%-- 存入session作用域 --%>
session.setAttribute("C2", "ccc2"); <%-- 直接存入session作用域 --%>
pageContext.setAttribute("D1", "ddd", 4); <%-- 存入application作用域 --%>
application.setAttribute("D2", "ddd2"); <%-- 直接存入application作用域 --%>
%>
<%=pageContext.getAttribute("A")%><br/> <%-- 获取page域的A数据 --%>
<%=pageContext.getAttribute("B1", 2)%> <%-- 获取request域的B1 --%>
<%=pageContext.getAttribute("B2", 2)%> <%-- 获取request域的B2 --%>
<%=request.getAttribute("B1")%> <%-- request对象获取B1 --%>
<%=request.getAttribute("B2")%><br/> <%-- request对象获取B2 --%>
<%=pageContext.getAttribute("C1", 3)%> <%-- 获取session域的C1 --%>
<%=pageContext.getAttribute("C2", 3)%> <%-- 获取session域的C2 --%>
<%=session.getAttribute("C1")%> <%-- session对象获取C1 --%>
<%=session.getAttribute("C2")%><br/> <%-- session对象获取C2 --%>
<%=pageContext.getAttribute("D1", 4)%> <%-- 获取application域的D1 --%>
<%=pageContext.getAttribute("D2", 4)%> <%-- 获取application域的D2 --%>
<%=application.getAttribute("D1")%> <%-- application对象获取D1 --%>
<%=application.getAttribute("D2")%><br/> <%-- application对象获取D2 --%>
</body>
</html>
config对象
config 对象的主要作用是取得服务器的配置信息。通过 pageContext 对象的getServletConfig() 方法可以获取一个 config 对象。当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个 Servlet。 开发者可以在 web.xml 文件中为应用程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。
EL 表达式
概述
Expression Language 表达式语言,是一种在 JSP 页面获取数据的简单方式。只能获取数据,不能设置数据。主要用于替换和简化jsp页面中java代码的编写。
语法
在JSP页面的任何静态部分均可通过: ${expression}来获取到指定表达式的值。
需要注意的是,使用Idea创建jsp页面时需手动在page指令中允许使用EL表达式。
容器相应操作
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 17:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
pageContext.setAttribute("A", "page", 1);
pageContext.setAttribute("A", "request", 2);
pageContext.setAttribute("A", "session", 3);
pageContext.setAttribute("A", "application", 4);
%>
<h3>表达式输出</h3>
<%
Object a1 = pageContext.getAttribute("A", 1);
Object a2 = pageContext.getAttribute("A", 2);
Object a3 = pageContext.getAttribute("A", 3);
Object a4 = pageContext.getAttribute("A", 4);
out.print("a1:" + a1 + "<br/>");
out.print("a2:" + a2 + "<br/>");
out.print("a3:" + a3 + "<br/>");
out.print("a4:" + a4 + "<br/>");
%>
<hr/>
<h3>EL表达式输出</h3>
a1:${pageScope.A}<br/>
a2:${requestScope.A}<br/>
a3:${sessionScope.A}<br/>
a4:${applicationScope.A}<br/>
<!--依次从四个容器中寻找,找到输出-->
缩写:${A}
</body>
</html>
获取请求参数的值
发送
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 17:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="2-2.jsp" method="post">
账号:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
年龄:<input type="number" name="age"/><br/>
爱好:<input type="checkbox" name="love" value="足球"/>⚽️
<input type="checkbox" name="love" value="篮球"/>🏀
<input type="checkbox" name="love" value="排球"/>🏐<br/>
<button>提交</button>
</form>
</body>
</html>
收
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Arrays" %><%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 17:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>过去的写法</h3>
<%
// 必须在第一行输出
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
// 会获取到某个参数的值(单个) username:参数名称
String username = request.getParameter("username");
String password = request.getParameter("password");
String age = request.getParameter("age");
// 会获取到数组元素
String[] loves = request.getParameterValues("love");
// 获取到所有值
Map<String, String[]> all = request.getParameterMap();
out.print("username:" + username + "<br/>");
out.print("password:" + password + "<br/>");
out.print("age:" + age + "<br/>");
out.print("loves:" + Arrays.toString(loves) + "<br/>");
out.print("all:" + all.keySet() + "<br/>");
out.print("all:" + all.values() + "<br/>");
%>
<h3>EL表达式获取到请求参数的值</h3>
username:${param.username}<br/>
password:${param.password}<br/>
age:${param.age}<br/>
love:${paramValues.love}
</body>
</html>
获取initParam的值
<%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 17:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
web.xml中的值:${initParam.name}
</body>
</html>
对象操作
<%@ page import="bean.Student" %><%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/15
Time: 17:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
4 ${4} admin ${'admin'}
${6+4}
<hr/>
<%
Student stu = new Student();
stu.setId(1);
stu.setName("李四");
stu.setAge(19);
stu.setGender('女');
session.setAttribute("A", stu);
%>
获取到对象:${A}
获取到对象的属性:${A.name}....${A.id}.....${A.gender}.....${A.age}
</body>
</html>
导入jstl依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
运算常量操作和集合操作
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: dailyblue
Date: 2025/7/16
Time: 09:10
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<!--核心标签 核心标签是最常用的 JSTL标签-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
session.setAttribute("A", "aaaa");
session.setAttribute("C", (int) (Math.random() * 100 + 1));
String[] array = {"西安", "宝鸡", "渭南", "商洛", "汉中", "榆林"};
session.setAttribute("D", array);
session.setAttribute("E", new Date());
%>
<c:set value="bbbb" var="B" scope="session"></c:set>
${A}..${B}
<hr/>
<h3>单层if分支</h3>
<c:if test="${C>66}">
${C}大于66
</c:if>
<h3>if-else分支</h3>
<c:choose>
<c:when test="${C>66}">
${C}大于66
</c:when>
<c:otherwise>
${C}小于66
</c:otherwise>
</c:choose>
<h3>多层if分支</h3>
<c:choose>
<c:when test="${C==100}">
${C}完美
</c:when>
<c:when test="${c>=85}">
${C}优秀
</c:when>
<c:when test="${C>=60}">
${C}及格
</c:when>
<c:otherwise>
${C}很差
</c:otherwise>
</c:choose>
<hr/>
<h3>for循环</h3>
<c:forEach var="i" begin="1" end="10" step="1">
<b>${i} </b>
</c:forEach>
<h3>foreach循环</h3>
<c:forEach var="e" items="${D}" varStatus="j">
j:${j.count},e:${e}<br/>
</c:forEach>
<hr/>
<h3>格式化标签</h3>
<fmt:formatNumber var="num1" value="89.888888" pattern="##.##"/>
${num1}
<h4>原来的时间</h4>
${E}
<h4>格式化之后的时间</h4>
<fmt:formatDate value="${E}" var="E2" pattern="yyyy年MM月dd日 HH:mm:ss"/>
${E2}
</body>
</html>
更多推荐


所有评论(0)