14_JSP

Day14_JSP
1.回顾
会话
Cookie:客户端的会话技术 原理: 浏览器向服务器发送请求,服务器返回数据,将返回的部分数据以Cookie形式存储浏览器 当浏览器在一次访问的时候,可以获取Cookie当中保存的数据 Cookile c = new Cookie(key,value) -->key,value都是字符串 response.addCookie©; Cookie默认声明周期:浏览器已关闭,Cookie就挂掉了 设置最大的生存时间: c.setMaxAge(int )单位是秒 获取: Cookie[] cs = request.getCookies(); if(cs!=null){ for(Cookie c:cs){ } }getName():获取Cookie中的key值 getValue():获取Cookie中的Value Cookie的访问路径: Cookie的默认访问路径:请求路径的上一个路径 自定义设置路径: setPath("/项目名/a") 获取当前的项目路径(名):request.getContextPath()—>/项目名 Cookie的有效访问路径|怎么访问到Cookie 请求路径与Cookie的路径是同级目录,或者是其子目录 总结:Cookie特点 1.key唯一 2.只能保存字符串 3.默认的生存时间为浏览器关闭 4.Cookie存储的数据大小大概4k 5.浏览器保存的Cookie数量200-300左右 6.Cookie可以跨域 7.Cookie可以被禁止 8.缓解服务器压力 Session:服务器端会话技术 原理: 浏览器向服务器发送请求,服务器创建一个session对象,每一个session对象有唯一sessionid,服务器响应以 setCookie消息头的方式将sessionid返回到浏览器保存到Cookie中,当浏览器再一次请求的时候,从Cookie中获取 Sessionid,在服务器中找到对应的session对象。 HttpSession session = request.getSesssion(); setAttribuet(key,value) getAttribute(key) removeAttribute(key) invalidate()
遗留问题:
面试题: 浏览器禁用Cookie之后,Session怎么用? 对session有影响, 当Cookie禁用后,浏览器就不能再接收或者保存第三方的返回Cookie数据,换句话说Cookie中没有SessionID
当发送请求的时候,请求中不能带有SessionID
解决方式:
1.表单上做一个隐藏域
2.重写url路径
response.encodeURL(String utl);//encodeURL方法用在链接地址、表单提交地址。
response.encodeRedirectURL(String url);//用于重定向
重写url之后的路径
list.cn;jsessionid=AF170E70CD079221E7B4755DCB2F2736
重写url就是当发送请求的时候,将sessionid加到请求的路径的后边
超链接的重写后的路径
修改
http://localhost:8080/day12_servlet/modifyUI.cn;jsessionid=1D8420F28AFD159DDA38409F06C0C84D?id=8
转发:路径不用改
2.jsp
默认的生存时间:30分钟 tomcat—>web.xml—>30 setMaxInactiveInterval(int); 单位是分钟 共享域: session的共享域: 一个会话|什么时候会话结束:超时,服务器关闭|session对象被销毁 ServletContext:Servlet上下文—>共享域整个项目共享 Servlet中的每一个类或者接口都能获取该对象 getServletContext()-- >HttpServlet|GenericServlet|ServletConfig|HttpServletRequest|HttpSession setAttribuet(key,value) getAttribute(key) removeAttribute(key) web.xml–> name admin 设置参数值(数据)—>Servlet上下文—>整个项目共享该配置的数据 以后阶段的使用:Spring中加载配置文件
JSP:Java Server pages–>java服务器页面 JSP:显示交互的数据,动态数据(不经常使用)–>要保证实时保持和服务器连接,不然不能显示 HTML:静态资源页面–>静态的资源数据–>对服务器没有压力 JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络 服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请 求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的 业务需求。 JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了 被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它 们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的 Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二 进制机器码,也可以直接编译成二进制码。 修改JSP页面的编码: JSP的用法: 1.创建jsp 创建一个以.jsp为后缀的文件 2.可以存在的内容 HTML|CSS|JS|Jquery–》原样照搬 Java代码 <% %> JSP表达式<%= %> 声明成员变量 <%! %> jsp运行原理: JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的 Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。 jsp–>java–>class
xxx.jsp通过服务器编译器编译成xxx_jsp.java文件,如果在jsp文件中编写的java,放入到xxx_jsp.java的 service方法中,表达式就只输出(service方法)——>通过java的JVM–编译为xxx_jsp.class文件二进制文件 执行xxx_jsp.class文件了。。 所有以上的原理过程得知: jsp的本质就是一个Servlet Jsp中指令: 做的一些页面的额外处理 3大指令 <%@指令名称 属性名=“属性值” 属性名=“属性值” %> page:当前页面 <%@page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” import=“java.util.*”%> 相关属性: contentType:等价于response.setContentType(“text/html; charset=UTF-8”) pageEncoding:页面编码 import:导包 导入多个包的时候可以使用: import=“包名,包名” errorPage=“eror.jsp” :指定错误页面,
如果指定error.jsp为错误页面,那么必须在错误页面的page指令中添加isErrorPage=“true” isELIgnored=“false”:是否忽略EL表达式,默认jsp页面支持EL表达式 isErrorPage=“false”:是否是错误页面,默认是不是错误页面false include:包含,加入页面 <%@include file="" %> taglib:标签库指令 <%@taglib prefix="" uri="" %> prefix:标签前缀 uri:标签库的路径 JSTL标签库
EL表达式
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。 基本语法格式: ${绑定名}-- key>request(HttpServletRequest)|session(HttpSession)|application(ServletContext) setAttribute(key,value) ${绑定名}等价于—> getAttribute(“绑定名”) 如果绑定的数据时一个Bean,获取bean中的属性 绑 定 名 . 属 性 名 或 者 {绑定名.属性名}或者 .{绑定名[“属性名”]} Object obj =xxxx.getAttribute(“绑定名”) obj.get属性名(); 绑 定 名 [ " 属 性 名 " ] : 当 绑 定 名 或 者 属 性 名 有 特 殊 符 号 的 时 候 ( 比 如 − , {绑定名["属性名"]}:当绑定名或者属性名有特殊符号的时候(比如-, [""]:,…),或者属性名是数字的时候使用该方式 当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。 Map<String,String> map=new HashMap<>(); map.put(“1”, “呵呵”); ${map[“1”]} 注意:当EL表达式获取不到的时候,获取的是""
还可以做运算
其他的应用方式(了解)
明日目标: 4大作用域 6大动作 9大对象 JSTL标签库(核心)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值