JAVA学习日志2-11(JSP)

  • JSP的九大内置对象
    这些对象是隐式对象,是由tomcat容器创建
appliaction全局上下文对象,与servlet的ServletContext是一个作用,作用域都整个web项目,生命周期是随着服务器开启而开启 随着服务器的关闭而关闭
session会话对象,每一个用户都会创建一个session ,用于记录这个用户的唯一性。session作用域范围在整个会话中
request请求对象,服务器用于来获取用户发送请求的一些请求 作用域局限于一次请求之内
pageContext当前页面对象,作用域的范围局限于当前页面
response响应对象,服务器给客户端的一些响应信息
config配置文件对象,主要用于来获取页面配置信息
out输出对象,向页面写数据或者内容。response.getWriter().print(“xxx”)和out.print(“xxx”)都可以向页面写入数据,他们的区别是什么?getWriter 不带缓冲区 ,直接将数据写入到页面里。out 是带缓冲区的,将数据写入到缓冲区,再把缓冲区的数据写入到页面。故可能会用到out.flush()
execption异常对象,对页面中的异常信息进行捕获与收集
page描述页面的对象 ,与java中this 类似

四个作用域的范围 pageContext < request < session <appliaction。如果设置四种作用域下相同的键名进行取值,获取的是最小作用域下的值(越小匹配越精确)。需要获取指定作用域下的值的时候,需要加上 XXXScope

  • 狗皮膏药
    jsp中用于获取项目路径
${pageContext.request.contextPath}

jsp中动态标签库
jsp中的动态标签库,是由java web提供的 ,作用也就是为了简化页面的中的java代码
用于转发的动态标签库

<jsp:forward page="index.jsp"></jsp:forward>

引入其他页面的动态标签库

<jsp:include page="index.jsp"></jsp:include>
  • 动态引入与静态映入的区别
    语法: 动态引入 <jsp:include page=“index.jsp”></jsp:include>
    静态引入<%@include file=“index.jsp”%>
    翻译时机:
    静态引入:先合并再进行编译 只生成一个java文件
    动态引入: 先编译再进行合并 会生产两个java文件
    效率:
    静态引入 只生产一个java文件 效率高
    动态引入 生成两个或者多个java文件 所以效率低

JSTL
JSTL是开源的jsp标签库,引入这些标签库,可以用这些标签库取代jsp上的java代码,提高代码可读性
使用前需要引入jar包在这里插入图片描述

<%--引入核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--引入格式化标签库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%--引入函数标签库--%>
<%@taglib prefix="v" uri="http://java.sun.com/jsp/jstl/functions" %>
  • 核心标签库
    设置
    <c:set var=“变量名” value=“变量的值” scope=“存该变量的作用域”>
<c:set var="testName" value="123" scope="application"></c:set>

输出

<c:out value="${testName}"></c:out>

删除

<c:remove var="testName"></c:remove>

选择结构,test中只能是boolean类型的数据

<c:if test="${testName>120}">yes</c:if>

多分支

<c:choose>
	<c:when test="${testName<10}">10</c:when>
	<c:when test="${testName<20}">20</c:when>
	<c:otherwise>30</c:otherwise>
</c:choose>

循环,类似于增强的for循环

<c:forEach var="temp" items="${list}">

</c:forEach>

Cookie和Session

  • Cookie 的特点:
    1.Cookie 是以键值对来进行存储
    2.Cookie存数据的时候 有长度限制 不能超过4kb
    3.Cookie是存在浏览器中,安全性比较低存的数据都不是非常重要的信息(减轻服务器的压力)
    4.cookie默认的生命周期是随着浏览器的关闭而销毁,所以一般在使用cookie时候需要设置其时间
    向cookie中存储数据(servlet中操作):
        String uname = "zs";
        Integer age = 12;
        //实例化cookie 对象    Cookie    c   = new  Cookie(“键”,”值”)
        Cookie nameCookie = new Cookie("uname",uname);
        //单位是秒,60*60即1小时,有效期指该cookie文件在这一段时间内都有效,过期后前端将无法在获取这个值
        nameCookie.setMaxAge(60*60);
        Cookie ageCookie = new Cookie("age",age.toString());
        ageCookie.setMaxAge(60*60);
        //添加到相应头
        resp.addCookie(nameCookie);
        resp.addCookie(ageCookie);

前端获取(jap中操作):

<%
	Cookie[]cookies = request.getCookies();
	for(Cookie temp:cookies){
		if("uname".equals(temp.getName())){
			pageContext.setAttribute("uanme",temp.getValue());
		}
		if("age".equals(temp.getName())){
			pageContext.setAttribute("age",temp.getValue());	
		}
	}
	%>
  • session
    session 是存在服务器 session 是四大作用域对象之一 每一个会话的且唯一标识就是sessionId,sessionId默认的保存时间半个小时,session一般是与cookie来进行搭配使用,而session的唯一标识 sessionId是保存在客户端 也就是cookie中,每次重新开启一个会话 会重新创建一个seessionId

  • session请求过程
    1.浏览器打开访问的时候,每次请求都会携带一个sessionId向服务器发送请求
    2.第一次请求,没有sessionId服务器创建一个记录这个会话的唯一标识,把sessionid保存到cookie中
    3.如果浏览器关闭之后 cookie如果存的数据 不设置时间,默认是浏览器关闭而消失
    所以再请求时候 已经找到原来的sessionId 服务器会创建新的sessionId 来唯一标识这个会话

  • session的特点:
    1.session是存在服务器中
    2.session是第二大内置对象
    3.session 默认的时间周期的半个小时
    4.session存的方式也是以键值对形式来进行存储 session存的类型可以是任意的类型
    5.session存值没有长度限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值