JSP的内置对象

在这里插入图片描述

一、request对象

request对象,又称请求对象,它封装了用户提交的各种请求信息,在服务端通过request对象的相关方法来获取这些数据

1、获取表单数据

<form method="post" action="提交信息的目的页面">
<input type="text" name="name">
<input type="submit" value="提交" name="submit">
</form>

String name=request.getParameter("name");

get与post的区别在于:get提交的信息在地址栏可见,post提交的信息在地址栏不可见
处理中文乱码:request.setCharacterEncoding("utf-8");
获取表单元素的多个值:String [] name=request.getParameterValues("name");

2、获取地址栏后的附加信息

http://url?name=admin&pass=123456

String name=request.getParameter("name");

3、获取客户端的数据

  • getProtocol():获取请求使用的通信协议
  • getServletPath():获取请求的JSP页面所在的目录
  • getContentLength():获取HTTP请求的长度
  • getMethod():获取表单提交信息的方式
  • getHeader(String s):获取请求头中的值
  • getHeaderNames():获取头名字的一个枚举
  • getHeaders(String s):获取头的全部值的一个枚举
  • getRemoteAddr():获取客户的IP地址
  • getRemoteHost():获取客户机的名称(如果获取不到,则获取ip地址)
  • getServerName():获取服务器的名称
  • getServerPort():获取服务器的端口号
  • getParameterNames():获取表单提交的信息体部分中的name参数值的一个枚举

4、管理属性

request.setAttribute("username","admin");
request.getAttribute("username");

5、读cookie

读取cookie数组

Cookie[] cookie=request.getCookies();

遍历cookie数组,读取cookie的值
String name="";
for(Cookie cookie:c){
	if("name".equals(c.getName("name"))){
		name=c.getValue();
	}
}

二、response对象

1、设置HTTP响应头

response.addHeader("refresh",1);
response.setHeader("refresh",1);

2、设置页面相应类型

response.setContentType("text/html");

3、页面重定向

·response.sendRedirect(文件的URL);
页面跳转的方式:

  • 客户端跳转:超链接、表单提交、response跳转——地址栏有变化
  • 服务端跳转:forward动作标记——地址栏没有变化,request对象保存的信息在跳转后的页面仍然可以使用

4、写cookie

创建cookie对象

Cookie cookie=new Cookie("name",value);

设置cookie的有效期

cookie.setMaxAge(60*60*24);

向客户端写cookie

response.sendRedirect(文件的URL);

三、session对象

session用于跟踪客户的状态,一般每个用户登录网站,系统就为止生成一个session对象,用于保存该用户的信息。
session对象的主要作用:
1.跟踪用户的访问状态和保存特征数据
2.识别用户的身份和是否在线
3.根据用户的身份来控制页面的访问许可
4.购物车

1、session对象的ID

服务器为每一个用户创建一个session对象,并为session对象分配一个String类型的ID。Tomcat服务器将ID发送到客户端,存放在用户的Cookie中
同一用户在同一Web服务目录中的各个页面的session是相同的

2、session对象的常用方法

String getId();//获取session的id
boolean isNew();//判断是否是一个新的session对象
void setAttribute("name","admin");//设置属性的值
Object getAttribute("name");//获取指定属性的值
void removeAttribute("name");//移除指定属性
void invvalidate();//session设置为失效,一般在退出时使用
void setMaxInactiveInterval(int interval);//设置session最大非活跃间隔时间,单位是秒

3、session的生命周期

session对象的生存期限依赖:
1、客户是否关闭浏览器
2、session对象是否调用invalidate()方法使session无效
3、session对象是否达到设置的最长“发呆”时间

4、实现访问控制

<%
	String user=(String)session.getAttribute("user");
if(user==null){
	response.sendRedirect("../unit3/body.jsp");
}
%>

5、设置session的最大发呆时间

<%
//设置最大发呆时间 单位为秒
session.setMaxInactiveInterval(3);
%>

