JSP学习笔记

JSP是什么

JSP本质是Servlet,主要负责与用户交互,将网站的最终界面呈现给用户,HTML+JS+CSS+JAVA的混合文件

当服务器接收到一个后缀是jsp请求时,将会把该请求交给JSP引擎去出来,每一个JSP页面第一次被访问是,JSP引擎会将它翻译成一个Servlet文件,再由Web容器调用Servlet完成响应

从开发角度,JSP就是在HTML中嵌入java程序

嵌入方式

JSP脚本,用<% %>包裹java代码

<% java代码 %>

在这里插入图片描述

JSP声明:定义java方法 (不能调用)

<%!
	java方法
%>

在这里插入图片描述

JSP表达式:把java对象直接输出到HTML页面中

<%= java变量 %> 

在这里插入图片描述

JSP内置对象

常用request、response、session、application、pageContext

作用域探讨对象:
page、request、session、application
这四个都有setAttribute和getAttribute,可以存取数据
page<request<session<application

对象对象作用域
page内置对象是pageContext只在当前页面有效
request内置对象是request只在一次请求有效
session内置对象是session只在一次会话有效
application内置对象是application对应整个web应用

request

表示一次请求,由HttpServletRequest这个类产生的对象

String getParamater(String key)

获取客户端传来的参数
在这里插入图片描述
通过地址栏?+变量名=值
来获取传输值

void setAttribute(String key, Object value)

通过键值对的形式来保存数据
在这里插入图片描述

RequestDispatcher getRequestDispatcher(String path)

返回一个ResquestDispatcher对象,该对象的forward方法用于请求转发(见上图)

Object getAttribute(String key)

通过key取出value,服务器页面内部传递信息

在这里插入图片描述

以上3个函数共同作用结果如下
在这里插入图片描述

String[] getParameterValues()

获取同一个变量的一组数据(客户端传过来的)
在这里插入图片描述

void setCharacterEncoding(String charset)

指定每个请你求的编码

response

表示一次响应,由HttpServletResponse这个类产生的对象

sendRedirect(String path)

把请求从一个页面传递到另一个页面(request.getRequestDispatcher()也可以做到,但两者效果不同)
转发(即getRequestDispatcher)和重定向(sendRedirect)的区别:
转发:把同一个请求传递给下一个页面,请求在服务器内部传递,地址栏不变
重定向:创建一个新请求传递给下一个页面,本次请求生命周期结束,新的请求由客户端发给新页面,地址栏会改变
如果两个页面之间需要request来传值,必须使用转发,不能使用重定向

pageContext

页面上下文,获取页面信息

session

服务器无法识别每一次HTTP请求的出处(不知道来自哪个终端),它智慧接收到一个请求信号,所以就存在一个问题:将用户的响应发送给其他人,必须有一种技术让服务器知道请求来源于哪,这就是会话技术
会话:就是客户端与服务器之间发生的一系列连续的请求和响应过程
会话状态:指服务器和浏览器在会话过程中产生的状态信息。借助于会话状态,服务器能够把属于同一次会话的一系列请求和响应关联起来

实现会话的两种方式

  • session
  • cookie
    属于同一次会话的请求

用于保存用户信息,来源于HttpSession类

String getId()

获取sessionID

void setMaxNactiveInterval()

设置session的失效时间,单位为秒

int getMaxNactiveInterval()

获取session的失效时间,单位为秒

void invalidate()

设置session立即失效

void setAttribute(String key, Object value)

通过键值对的形式存储数据

Object getAttribute(String key)

通过键值对获取数据

void removeAttribute(String key)

通过键值删除对应数据

application

表示当前Web应用,是个全局对象,保存用户共享信息,来源于ServletContext类

config

当前JSP对应的Servlet的ServletConfig对象,获取当前Servlet信息

out

向客户端输出数据,来源于JspWriter类

page

当前JSP对应的Servlet对象,来源于Servlet类

exception

表示JSP页面发生的异常,来源于Exception类

http请求状态码

数字含义
200正常
404资源找不到
400请求类型不匹配
500Java程序抛出异常

Cookie

cookie是服务器在HTTP响应中附带传给浏览器的一个小文本文件,一旦浏览器保存了某个cookie,在之后的请求和响应中,会将此cookie来回传递,这样就可以通过cookie这个载体完成客户端和服务器的数据交互

创建cookie

以键值对的方式存储数据,且只能存储String类型数据

Cookie cookie = new Cookie("name","zs");
response.addCookie(cookie);

在这里插入图片描述

获取cookie

获取cookie数组的方式来获取内容,遍历输出

Cookie cookie1 = new Cookie("name","zs");
response.addCookie(cookie1);
Cookie[] cookies = request.getCookies();
for(Cookie cookie:cookies){
  out.write(cookie.getName()+":"+cookie.getValue()+"</br>");
}

在这里插入图片描述

Cookie常用方法

方法含义
void setMaxAge设置Cookie的有效时间,单位:秒
int getMaxAge()获取Cookie的有效时间
String getName()获取Cookie的name
String getValue()获取Cookie的value

session和cookie的区别

角度\对象sessioncookie
保存位置服务器浏览器本地
保存数据对象ObjectString
生命周期随着会话的结束而销毁,即关闭浏览器就销毁可以长期保存在浏览器、与会话无关
保存内容重要信息不重要信息
存储方式setAttribute(key,value)response.addCookie(name,“value”)
获取方式getAttribute(“key”)获取cookie数组,遍历数组处理数据

EL表达式

可以替代jsp页面中数据访问的复杂编码,快捷地取出对象(四大对象都能取)
语法

${变量名}

效果:
在这里插入图片描述

在这里插入图片描述
${}4个对象都能取
但page优先级最高
在这里插入图片描述

JSTL

Jsp Standard Tag Library即JSP标准标签库,是JSP为开发者提供的一些列标签,这些使用这些标签可以完成一些逻辑处理,比如循环遍历集合,让代码更加简洁,不再出现JSP脚本穿插的现象

实际开发过程中,EL和JSTL结合使用,JSTL侧重于逻辑处理,EL负责数据展示

JSTL的使用

  • 导入两个jar包:jstl.jar和standard.jar(放在WEB-INF目录下,记得add as library)
    在这里插入图片描述

  • 在JSP页面开始的地方导入JSTL标签库

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

在这里插入图片描述

  • 在需要的地方用相关语句
    循环遍历:
<c:forEach items="${userlist}" var="user">
    <tr>
        <td>${user.name}</td>
        <td>${user.time}</td>
        <td><%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())%></td>
        <td>${user.session.maxInactiveInterval}</td>
        <td><a href="/kick?id=${user.name}">踢出</a></td>
    </tr>
</c:forEach>

JSTL优点

  • 提供了统一的标签
  • 可以用于编写各种动态功能

JSTL常用方法

表达式控制标签:set、out、remove、catch
流程控制标签:if、choose、when、otherwise
循环标签:forEach、forTokens
URL操作标签:import、url、redirect、param
具体操作见 传送门

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值