servlet与jsp

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("")

相关推荐
2301_780789668 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T8 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设9 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn9 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川9 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵9 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人9 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David10 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas10010 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin11 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php