JSP (2)内置对象

out 对象

向客户端浏览器输出各种数据

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page buffer="10kb" %>  <!-- 修改缓冲区大小 -->
<!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>
<%
	out.println("thystar");
	out.newLine();
	out.println("123");
	out.println("<br/>");
	// 强制刷新服务器输出缓冲区里的数据,手动将缓冲区里的数据输出到客户端浏览器
	//out.flush();
	// 清空缓冲区;
	//out.clearBuffer();
	// 清空数据,但是不能喝flash方法一起用,否则抛出异常
	out.clear();
	// 获取当前缓冲区的大小 out对象的默认缓冲区大小8KB
	out.println(out.getBufferSize());
	out.println("<br/>");
	// 获取当前缓冲区剩余字节的数目
	out.println(out.getRemaining());
 %>
</body>
</html>

request对象

封装来自客户端浏览器的各种信息, 如cookie,客户端IP

<%@ 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>
<form>
	<input type="text" name="userName"/>
	<input type="submit" name="submit"/>
</form>
	<!-- 获取请求的方法名 -->
	<%= request.getMethod()%><br/>
	<!-- 获取请求的URI字符串 -->
	<%= request.getRequestURI() %><br/>
	<!-- 获取请求时的协议 -->
	<%= request.getProtocol() %><br/>
	<!-- 获取请求的服务器IP -->
	<%= request.getServerName() %><br/>
	<!-- 获取请求服务器的端口号 -->
	<%= request.getServerPort() %><br/>
	<!-- 获取客户端IP -->
	<%= request.getRemoteAddr() %><br/>
	<!-- 获取客户端主机名 -->
	<%= request.getRemoteHost() %><br/>
	<!-- 获取提交表单的值 -->
	<%= request.getParameter("userName") %><br/>
</body>
</html>

request对象处理数组形式的表单信息

新建三个jsp文件

在register.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>录入注册信息</title>
</head>
<body>
	<form action="doregister.jsp" method="post">
	用户名: <input type="text" name="userName"/><br/>
	技能:
	<input type="checkbox" name="skills" value="java"/>java
	<input type="checkbox" name="skills" value="C"/>C
	<input type="checkbox" name="skills" value="python"/>python
	<input type="checkbox" name="skills" value="R"/>r
	<br/>
	<input type="submit" name="提交"/>
	<input type="reset" name="重置"/>
	</form>
</body>
</html>

在doregister.jsp中添加

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//getParameter方法用于获取客户端浏览器通过“GET”或“POST”方法获取的表单数据,没有setParameter这个方法
String userName = request.getParameter("userName");
String skills = "";
String[] skillArr = request.getParameterValues("skills");
if(skillArr != null && skillArr.length > 0){
	for(String skill : skillArr){
		skills = skills + skill + " ";
	}
}
//getAttribute和setAttribute用于在web组件之间共享信息
request.setAttribute("userName", userName);
request.setAttribute("skills", skills);

%>
<jsp:forward page="welcome.jsp"></jsp:forward>

在welcome.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>
用户名:<%= request.getAttribute("userName") %>
技能:<%= request.getAttribute("skills") %>

</body>
</html>

response对象

封装服务器的响应信息,用于对客户端的请求进行回应,处理http链接信息,设置http文件头,Cookie信息

<%@ 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>
<%
	//设置头信息,Cache-Control用于设置缓存策略,no_cache表示数据内容不会被存储
	response.setHeader("Cache-Control", "no_cache");
	//设置整型的头信息, 网页每个2s刷新一次
	response.setIntHeader("Refresh", 2);
	//日期类型的头信息
	out.println(new java.util.Date().toString() + "<br/>");

%>
</body>
</html>

用response实现页面跳转

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//页面跳转
	response.sendRedirect("http://www.baidu.com");
%>

用response访问Cookie

<%@ 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>

<%
	//修改Cookie, cookie是"小甜品",其实是一段纯文本信息,由服务器发送到浏览器
	// 当浏览器再次访问该网站的时候,浏览器会把请求的网址连同该Cookie一起提交给服务器
	// 服务器检查Cookie用于识别用户状态
	Cookie myCookie = new Cookie("thy", "star");
	myCookie.setMaxAge(3600);
	response.addCookie(myCookie);
 %>

