Session

1.会话技术

什么是会话技术:

相当于打电话,在计算机领域中,客户端与服务端之间的一次通话称之会话,也就是说打开了浏览器访问了一个地址,发送请求成功后就相当于开启了一个新的会话。

请求和请求之间是之前没有关系,当我们需要记录用户的登录状态,需要另一个对象Session

会话的生命周期:

会话开启:打开了某个浏览器

会话结束:关闭浏览器、超时

2.Session简介

Session是服务器提供的一个会话对象,是第二大作用域对象。创建之后这个Session是存储到服务器中的。但Session的使用需要和浏览器建立关联,这个关联与Cookie有关,其中每一个Session对象都会对应一个sessionId,这个sessionId就被存储在Cookie中。

2.1 Session的生命周期
     // 生命周期:  第一次访问服务器开始 tomcat服务器就会维护一个session对象
     // 什么时候结束:  第一 主动注销,调用invalidate()方法一般用在注销账户。

                                 第二 超出时间限制

 首先session是一个HttpSession类型的变量

session是服务器(tomact)给我们维护的,不能new 】

要通过req.getSession();

session生命周期

第一次访问服务器开始,tomacat服务器就会维护一个session对象,(开始)

来保存登陆状态,每一个用户都有一个(作用)

主动注销或超时(结束)

session存储数据的方式

session是一个域对象

session.setAttribute("LOGINUSER",d_user);

//在 session这个域对象中存放了一个d_user对象叫LOGINUSER,

//如果取出LOGINUSER有值,就代表d_user登录

 Object obj=session.getAtribute("LOGINUSER")

转发

语法

request.getRequestDispatcher("WEB-INF/other.jsp").forward(request,response)

ServletContext()

整个项目过程中只有一个ServletContext,是整个项目的实例,

req.getServletContext().

2、EL表达式

2.1J SP上写Java代码

格式:<%  java代码 %>

<%

  List  list =(List)request.getAttribute("userlist");

%>

拿到list 可以做有一张表显示出来,需要用标签table

<table>

// <tr>表示单元行

   <tr>   <td> ID</td> <td> 账号</td> <td> 密码</td> </tr>     // <td>表示单元格

<%

for(User u:list ){%>

<tr><td> ID</td> <td> </td> <td> 密码</td> </tr>     //单元格

<tr><td> <%=u.getId()%></td> <td> <%=u.getUserName()%></td> <td> <%=u.getUserpass()%></td> </tr>  }

<%

%>

</table>

3、JSP

  • 定义:

JSP是一种动态网页开发技术,JSP文件就是在传统的HTML文件中插入JAVA代码和JSP标签,后缀为.jsp

指令标签:用来告诉Web服务器如何处理JSP界面的请求和指令,服务器会根据JSP指令来编译JSP,生成Java文件。

1.page标签:

JSP page指令用来定义当前界面的相关属性,page指令通常放在JSP页面的顶部

 格式:<% @page %>

  • isErrorpage标签:指定当前页面为错误页面(true、false默认值)

   格式: <%@page is isErrorpage="true"%>

  • import标签:导入包、类类似Java中import关键字

   格式: <%@page is import="java.util.Date" %>

  • isTreadSafe标签:是否允许多线程(true默认值 false)

   格式: <%@page  isTreadSafe="false" %>

  • isEllgnored标签:绑定页面是否忽略JSP中的EL(true默认值 false)

   格式: <%@page  isEllgnored="false" %>

2.include标签

include指令用于在JSP页面引入其他内容,可以是JSP文件、html文件和文本文件,相当于把文件的内容复制到JSP页面,引入的文件和JSP页面同时编译运行。

 格式:<%@include file="URL" %>

3.动作标签:

利用JSP动作标签可以动态的插入文件、重写javaBean组件、把用户重定向到另一个页面、为Java插件生成HTML代码等。

forward标签:跳转作用 用来转发

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

include标签:动作用来引入文件,可以是HTML、jsp页面和文本文档,通过include动作我们可以多次使用同一个页面,增加了代码可重用性。例如在页面中使用include动作引入头部和底部页面。

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

注: 指令标签include和动作标签include的区别.

 指令标签是把文件内容复制到这个 和jsp文件一起编译

动作标签是先自己编译 将指令编译的结果放在这里(下面{}中soeasy的结果HelloWorld导入该位置)。

九大内置对象:

 request response session application page pagecontext config exception out

request方法:

String getParamete(String name)   获取请求参数name的值

String getParameteName(String name)   获取所有参数name的值

String getParameteValue(String name)   获取请求参数name的所有值

response方法:

JSP response 是 javax.servlet.http.HttpServletResponse 的实例对象。response 对象和 request 对象相对应,主要用于响应客户端请求,将处理信息返回到客户端。

 

 session

JSP session 是 javax.servlet.http.HttpSession 的实例对象,主要用来访问用户数据,记录客户的连接信息。

HTTP 协议是一种无状态的协议(即不保存连接状态的协议)。每次用户向服务器发出请求,且服务器接收请求并返回响应后,该连接就被关闭了,服务器端与客户端的连接被断开。此时,服务器端不保留连接的有关信息,要想记住客户的连接信息,就用到了 session 对象。

application

JSP application 是 javax.servlet.ServletContext 的实例对象。在服务器部署应用和项目时,Web 容器仅创建一次 ServletContext 实例,也就是说 application 设置的任何属性和值可以用于整个应用(所有 JSP 页面)。可以将 application 对象看作 Web 应用的全局变量。一般用于保存应用程序的公用数据。

application 对象在 Web 应用运行时一直存在于服务器中,非常占用资源,因此在实际开发中不推荐使用,否则容易造成内存不足等情况。

 EL表达式

为了简化 JSP 页面,JSP 2.0 新增了 EL(Expression Language)表达式语言。EL 提供了更为简洁、方便的形式来访问变量和参数,不仅可以简化 JSP 页面代码,还会使开发者的逻辑变得更加清晰 。

 

四大作用域:

注意区分四大作用域对象: application(ServletContext)、 session 、request、pageContext

作用域对象:可以往里面放值、取值

page:页面级

request:请求级        (页面之间跳转)

session:会话级

appliction:应用级

访问属性(从域对象取值:)

  • 1.$(EL表达式)
  • 2.$(username)
  • 3.$(param.name)相当于<%=request.getParameter('name')%>

<h1>   ${soeasy}--------${LOGINUSER.username}</h1>//代表我们从LOGINUASER

EL表达式中 如果不指定作用域 就从小的作用于开始查找,直到找到为止(找不到就空着不会显示null值)

EL运算符

EL 的+运算符与 Java 的+运算符不一样,它无法实现两个字符串的连接运算。如果该运算符连接的两个值不能转换为数值型的字符串,则会拋出异常;反之,EL 会自动将这两个字符转换为数值型数据,再进行运算。

EL其他运算符

. 和 [ ] 是 EL 中最常用的运算符,用来访问 JavaBean 中的属性和隐式对象的数据。一般情况下,.用来访问 JavaBean 属性或 Map 类型的值,[ ]用来访问数组或者列表的元素。

 //访问user下的两个属性

JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

在JSP中使用 标签taglib指令声明并引入标签库(  tag 标签- lib库)

格式:<%@taglib uri=" tagliburl",prefix="tagPre"%>

核心标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:out> 用于在JSP中显示数据,就像<%= ... >

<c:set> 用于保存数据

 28行: 用c:out输出了 你好

 29行:用c:set向session输入了一个你好111 名字叫text

30行:用EL表达式输出text

<c:if test>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值