tomcat底层是一个socket程序
servlet、filter、listener是Javaweb开发的三大组件
动作标签
<jsp:include page="header.jsp"></jsp:include>
指令标签 page指令标签 <%@page %> include指令标签<%@include %>
<%@include file="header.jsp"%>

重定向req.getContentPath();重定向获取项目根路径

jsp脚本:
<% //这是一段可以写java代码的JSP脚本 //注意,这里面不能用jsp的注释方法
out.println("大家好,这里是Java语言输出的一段话");
%>
JSP的声明
<%!
//不仅可以声明变量,还可以声明方法。但是在jsp脚本中不能写java方法
int count(int x,int y) { return x+y; }
%>
JSP表达式
<h1>a=<%=a%> 10+20=<%=count(10,20)%></h1>
jsp9大内置对象
四个域对象
page范围: pageContext 只在一个页面中保存属性,跳转之后无效<%pageContext.setAttribute("appmsg","page")><%=pageContext.getAttribute("appmsg")%>
request范围:request 只在一次请求中保存,跳转之后依然有效<%=request.getAttribute("appmsg")%>
session范围:session 在一次会话范围中,无论何种跳转都可用<%=session.getAttribute("appmsg")%>
application范围:application 在整个服务器上保存 req.getServletContext().setAttribute("appmsg","testapplication")<%=application.getAttribute("appmsg")%>
域对象对应的空间对象 pageScope requestScope sessionScope applicationScope
响应对象:response
输出流对象:out
其他三个对象:servletConfig page exception
EL表达式:
list集合 {list.size} {list1}
map集合 {map.key} {map"key"} {map.b} {map"b"}
list和map表示存在域对象中的变量名
获取User中的数据 {user} {user.pwd}
{empty "str"}、{empty ""}、{empty null} 、{empty 不存在} false true true true
{empty list0}、{empty list1}、${empty listnull} true false true
{empty user}、{empty user("1")}、${empty usernull} false false true
JSTL:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 条件标签、迭代标签
<c:forTokens items="${str2}" delims="#" var="i">
${i}----->
</c:forTokens>
delims是分割符
对Map集合进行遍历:
<c:forEach items="${map}" var = "i">
{i}---\>{i.key}--->${i.value}
</c:forEach>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>格式化标签
<fmt:formatNumber value="10" type="number" var="num"/>${num}
<fmt:formatNumber value="10" type="number"/>
<fmt:formatNumber value="10" type="percent"/>
<fmt:formatNumber value="10" type="currency"/>
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="10" type="currency"/>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"/>
将指定的数字、日期格式化为具有一定格式的字符串
<fmt:parseNumber value="100"/><br>
<fmt:parseNumber value="100" type="number"/><br>
<fmt:parseNumber value="100%" type="percent"/><br>
<fmt:parseNumber value="¥10.00" type="currency"/><br>
<fmt:parseDate value="2020-01-06" type="date"/><br>
<fmt:parseDate value="2020/01/06" pattern="yyyy/MM/dd"/><br>
将字符串解析为数字、Date
文件上传需要在servlet上添加@MultipartConfig注解
拦截器:@WebFilter("/servlet01") implements Filter doFilter方法filterChain.doFilter(req,resp)
三大域:request、session、application
HttpServletRequest、HttpSession、ServletContext
ServletContext.getAttribute("")
servletRequest.getParameter("")