</body>
</html>

exception对象

jsp执行过程中发生的异常和错误信息

创建两个jsp文件

在throw_error.jsp中添加:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="handle_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/0;
 %>
</body>
</html>

在handle.jsp中添加:

<%@ 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>
<%
out.println(exception.getMessage()); //异常描述信息
 %>
 <br/>
<%
out.println(exception.toString());//exception对象的字符串描述
%>
<br/>
<%
exception.printStackTrace();//打印异常的堆栈轨迹,向标准输出流打印,不会输出在页面上
%>
  
</body>
</html>

config对象

封装应用程序的配置信息

page对象

指向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>
<%
	out.println(page.toString());//page对象的字符串
	page.getClass(); //返回当前的object类
	page.hashCode();//对象的HashCode值
	//page.equals(obj);//对象是否与指定对象相等
 %>
</body>
</html>

session对象

保存回话信息,可以在同一用户的不同请求之间共享数据

<%@ 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>
<!-- session的唯一标识符 -->
<%= session.getId() %><br/>
<!-- session的创建时间 -->
<%= session.getCreationTime() %><br/>
<!-- session的最后访问时间 -->
<%= session.getLastAccessedTime() %><br/>
<!-- session的失效时间 -->
<%= session.getMaxInactiveInterval() %><br/>

<% %>
</body>
</html>

session的应用

用户登陆:

新建四个jsp文件

在login.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>登陆页面</title>
</head>
<body>
	<form action="do_login.jsp" method="post">
	userName: <input type="text" name="userName"/><br/>
	password: <input type="password" name="password"/><br/>
	<input type="submit" value="submit"/>
	<input type="reset" value="reset"/>
	</form>
</body>
</html>

在do_login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String userName = request.getParameter("userName");
	String password = request.getParameter("password");
	if(userName != null && password != null){
		session.setAttribute("userName", userName);
		response.setHeader("refresh", "2;URL=welcome.jsp");
	}
%>

在welcome.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>欢迎页面</title>
</head>
<body>
	<%if(session.getAttribute("userName") != null) {%>
	欢迎<%=session.getAttribute("userName") %>
	<a href="logout.jsp">注销</a>
	<br/>
	<%}else{ %>
	请先登陆
	<a href="login.jsp">登陆</a>
	<%} %>

	<%if(session.isNew()){ %>
	<br/>
	欢迎新用户!
	<%}else{ %>
	欢迎老用户
	<%} %>
</body>
</html>

在logout.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">
<%
	session.invalidate();//清楚session对象
	response.setHeader("refresh", "2;URL=welcome.jsp");
%>

application对象

代表当前应用程序的上下文,在不同的用户之间共享信息。相对于session对象而言,application对象的生命周期更长,为用户共享某些信息提供了方便

<%@ 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>
<!-- 返回当前服务 器的信息 -->
<%=application.getServerInfo() %><br/>
<!-- 返回当前应用名称 -->
<%=application.getServletContextName() %><br/>
</body>
</html>

应用,记录页面的访问次数:

<%@ 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>
<%
	Object obj = application.getAttribute("counter");
	if(obj==null){
		application.setAttribute("counter", new Integer(1));
		out.println("访问1次");
	}else{
		int counterValue=Integer.parseInt(obj.toString());
		counterValue++;
		out.print(counterValue+"<br/>");
		application.setAttribute("counter", counterValue);
	}
 %>
</body>
</html>

pageContext对象

提供对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>
<%
	//JspWriter myOut = pageContext.getOut();
	//myOut.println("hello world");

	pageContext.setAttribute("thy", "star", pageContext.SESSION_SCOPE);
	String value = session.getAttribute("thy").toString();
	out.println(value);
	out.println("<br/>");
 %>
</body>
</html>

极客网址:http://www.jikexueyuan.com/course/520.html

时间: 2024-10-29 14:50:02

JSP (2)内置对象的相关文章

