会话技术 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 主要的语法结构: ${ ...
随机推荐
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类
先来说一说HTTP的异常处理问题. 当urlopen不能够处理一个response时,产生urlError. 不过通常的Python APIs异常如ValueError,TypeError等也会同时产 ...
- python 去掉 pyc
python 去掉 .pyc 在开发的机器上(Ubuntu),python自动生成的pyc文件太影响心情,把下面的语句添加到 /etc/profile中: # do not produce .pyc ...
- 反对抄袭 正解spring的@Autowired 不要相信网上的错误版本
首先,最重要的, @Autowired的就是用来来消除 set ,get方法. 有些介绍,如著名的马士兵,说要在set方法上进行注入.我当时就看不明白了,既然只取消了一个GET,这个@Autowire ...
- 预装WIN8的电脑是GPT分区模式,无法安装WIN7
本人的笔记本自带的是WIN8系统,现在想安装WIN7的系统,但是安装不了,提示"windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式". 通过上网搜索得知WIN7一般安装 ...
- 一个不错的扩展:Ext.ux.container.ButtonSegment
地址:http://www.sencha.com/forum/showthread.php?132048-Ext.ux.container.ButtonSegment
- Ubuntu ROS Arduino Gazebo学习镜像iso说明(indigo版)
ROS机器人程序设计(原书第2版)学习镜像分享及使用说明 新版已经发布,请参考: http://blog.csdn.net/zhangrelay/article/details/53324759 Ub ...
- ffdshow 源代码分析 3: 位图覆盖滤镜(设置部分Settings)
===================================================== ffdshow源代码分析系列文章列表: ffdshow 源代码分析 1: 整体结构 ffds ...
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Oracle ERP系統借贷关系表
系统分步骤产生的分录: 1)库存模块作接收时产生的分录为: 借:材料采购 (采购单价X订单数量) 贷:应计负债 (采购单价X订单数量) 2)库存模块作检验入库时产生的分录为: 系统产生的分录分别为: ...
- linux内核中的排序接口--sort函数
linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort: qsort 的函数原型是 void qsort(void*base,size_t num,size_t wi ...