(二十五)基础系列 JSP/JSTL/EL
来源:互联网 发布:scanner java 编辑:程序博客网 时间:2024/05/17 03:06
cookie:浏览器端会话技术由服务器产生,生成key=value形式,通过响应头(set-cookie)返回给浏览器,保存在浏览器端下次访问的时候根据一定的规则携带cookie,通过请求头(cookie)携带给服务器.常用方法: 构造: new Cookie(String key,String value) 写回: response.addCookie(Cookie c) 获取: Cookie[] request.getCookies(); cookie的api: getName():获取cookie的名称 getValue():获取cookie的值 setMaxAge(int 秒数);持久化 若int为0;删除此cookie(前提必须路径一致) setPath(String path):设置cookie的路径 若访问的链接的路径中包含cookie的path,则携带注意: cookie不能跨浏览器 cookie不支持中文 ////////////////////////////session:服务器端的会话技术浏览器访问服务器的时候,服务器会获取jsessionid, 若获取不到: 服务器创建一个session,保存用户数据,将该session的jsessionid通过响应返回给浏览器 若获取到: 服务器拿着这个jessionid去session池中查找有无此session 若查找不到: 服务器创建一个session,保存用户数据,将该session的jsessionid通过响应返回给浏览器 若查找到: 拿过来直接使用,将该session的jsessionid通过响应返回给浏览器常用方法: 获取一个session request.getSession();session域对象: xxxAttribute() 生命周期: 创建:java程序中第一次使用request.getsession方法的时候 销毁: 服务器非正常关闭 session超时 默认时间 手动设置时间 手动删除★ session.invalidate();域对象: ServletContext:共享的数据 HttpServletRequest:一次请求的数据 HttpSession:私有的数据/////////////////////////////////////////////jsp/el/jstl案例1-在页面中展示所有商品信息,不要使用jsp的脚本技术分析:jsp/el/jstl/////////////////////////////////////////jsp:java 服务器页面作用: 将内容的生成和信息的展示相分离运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下.jsp脚本:<%..%> java代码片段<%=..%> 输出表达式 相当于out.print();<%!...%> 声明成员jsp的指令作用:声明jsp页面的一些属性和动作格式: <%@指令名称 属性="值" 属性="值"%>jsp指令的分类: page:主要声明jsp页面的一些属性 include:静态包含. taglib:导入标签库注意: 一个页面中可以出现多个指令 指令可以放在任意位置,一般都放在jsp页面最上面.//////////////////////////page指令: 重要属性:3个 contentType:设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype pageEncoding:设置页面的编码 import:导入所需要的包 contentType和pageEncoding联系: 若两者都出现的时候,各自使用各自的编码 若只出现一者,两个都使用出现的这个编码 若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1 了解属性: language:当前jsp页面里面可以嵌套的语言 buffer:设置jsp页面的流的缓冲区的大小 autoFlush:是否自动刷新 extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类 session:设置jsp页面是否可以使用session内置对象 isELIgnored:是否忽略el表达式 errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面 isErrorPage:当前jsp页面是否是一个错误页面 若值为true,可以使用jsp页面的一个内置对象 exceptioninclude指令: 静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件. 格式: <%@include file="相对路径或者是内部路径" %> 例如: <%@include file="/jsp/include/i1.jsp" %> 路径: 相对路径: ./或者什么都不写 当前路径 上一级路径 ../ 绝对路径: 带协议和主机的绝对路径 不带协议和主机的绝对路径 /项目名/资源 内部路径: 不带协议和主机的绝对路径去掉项目名 请求转发 静态包含 动态包含taglib指令:导入标签库 格式: <%@taglib prefix="前缀名" uri="名称空间" %> 若导入之后 <前缀名:标签 .. > 例如: <c:if test="">输出内容</c:if>/////////////////////////////////// jsp的内置对象:★★★(9大内置对象)在jsp页面上可以直接使用的对象 内置对象 类型 out JspWriter request HttpServletRequest response HttpServletResponse session HttpSession exception Throwable page Servlet(this) config ServletConfig application ServletContext pageContext PageContextjsp的域对象:理解 application 整个项目 session 一次会话 request 一次请求 pageContext 一个页面pagecontext作用:理解 1.域对象 xxxAttribute() 2.操作其他域对象 方法: xxxAttribute(...,int scope); scope取值: APPLICATION_SCOPE SESSION_SCOPE REQUEST_SCOPE PAGE_SCOPE 3.获取其他的内置对象 getXxx() 注意: getRequest():获取request内置对象 4.便捷查找, findAttribute(String key): 依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找 若查找不到,返回一个nulljsp的动作标签<jsp:forward>:请求转发 相当于java中 request.getRequestDispatcher(..).forward(..); <jsp:forward page="内部路径"></jsp:forward><jsp:include>:动态包含 就是将被包含页面或者servlet的运行结果包含到当前页面中./////////////////////////////////////////////////////////el:jsp的内置表达式语言,从jsp2.0开始.用来替代<%=..%>作用: 1.获取域中数据 ★ 2.执行运算 ★ 3.获取常见的web对象 4.调用java的方法格式: ${el表达式}获取域中数据:★注意:★ 若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取 例如: ${requestScope["arr.age"] }获取简单数据 ${pageScope|requestScope|sessionScope|applicationScope.属性名} 以后经常使用: ${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找 若查找不到,返回""获取复杂数据 获取数组中的数据 ${域中的名称[index]} 获取list中的数据 ${域中的名称[index]} 获取map中的数据 ${域中的名称.键名}javabean导航 javabean: java语言编写的一个可重用的组件, 狭义上来说就是我们编写的一个普通的java类 例如:User Person javabean规范: 1.必须是一个公共的具体的类 public class 2.提供私有的字段 private String id;//id称之为字段 3.提供公共访问字段的方法 get|set|is方法 public String getId(){..} 一旦有公共的方法之后,get|set|is之后的内容,将首字母小写,将这个东西称之为bean属性 id就是一个bean属性 4.提供一个无参的构造器 5.一般实现序列化接口 serializable ${域中javabean名称.bean属性}//////////////////执行运算:四则运算 关系(>..) 逻辑(&& ||)注意: +:只能进行加法运算,字符串形式数字可以进行加法运算. empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空 ${empty 域中的对象名称} 三元运算符//////////////////el的内置对象(了解)11个 pageScope requestScope sessionScope applicationScope param paramValues header haederValues initParam cookie★ pageContext★注意: 除了pagecontext其余对象获取的全是map集合了解:和参数相关的el内置对象 param paramValues了解:和请求头相关的el内置对象 header haederValues了解:和全局初始化参数相关的el内置对象 initParamcookie内置对象: ${cookie} 获取map{key=Cookie} 例如:创建cookie Cookie c=new Cookie("username","tom"); 通过${cookie}获取相当于 {username=new Cookie("username","tom")} 相当于map的key是cookie的键 map的value是当前cookie 若项获取名称username的cookie的value值(获取tom) ${cookie.username.value}--javabean导航 注意: java中Cookie的api getName():获取cookie的名称 getValue():获取cookie的value值 我们称name和value是cookie的bean属性 使用cookie内置对象: ${cookie.给cookie起名字.value} 例如: 获取jsession的值 ${cookie.JSESSIONID.value}pageContext:获取不是map集合,相当于jsp的pageContext内置对象 在jsp页面中获取项目名 ${pageContext.request.contextPath}///////////////////////////////////////// ///////////////////////////////////////// jsp注释:html注释 <!-- --> 注释的内容只在页面上看不到 java代码和html源代码都有java注释 只在java代码中存在jsp注释 <%-- --%> 只在jsp页面中存在,翻译成java文件之后就没有了//////////////////////////////////////////////jstl:jsp标准的标签库语言apache的用来替代java脚本使用步骤: 1.导入jar包 (jstl.jar和standard.jar) 2.在页面上导入标签库 <%@taglib prefix="" uri=""%> 例如: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>jstl的分类: core:核心类库 ★ fmt:格式化|国际化 xml:过时了 sql:过时了 函数库:很少使用core:掌握 ★c:if ★c:forEach c:set 往域中设置值 c:choose c:when c:otherwise 分支★c:if 判断 <c:if test="${el表达式}">满足的时候输出的内容</c:if> 例如: <c:if test="${3>4 }"> 3大于4 </c:if> <c:if test="${3<=4 }"> 3不大于4 </c:if> //////////////★c:forEach 循环 格式1: <c:forEach begin="从那里开始" end="到那里结束" step="步长" var="给变量起个名字" varStatus="循环状态变量"> ${i }--${vs.count }--${vs.current }<br> </c:forEach> varStatus:用来记录循环的状态 常用的属性: count:记录次数 current:当前遍历的内容 例如: <c:forEach begin="1" end="20" step="2" var="i" varStatus="vs"> ${i }--${vs.count }--${vs.current }<br> </c:forEach> 格式2: <c:forEach items="${el获取域中的容器}" var="n"> ${n } </c:forEach> 例如: //遍历list <c:forEach items="${list }" var="n"> ${n } </c:forEach> //遍历map <c:forEach items="${map }" var="en"> ${en.key }-- ${en.value }<br/> </c:forEach>
阅读全文
1 0
- (二十五)基础系列 JSP/JSTL/EL
- JSP 基础 EL+JSTL
- JSP基础(二十五)——EL表达式
- JSP基础语法之十五:EL表达式
- jsp基础与提高(EL、JSTL)
- (二十五)基础系列 入门
- (二十五)基础系列 多线程
- (二十五)基础系列 数据库
- JSP EL、JSTL笔记
- jsp el jstl
- jsp-el和jstl
- Servlet-Jsp、EL、JSTL
- WEB-JSP&EL&JSTL
- day12-jsp&el&jstl
- 关于jsp/el/jstl
- jsp^jstl&el
- jsp ---el---jstl小结
- Day20-jsp & el & jstl
- Netty学习小记
- linux 命令大全(收藏版)
- C之bin2rev
- yii 2.0 增删改查 分页 ajax 批删
- ubuntu下安装freeswitch1.6
- (二十五)基础系列 JSP/JSTL/EL
- msm8953之串口dts配置
- Python webservice
- Linux——高级网络控制
- python中日期转换
- springmvc 实现数据验证
- 蒙特卡罗方法入门
- 不能被扫雷程序搞崩的心态
- MAVEN配置详解