会话技术 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-inf\lib\目录下
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>
- Unit05: WEB项目的开发模式 、转发 和 Unit09: EL、JSTL
Unit05: WEB项目的开发模式 .转发 和 Unit09: EL.JSTL dao package dao; import java.io.Serializable; import jav ...
- 第75节:Java的中的JSP,EL和JSTL
第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...
- jsp与El,jstl知识点总结归纳
jsp与El,jstl知识点总结归纳 jsp部分 一.jsp的三大指令 page ,include,taglib 1.jsp中的page指令 <% page %>-设置jsp 例如: &l ...
- 12 Cookie、Session和JSP基础
1.会话技术 (1)会话概念:一次会话中包含多次请求和响应.一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 (2)会话功能:在一次会话的范围内的多次请求间,共享数据 (3)会 ...
- 【JSP】el、jstl、MVC、三层架构
JSP[Java Server Pages] [概念] java服务器页面 简化的servlet设计 html语法中扩展java 跨平台 JSP全名为Java Server Pages,中文名叫jav ...
- [Java] JSP笔记 - EL、JSTL 常用标签
一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...
- C#-WebForm-★内置对象简介★Request-获取请求对象、Response相应请求对象、Session全局变量(私有)、Cookie全局变量(私有)、Application全局公共变量、ViewState
内置对象: 1.Request - 获取请求对象 用法:接收传值 protected void Page_Load(object sender, EventArgs e) { TextBox1.Tex ...
- django的cookie和session以及内置信号、缓存
cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...
- JSP(7)—EL和JSTL
一.EL表达式: 1.简介:EL全称为Expression Language,原本是JSTL1.0为方便存储数据所定义的语言,当时只能在JSTL标签中 使用,到了JSTL2.0之后,EL已经成为正式纳 ...
- JSP的EL和JSTL解析
1. EL 简介EL 全名为Expression Language,所有EL都是以${ 为起始.以} 为结尾的.EL 语法很简单,它最大的特点就是使用上很方便. 接下来介绍EL 主要的语法结构: ${ ...
随机推荐
- 网易内推(Android) 拿offer
学校BBS上师兄发网易内推,凑下热闹投了一发 一面:电话面 大概25分钟,感觉面试官气场很足,主要关注了其中一个 个人开源项目 1.自我介绍 2.说说你做的这个项目 当时谈到使用到了开源框架xtuil ...
- JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块
JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...
- 【Qt编程】Qt学习笔记<一>
1. 在创建项目时,项目名和路径中都不能出现中文. 2. 可以使用Ctrl + "+"和Ctrl + "-"来改变程序的字体大小(Ctrl+ ...
- 对FMDB的封装JRDB
在自己开发中,每次用到数据库都会纠结是使用CoreData还是FMDB.CoreData虽然Api简单,但是调用栈非常复杂,要初始化一个Context需要至少20行代码.显然,对于这种这么恶心的情况, ...
- LIRe 源代码分析 3:基本接口(ImageSearcher)
===================================================== LIRe源代码分析系列文章列表: LIRe 源代码分析 1:整体结构 LIRe 源代码分析 ...
- 俺的新书《Sencha Touch实战》终于出版了
内容简介:Sencha框架是第一个基于HTML 5的移动也能给予框架,可以让Web应用看起来像网络应用.美丽的用户 界面 组件和丰富的数据管理,全部基于最新的HTML 5和CSS 3的Web标准,全部 ...
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Junit指定测试执行顺序
原文链接: Test execution order原文日期: 2012年12月06日翻译日期: 2014年7月2日翻译人员: 铁锚说明: Junit4.11版本及以后才支持,建议升级到最新版本.按照 ...
- hbase mlockall
mlockall 头文件:#include <sys/mman.h> 函数原型:int mlockall(int flags); flags: MCL_CURRENT --Lo ...
- 深入Lucene索引机制
Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙. 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程, ...