JSP的基础指令、内置对象、作用域概述

JSP的常用指令:

Page指令介绍

Language : 用来定义要使用的脚本语言;
contentType:定义 JSP 字符的编码和页面响应的 MIME 类型;
pageEncoding:Jsp 页面的字符编码

 

scriptlet  标签

通过 scriptlet 标签我们可以在 Jsp 里嵌入 Java 代码;
第一种:<%! %> 我们可以在里面定义全局变量、方法、类;
第二种:<% %> 我们可以在里面定义局部变量、编写语句;
第三种:<%= %> 我们可以在里面输出一个变量或一个具体内容;

Jsp  注释

<!-- --> Html 注释 客户端可见
<%-- --%> Jsp 注释 客户端不可见
// java 单行注释
/* */ java 多行注释

Jsp  包含指令:

<%@ include file=”要包含的文件”%> 静态包含 先包含,后编译处理;
<jsp:include page=”要包含的文件”> 动态包含 先编译处理,后包含;
以后开发用动态包含

Jsp  跳转指令

假设下面的页面为页面A,携带参数前往target.jsp

在target.jsp获取参数:

在 Jsp 开发中,Jsp 提供了 9 个内置对象

这些内置对象将由容器为用户进行实例化,用户直接使用即可。这9 个内置对象分别是:pageContext,request,response,session,application,config,out,page,exception;

常用的是前面 5个,需要熟练掌握;
在 Jsp 开发中,可以保存数据,Jsp 提供了四种数据保存范围;分别是 page,request,session,application;

JSP的四大作用域:

Page 范围:只在一个页面中保存数据; javax.servlet.jsp.PageContext(抽象类)
Request 范围:只在一个请求中保存数据; javax.servlet.http.HttpServletRequest(接口)
Session 范围:在一次会话范围中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口)
Application 范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)

pageScope:

页面取值:

requestScope: 请求会带一些头信息,浏览器F12 可以查看

请求的页面:

访问显示:

sessionScope:保存在服务器,默认时常30分钟内都有效。

 不需要转发,只要是当前会话都能取到,在目标页面获取:

打开浏览器:

先设置session值:

然后获取:

但是我们打开另外一个浏览器空指针,因为我们没有设置值,session只在一次范围内有效:

applicationScope:

application设置页面:

application取值页面:

访问浏览器:

这时我们再打开一个浏览器:也能正常访问 因为application是放在整个服务器上的,只要服务在就一直有效

response对象:

1,自动刷新应用

打开浏览器:


2,页面重定向应用 客户端跳转

打开浏览器:

回车访问后: url发生变化,跳转页面成功


3,操作 cookie 应用 post get 方法比较 post 放数据包里 get 放 Url 后面 get 数据量小,不安全;


4,cookie 和 session 的比较 cookie 信息是存客户端的,减轻服务端压力,session 信息是存服务器的

先写一个登录的jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<!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>
<script type="text/javascript">
function resetValue(){
	document.getElementById("userName").value="";
	document.getElementById("pwd").value="";
}
</script>
<%
	String userName = null;
	String pwd = null;
	Cookie[] cookies = request.getCookies();
	System.out.println(cookies);
	for(int i=0;cookies!=null && i<cookies.length;i++){
		if(cookies[i].getName().equals("userNameAndPwd")){
			userName = cookies[i].getValue().split("-")[0];
			pwd = cookies[i].getValue().split("-")[1];
		}
	}
	if(userName==null){
		userName = "";
	}
	if(pwd==null){
		pwd = "";
	}
%>
</head>
<body>
<form action="userLogin.jsp" method="get">
<table>
	<tr>
		<td>用户名:</td>
		<td><input type="text" id="userName" name="userName" value="<%=userName%>"></td>
	</tr>
	<tr>
		<td>密码:</td>
		<td><input type="password" id="pwd" name="pwd" value="<%=pwd%>"></td>
	</tr>
	<tr>
		<td>记住密码</td>
		<td><input type="checkbox" id="remember" name="remember" value="remember-me"></td>
	</tr>
	<tr>
		<td><input type="submit" value="登录"></td>
		<td><input type="button" value="重置" onclick="resetValue()"></td>
	</tr>
</table>
</form>
</body>
</html>

点击登陆后跳转至userLogin.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<!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 userName = request.getParameter("userName");
	String pwd = request.getParameter("pwd");
	String remember = request.getParameter("remember");
	System.out.println("userName:"+userName);	
	System.out.println("pwd:"+pwd);	
	System.out.println("remember:"+remember);	
	
	if("remember-me".equals(remember)){
		Cookie userNameAndPwd = new Cookie("userNameAndPwd",userName+"-"+pwd);
		userNameAndPwd.setMaxAge(1*60*60*24*7);	//cookie记录一个星期
		response.addCookie(userNameAndPwd);	//保存Cookie
		System.out.println("设置Cookie成功");
	}
	response.sendRedirect("response03.jsp");
%>


</body>
</html>

访问浏览器:

点击登陆后:跳转回来 记住了用户名密码,说明cookie有效:

out对象:

Out 内置对象主要用来向客户端输出各种类型的数据,同时还可以管理应用服务器上的输出缓冲区。所以 out 内
置对象的方法是向客户端输出数据和管理缓冲区; 底层 javax.servlet.jsp.JspWriter 抽象类

访问浏览器:

config  对象:

Config 内置对象是 JSP 页面通过 JSP 容器进行初始化时被传递的对象。javax.servlet.ServletConfig 。在 Servlet
初始化的时候,JPS 引擎通过 config 向它传递信息。这种信息可以是属性名和属性值匹配的参数,也可以是通过
ServletContext 对象传递的服务器的有关信息;

我们配置一个servlet:

sysInit.jsp页面:

访问浏览器,请求这个servlet:

exception  对象:

Exception 内置对象用来处理 JSP 文件在执行时发生的所有异常,它是 java.lang.Throwable 类的一个对象。

我们写一个jsp,制造一个异常:

访问浏览器:

特别的不友好,使用exception处理:我们在原jsp上加上 :<%@ page errorPage="error.jsp" %> 指定错误信息的jsp页面

然后在指定的错误页面上同步设置,并对异常信息进行处理:

访问浏览器:

这就是exception对象的主要用处。

pageContext  对象:

pageContext 内置对象是一个比较特殊的对象。它相当于页面中所有对象功能的集合,即使用它可以访问到本页面
中所有对象。pageContext 内置对象由 Jsp 容器创建并初始化,pageContext 对象提供了对 JSP 页面所有对象及控件
的访问。

补充:在jsp中引入类:

<%@ page import="java.util.* %>

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值