6、购物车

pay

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	if("1".equals(request.getParameter("flag"))){
		session.removeAttribute("good");
	}else{
		ArrayList list=(ArrayList)session.getAttribute("good");
		if(list!=null){
			for(int i=0;i<list.size();i++){
				out.print(list.get(i)+"<br>");
			}
		}
	}
%>
<a href="buy.jsp">继续购物</a><br>
<a href="pay.jsp?flag=1">清空购物车</a>
</body>
</html>

addcar

<%@page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	request.setCharacterEncoding("utf-8");
	ArrayList list=null;
	String goodname=request.getParameter("goodname");
	String price=request.getParameter("price");
	if(goodname!=null){
		if(session.getAttribute("good")==null){
			list=new ArrayList();
		}else{
			list=(ArrayList)session.getAttribute("good");
		}
		list.add(goodname);
		session.setAttribute("good", list);
	}
	response.sendRedirect("buy.jsp");
%>
</body>
</html>

buy

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'buy.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>

	<table>
		<tr>
			<td>商品名称</td>
			<td>商品单价</td>
			<td>购买</td>
		</tr>
		<form action="unit4/addcar.jsp" method="post">
			<tr>
				<td>手机</td>
				<td>2000</td>
				<td><input type="submit" name="buy" value="购买" /></td>
			</tr>
			<input type="hidden" name="goodname" value="手机" /> <input
				type="hidden" name="price" value="2000" />
		</form>

		<form action="unit4/addcar.jsp" method="post">
			<tr>
				<td>ipad</td>
				<td>2000</td>
				<td><input type="submit" name="buy" value="购买" /></td>
			</tr>
			<input type="hidden" name="goodname" value="ipad" /> <input
				type="hidden" name="price" value="2000" />
		</form>

		<form action="unit4/addcar.jsp" method="post">
			<tr>
				<td>笔记本</td>
				<td>2000</td>
				<td><input type="submit" name="buy" value="购买" /></td>
			</tr>
			<input type="hidden" name="goodname" value="笔记本" /> <input
				type="hidden" name="price" value="2000" />
		</form>

		<form action="unit4/addcar.jsp" method="post">
			<tr>
				<td>硬盘</td>
				<td>2000</td>
				<td><input type="submit" name="buy" value="购买" /></td>
			</tr>
			<input type="hidden" name="goodname" value="硬盘" /> <input
				type="hidden" name="price" value="2000" />
		</form>
	</table>

	<a href="unit4/pay.jsp">查看购物车</a>

</body>
</html>

四、application对象

一个网站中的任一个JSP页面开始执行时,将产生一个application对象,直到服务器关闭application对象才会被销毁
不同web应用产生不同的application对象
访问同一个网站的客户都共享一个application对象,application对象可以实现多客户间的数据共享

1、application对象的常用方法

public void setAttribute(String key,Object obj);
public Object getAttribute(String key);
public void removeAttribute(String key);

2、网站计数器

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	int count=1;
	if(application.getAttribute("count")==null){
		application.setAttribute("count", 1);
	}else{
		if(session.isNew()){
			count=(Integer)application.getAttribute("count");
		application.setAttribute("count", ++count);
		}
	}
%>
你是第<%=count %>个用户
</body>
</html>

五、out对象

out对象是一个输出流,用来向客户端输出数据
out对象方法

out.pirnt();//输出数据
out.newLine();//输出一个换行符
out.flush();//输出缓冲区的内容
out.close();//关闭流

六、pageContext对象

通过pageContext对象可以访问页面作用域中定义的所有隐式对象
pageContext.getSession();
作用范围:同一页面
常用方法:
以键/值的方式,将一个对象的值存放到pageContext中
void setAttribute(String name,Object value);
根据名称获取pageContext中存放对象的值
void getAttribute(String name);

总结

内置对象的作用域:
page:当前页面有效
request:一次请求有效
session:一次会话有效
application:整个应用有效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值