zoukankan      html  css  js  c++  java
  • Cookie、Session、jsp、EL、JSTL

     
    会话技术 Cookie Session
    从访问一个站点,到关闭不继续访问 称为一次会话过程。会话技术就是记录本次会话中客户端的状态与数据的。
    会话技术分为cookie、session。
    cookie:将数据存储在客户端本地,减少服务器端存储的压力,安全性不好,客户端可以清除cookie
    session:将数据存储到服务器端,安全性相对好,增加服务器的压力。
     
    Cookie
    response设置cookie
    1.创建cookie
    Cookie cookie = new Cookie(String cookieName,String cookieValue);
    如:Cookie cookie = new Cookie("username","zhagnsan");
    那么该cookie会以响应头的方式发送给客户端
    2.设置cookie持久化时间
    cookie.setMaxAge(10*60) //单位秒 10分钟
    如果不设置持久化时间,那么关闭浏览器cookie就会销毁
    3.设置cookie的携带路径
    cookie.setPath(String path);
    如果不设置携带路径,那么改cookie信息会再访问产生该cookie的web资源所在的路径都携带cookie信息
    cookie.setPath("/abc"); 在abc的任何资源都携带cookie
    cookie.setPath("/abc/ddd"); 只有在访问ddd时才携带cookie
    4.像客户端发送cookie:
    response.addCookie(Cookie cookie);
    5.删除cookie 设置持久化时间为0即可 cookie.setMaxAge(0);
     
    request获得cookie
    1.通过request获得所有的cookie
    Cookie[] cookies = request.getCookies();
    2.遍历cookie数组,通过名称获得我们想要的cookie
    for(Cookie cookie : cookies){
    if(cookie.getName().equals(cookieName)){
    String cookieValue = cookie.getValue();
    }
    }
     
    Session
    Session需要借助Cookie存储客户的唯一性标识JSESSIONID
    1.获得Session对象
    HttpSession session = request.getSession();
    获得专属于当前会话的session对象,如果没有则创建一个新的Session返回。
    2.向session中存储数据
    session.setAttribute(String name,Object obj);//设置session
    session.getAttribute(String name); //获取
    session.removeAttribute(String name); //删除
    3.设置session失效
    session.invalidate();
     
    session的生命周期
    创建:第一次 request.getSession();
    销毁:服务器关闭、session 失效、过期(默认30分钟)、 手动session.invalidate();
    作用范围:默认一会话中。
     
    JSP(了解即可 大清亡了 早过时了 都前后端分离了)
    全程Java Serer Pages 动态生成html、xml的Web网页。
    Jsp文件后缀名为*.jsp。
    Jsp可以运行在linux和windows上。
    JSP类似于php、asp、asp.net等语言详细,运行在服务器端的语言。
     
    注释:
    <%--这里是jsp注释 页面中不会显示 --%>
    <!--这里是html注释,查看源代码可以显示 -->
     
    jsp脚本:
    <%java 代码%> 内部的java代码翻译到service方法的内部
    <%=java变量或表达式%> 会翻译成service方法内部out.print()进行输出
    <%!java代码%> 翻译成servlet的成员内部而不是在service方法中
     
    jsp运行原理-jsp本质就是servlet
    jsp在第一次被访问时会被容易翻译成servlet,执行过程 hello.jsp->hello.java->编译 运行
     
    jsp三大指令
    1.page指令
    格式 <% page 属性1="属性值1" 属性2="属性值2" %>
    language:jsp脚本中可以嵌入的语言种类
    pageEncoding:当前jsp文件的本身编码
    contentType:文件类型 编码格式
    session:是否jsp在翻译时自动创建session
    import:导入java的包
    errorPage:当前页面出错后跳转到哪个页面
    isErrorPage:当前页面是一个处理错误的页面
    2.include指令
    可以将一个jsp页面包含到另一个jsp页面中
    格式 <%@ include file="目标文件地址"%>
    3.taglib指令
    在jsp页面中引入标签库(jstl标签库、struts2标签库)
    格式 <%@ taglib uri="标签库地址" prefix="前缀" %>
     
    jsp内置对象
    jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp脚本中可以直接使用。
    out 用于页面输出
    request 得到用户请求信息
    response 服务器向客户端的回应信息
    config 服务器配置,可以获得初始化参数
    session 用来保存用户的信息
    application 所有用户的共享信息
    page 当前页面转换后的servlet类的实例
    pageContext JSP的页面容器
    exception jsp所发生的异常,在错误页中才起作用
     
    四大作用域
    page域 当前jsp页面范围
    request域 一次请求
    session域 一次会话
    application 整个web应用
     
    jsp标签
    页面包含:<jsp:include page="要被包含的页面" />
    请求转发:<jsp:forward page="要转发的资源" />
     
    EL
    EL(Express Language) 表达式可以嵌入在jsp页面内部 ,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中的脚本编写。
     
    EL从域中取出数据
    jsp脚本:<%=request.getAttribute(name)%>
    EL表达式:${requestScope.name}
     
    EL最主要的作用是获得四大作用域中的数据,格式 ${EL表达式}
    EL 获得pageContext域中的值 ${pageScope.key}
    EL 获得request域中的值 ${requestScope.key}
    EL 获得session域中的值 ${session.Scope.key}
    EL 获得application域中的值 ${applicationScope.key}
     
    EL的内置对象11个
    pageScope,requestScope,sessionScope,applicationScope --获取jsp域中的数据
    param,paramValues --接收参数 相当于request.getParameter() request.getParameterValues()
    header,headerValues --获取请求头信息 相当于request.getHeader(name)
    initParam --获取全局初始化参数 相当于 this.getServletContext().getInitParameter(name)
    cookie --web开发中的cookie 相当于 request.getCookies() --cookie.getName() -- cookie.getValue()
    pageContext --web开发中的pageContext
     
    pageContext 获得其他八大对象
    ${pageContext.request.contextPath} 相当于 <%=pageContext.getRequest().getContextPath %> 获得web应用的名称
     
    EL执行表达式
    ${1+1}
    ${empty user} 判断是否为空
    ${user == null ? true : false}
     
    JSTL
    JSP Standard Tag Library ,jsp标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑功能。jstl出现的目的同el一样是为了代替jsp页面中脚本代码。
    2.部署 将lib下的两个jar包赋值到web-inflib目录下
    3.测试 在jsp页面中引入核心包 <%@ taglib prefix="c" uri="http://java.sun.com.jsp/jstl/core" %>
     
    常用标签:
    1.<c:if test="" >条件判断 test后面跟boolean的条件
    2.<c:forEach> for循环
    if例子:
    <%
    int num = 1;
    %>
    <%if(num == 1){%>
    <p><%=num%></p>
    <%}%>
     
    <c:if test="${1==1}">
    <p><%=num%></p>
    </c:if>
     
    循环例子:
    <ul>
    <%
    for (int i = 0; i < 10; i++) {
    %>
    <li><%=i%>
    </li>
    <%
    }%>
    </ul>
     
    <ul>
    <c:forEach begin="0" end="10" var="i">
    <li>${i}</li>
    </c:forEach>
    </ul>
     
    遍历对象集合
    <table>
    <%for(Person p : persons){%>
    <tr>
    <td><%=p.name%></td>
    <td><%=p.age%></td>
    </tr>
    <%}%>
    </table>
     
    <table>
    <c:forEach items="${persons}" var="p">
    <tr>
    <td>${p.name}</td>
    <td>${p.age}</td>
    </tr>
    </c:forEach>
    </table>
     
     

  • 相关阅读:
    数据仓库的直白概述
    Google准实时数据仓库Mesa(一)
    活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》
    3招搞定APP注册作弊
    【0门槛】PR稿的自我修养
    Hive中文注释乱码解决方案(2)
    Hive中文注释乱码解决方案
    网易考拉Android客户端网络模块设计
    有运气摇号来不及挑选?网易有数帮你科学选房
    selenium下拉框踩坑埋坑
  • 原文地址:https://www.cnblogs.com/baidawei/p/9008705.html
Copyright © 2011-2022 走看看