JSP 的内置对象及方法,动作和作用,常用指令

JSP 的内置对象及方法:JSP 共有以下9 种基本内置组件:request:用户端请求,此请求会包含来自GET/POST 请求的参数:response:网页传回用户端的回应:pageContext:网页的属性是在这里管理:session:与请求有关的会话期,可以存贮用户的状态信息:application:servlet 正在执行的内容:out:用来传送回应的输出:config:servlet 的构架部件,用于存取servlet 实例的初始化参数:page:JSP 网页本身:exception:

day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的. JSP中有三大指令:page.include.taglib,最为常用,也最为复杂的就是page指令了. 2 page指令 page指令是最为常用的指定,也是属性最多的属性! page指令没有必须属性,都是可选属性.例如<%@page %>,没有给出任何属性也是可以的!

JSP的内置对象以及作用域。

最近在面试,一些基础的问题总是会被问到,虽然是基础,但是有些东西在工作中用的少,所以就有些记不清了,在面试的时候更因为紧张很容易造成原先知道的知识也会突然忘了的情况发生.所以在重新组织一下jsp的内置对象以及作用域. 先给大家说一个记住JSP九个内置对象的记忆方法,记九个单次虽然不好记,而且还容易遗漏,所以把这九个单次总结到一起就成了一个单词:parscope(气象雷达)示波器. page里的变量没法从index.jsp传递到test.jsp.只要页面跳转了,它们就不见了. request里的变

JSP&amp;EL 内置对象

JSP&EL 内置对象 转载▼ 具体的JSP和El中的内置对象见下表,由于我写在了excel中,也不知道怎么把excel发出来,就截了图. 相关问题: Q1: JSP:EL中 pageContext.request 和 requestScope 的区别? A: pageContext.request是一个具体的对象,在你的http请求过程中存在.requestScope是一个Map,这个Map中存放了在request作用域中的属性键值对,就这么简单而已,它不是request对象,而是reques

jsp的内置对象

JSP内置对象(9个常用的内置对象) 1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求, 然后做出响应.它是HttpServletRequest类的实例. 序号方法说明 objectgetAttribute(Stringname) 返回指定属性的属性值 EnumerationgetAttributeNames() 返回所有可用属性名的枚举 StringgetCharacterEncoding() 返回字符编码方式 intgetContentLeng

菜鸟日记之JSP二 内置对象的理解

·最近学习JSP了,对编程和网络又有了一些理解.无论是现实中人与人的交流,还是网络世界的接触,都是在相互表达自己的意思让别人知道,并理解对方的信息.然后我们知道的事情不断的变多,会又交杂出新的内容,不断地碰撞,最后形成世界的百态人生.现实如此,网络亦然. 网络上最普遍的是信息, 最珍贵的也是信息. (引用网上,自己的理解) 1.request对象 request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过H

jsp常用内置对象---response

一.response内置对象介绍 response对象与request对象对应,它用于响应客户端请并向客户端输出信息.并且,在JSP页面中,response就是HttpServletResponse类的一个对象,可以直接使用response在JSP页面中调用HttpServletResponse类的所有方法.response最常用sentRedirect(String locationURL)方法执行页面跳转. 二.response对象常用方法 setContentLength(int len)

JSP的内置对象有哪些?

一共有九个内置对象: 1. pageContext :pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out.request.reponse.session.application 等对象.pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象. 2. request : request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息

为什么JSP的内置对象不需要声明

本文将通过对一个JSP运行过程的剖析,深入JSP运行的内幕,并从全新的视角阐述一些JSP中的技术要点. HelloWorld.jsp 我们以Tomcat 4.1.17服务器为例,来看看最简单的HelloWorld.jsp是怎么运行的. 代码清单1:HelloWorld.jsp HelloWorld.jsp <% String message = "Hello World!"; %> <%=message%> 这个文件非常简单,仅仅定义了一个String的变量,并

JSP其余内置对象及四大范围对象的使用

一.application String getContextPath():获取虚拟路径String getRealPath():获取虚拟路径对应的绝对路径 实例 application.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html>