JSP之——九大内置对象及四个作用域(学习笔记)(二)

第一节: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(接口)

           “数据在一次会话中有效,同一个浏览器不关闭页面的情况下保持有效,时间一般是30分钟”

Application 范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)

            “数据一直有效”

第三节:response对象

Response对象和request对象是相对应的,reponse内置对象用于响应客户请求,向客户端输出信息;javax.servlet.HttpServletResponse接口

扫描二维码关注公众号,回复: 2456732 查看本文章

1,自动刷新应用

 <%
    //每隔一秒刷新一次页面
    /* response.setHeader("refresh",1); */
     response.setHeader("refresh", "1");
    Date myDate = new Date();
%>
当前时间:<%=myDate.toLocaleString() %>//日期格式为yyyy-MM-dd HH:mm:ss

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

 <%
    response.sendRedirect("index.html");//该方法页面跳转不能带任何数据,浏览器地址会变
%>

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

小案例:

response3.jsp

<%@page import="java.util.Date"%>
<%@ 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>
<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();//浏览器的Cookies
	for(int i = 0;cookies!=null && i<cookies.length;i++){
		if(cookies[i].getName().equals("userNameAndPwd")){
			userName = cookies[i].getValue().split("-")[0];
			System.out.println(userName);
			pwd = cookies[i].getValue().split("-")[1];
		}
	}
	if(userName == null){
		userName = "";
		pwd="";
	}
	if(pwd == null){
		userName = "";
		pwd="";
	}
%>
</head>
<body>
<form action="userLogin.jsp" method="post">
<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="submit" value="重置" onclick="resetvalue()"></td>
	</tr>
</table>
</form>
</body>
</html>

userLogin.jsp

<%@ 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 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("response3.jsp");
%>
</body>
</html>

4,cookie和session的简单比较

cookie信息是存客户端的,session信息是存服务器的,默认时效是30分钟

第四节:out对象

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

第五节:config对象

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

第六节:exception对象

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

exception01.jsp :需要设置出错时跳转的页面<%@ page errorPage="error.jsp" %>

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page errorPage="error.jsp" %>
<!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>
<%
	int a = 1;
	int b = 0;
	out.println(a/b);
%>
</body>
</html>

error.jsp   <%@ page isErrorPage="true" %>

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page isErrorPage="true" %>
<!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>
<%
	if(exception!=null){
		out.println("程序错误信息:");
		out.println(exception.getMessage());
	}
%>
	
</body>
</html>

第七节:pageContext对象

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

猜你喜欢

转载自blog.csdn.net/weixin_39941298/article/details/81218147