什么是jsp
Java server page 用java语言写的服务器端的页面
Servlet 后台程序;
为什么要使用jsp
HTML 就是写页面的 静态页面
Jsp 动态的 jsp=HTML+java
jsp里面既可以写html代码;也可以写java代码
?Jsp能不能取代servlet 可以
? Servlet能不能取代jsp 可以
可以前后台分离;
总结: 可以前后台分离;jsp是一个动态资源;
第一个jsp页面
<body>
<h1>这是一个html标签 jsp中可以使用html代码</h1>
<%
//这是java代码
Date date=new Date();
out.write(date.toLocaleString()); //输出
%>
</body>
Jsp的组成
JSP页面由数据模板和元素组成
数据模板
JSP容器不进行处理的部分,如:JSP中的html内容,这些内容会直接发送到客户端
元素
JSP容器必须处理的部分。
元素有三种类型:
指令元素 page
脚本元素
表达式
脚本段
声明(声明变量和方法)
动作元素jsp:forward
Jsp语法:
指令
Page
include
<!-- 在该页面 包含了另外一个页面 -->
<%@include file="login.jsp" %>
Taglib
脚本元素
脚本元素包含三个部分
脚本段
脚本段是一段Java代码,用于描述在请求的响应中要做的动作
声明元素
用于声明在其他脚本元素中可能要使用的变量和方法
表达式
是Java语言中完整的表达式,在响应请求时被计算,计算的结果将被转换为字符串,插入到输出流中,输出至客户端
脚本段
<% int aaa=1; %>
声明元素
表达式: 就是输出内容到页面;
Jsp的隐含对象 (jsp的9大内置对象 )
Jsp的4大作用域
Page 当前页面
Request 一次请求 (对xxx来说的)
小明让张三给买东西; (一次)
小明让张三给买东西,张三不去,张三让李四去买; (一次)
这叫做请求转发
--
小明让张三去买东西,张三不去,小明又让李四去买 (二次)
重定向
请求转发和重定向的区别
Get请求和post请求的区别
Session 一次会话
在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。会话较多用于网络上,TCP的三次握手就创建了一个会话,TCP关闭连接就是关闭会话。
Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。在Servlet中,当JSP页面没有显式禁止session的时候,在打开浏览器第一次请求该jsp的时候,服务器会自动为其创建一个session,并赋予其一个sessionID,发送给客户端的浏览器。以后客户端接着请求本应用中其他资源的时候,会自动在请求头上添加:(Cookie:JSESSIONID=客户端第一次拿到的session ID)。这样,服务器端在接到请求时候,就会收到session ID,并根据ID在内存中找到之前创建的session对象,提供给请求使用。
会话的默认时间是30分钟
场景
登录之后 如果你30分钟没有任何操作,再点击功能的时候会让你重新登录;
Application 整个应用程序
只要服务器不关闭,一直保持着;
Jsp2里面设置值,jsp2里面获取值
<%
//设置值
// ("String类型的key",Object类型 value)
pageContext.setAttribute("page", "pageValue");
request.setAttribute("request", "requestValue");
session.setAttribute("session", "sessionValue");
application.setAttribute("application", 123);
%>
<%
//获取值
String p=(String)pageContext.getAttribute("page");
String req=(String)request.getAttribute("request");
String sess=(String)session.getAttribute("session");
int a=(int)application.getAttribute("application");
%>
<!-- 输出 -->
<%=p %> <br/>
<%=req %> <br/>
<%=sess %> <br/>
<%=a %> <br/>
Jsp2里面设置值 ,jsp3里面获取值; jsp2跳转到了jsp3
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置值
// ("String类型的key",Object类型 value)
pageContext.setAttribute("page", "pageValue");
request.setAttribute("request", "requestValue");
session.setAttribute("session", "sessionValue");
application.setAttribute("application", 123);
%>
<%
//获取值
String p=(String)pageContext.getAttribute("page");
String req=(String)request.getAttribute("request");
String sess=(String)session.getAttribute("session");
int a=(int)application.getAttribute("application");
%>
<!-- 输出 -->
<%=p %> <br/>
<%=req %> <br/>
<%=sess %> <br/>
<%=a %> <br/>
<!-- 跳转页面 -->
<jsp:forward page="jsp3.jsp"></jsp:forward>
</body>
</html>
Jsp2请求转发到jsp3里面
Page只能在当前页面获取;
Request可以获取,session也可以获取,application也可以获取
Jsp2设置值;jsp4获取值;他们两个没有关系
Page获取不到 不在同一个页面
Request也获取不到 。他不是一次请求了;
Session可以
Application也可以
换个浏览器开了一个新的会话
Page ,request,session都获取不到,
application可以;