JSP内置对象:request对象、 response对象、out对象、application对象

request对象

request对象是HttpServletRequest类的实例,作用是接收客户端发送来的请求信息。请求信息的内容包括请求的头部信息、请求的方式、请求的参数名称和参数值、Cookie信息、客户端浏览信息等

request对象主要方法
在这里插入图片描述
getParameter
request对象获取客户端提交信息最常用的方法是getParameter(String name),其中参数name区分大小写,需要与HTML源代码出现的参数名完全相同
(1)getParameter方法只能读取表单提供的单个值,通常在类型为text、password、hidden、radio、submit的input标签、textarea标签和select标签(设置为单选列表)中使用
(2)getParameter方法返回值为String类型。如果参数存在,但没有相应的值,则返回空的String;如果GET或POST报文中没有参数,则返回null

getParameterValues
(1)获取指定参数的成组信息,如果同一参数名有可能在表单数据中出现多次,则应该使用getParameterValues方法。通常用于复选框和多选列表
(2)getParameter方法返回值为字符串数组。如果参数名不存在,则返回值为null;如果参数名只有单个值,则返回只有一个元素的数组

//info.jsp
<form action="show.jsp" method="post">
	用户名: <input type="text" name="user"><br> 爱好:<input
		type="checkbox" name="hobby" value="阅读">阅读 <input
		type="checkbox" name="hobby" value="音乐">音乐 <input
		type="checkbox" name="hobby" value="运动">运动 <br> <input
		type="submit" value="提交">
</form>

//show.jsp
<%
	request.setCharacterEncoding("utf-8");
	String user = request.getParameter("user");
	String[] hobby = request.getParameterValues("hobby");
	out.print("用户名:" + user + "\n");
	for (String h : hobby) {
		out.println("爱好:" + h);
	}
%>

response对象

response对象是HttpServletResponse类的实例,主要功能是对客户端的请求做出相应,设置相应HTTP保文头,向客户端写入Cookie信息,将处理结果返回给客户端等

response对象的主要方法
在这里插入图片描述
sendRedirect
功能:跳转到另一个页面
格式:response.sendRedirect(String location)
该方法向客户端发送一个页面重定向的HTTP报文头浏览器得到次报文头信息后,向指定URL发出新的请求,从而引起页面跳转。在使用sendRedirect方法之前不能有信息输出,否则会引起异常

sendRedirect与forward指令的区别:

  • forward指令只能在本网站中跳转,且跳转后,在地址栏中任然显示以前页面的URL,跳转前后的两个页面属于同一个request,用户程序可以用request来设置或传递用户程序数据
  • sendRedirect方法可以跳转到任何URL,跳转后,在地址栏中显示跳转后页面的URL,跳转前后的两个页面不属于同一个request

setCharacterEncoding
设置响应字符串编码,该方法设置字符串编码的优先级高于setContentType方法

request.setCharacterEncoding("utf-8");   //表示以utf-8格式接收表单提交过来的数据
String user = request.getParameter("user");

使用setContentType和setHeader方法设置响应头信息

  • setContentType方法可以动态改变ContentType的属性值。ContentType属性值包括两部分,第一部分指定响应内容的类型;第二部分指定字符编码。响应内容类型可以取text/html、text/plain、application/vnd.ms-excel等这些不同的MIME类型通知浏览器用什么样的程序打开相应内容

示例: 通知浏览器用excel打开页面
data.jsp

<p>请选择打开info.txt文件的方式</p>
<form action="ShowInfo.jsp" method="post">
	<input type="submit" name="word" value="word"><br> <input
		type="submit" name="excel" value="excel"><br>
</form>

showInfo.jsp

<%
    request.setCharacterEncoding("utf-8");
	String str1 = request.getParameter("word");
	String str2 = request.getParameter("excel");
	
	if (str1 == null) {
		str1 = "";
	}

	if (str2 == null) {
		str2 = "";
	}
	if (str1.equals("word")) {//设置Word类型。
		response.setContentType("application/msword;charset=utf-8");
	}

	if (str2.equals("excel")) {//设置excel类型。
		response.setContentType("application/vnd.ms-excel;charset=utf-8");
	}
%>
<jsp:include page="info.txt"></jsp:include>

在这里插入图片描述
注: 试了好多次,一直是保存jsp文件,一直以为是不是代码错了,结果是浏览器的问题,换了旧版的ie终于成功了,如上图;除此之外如果格式设置的不对也不能打开(就是打开word与excel有问题)
示例2

//data.jsp
<form action="ShowInfo.jsp" method="post">
	<input name="user" type="text">
	<input type="submit" value="提交">
</form>
//ShowInfo.jsp
<%
	request.setCharacterEncoding("utf-8");
	String name = request.getParameter("user");
	response.setContentType("application/vnd.ms-excel;charset=utf-8");
%>
<%=name%>

注:不能使用out.print输出,该方法是往网页中输出

  • setHeader可以设置新的响应头和值

示例: 设置定时刷新,每隔5秒刷新一次

<% response.setHeader("Refresh",5) %>

out对象

out对象向客户端发送数据,发送的内容是浏览器需要显示的内容
常用方法

方法名说明
print()输出不同数据类型的数据
flush()直接将目前暂存于缓冲区的数据输出
close()关闭输出流
clear()清除缓冲区中的数据,若缓冲区已经是空的,则会产出异常
clearBuffer()清除缓冲区中的数据,若缓冲区已经是空的,不会产出异常
getBufferSize()返回缓冲区的大小
getRemaining()返回缓冲区剩余空间的大小

out对象缓冲区的默认大小为8kb

application对象

application对象用于多个程序或多个用户之间共享数据。服务器启动后就会产生这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。与session不同,所有用户的application对象都是同一个,即所有客户共享这个内置的application对象

常用方法

方法名说明
setAttribute()设置指定名称的application属性值
getAttribute()返回指定名称的application属性值
removeAttribute()删除指定名称的application属性值
getRealPath(url)返回指定url的实际路径,常用于文件操作

示例: 获取文件真实路径

<%
	String path = application.getRealPath("info.txt");
	out.print(path+"<br>");
	File f = new File(path);
	out.print(f.getName());
%>

示例: 页面访问计数器

<%
	Integer number = (Integer) application.getAttribute("count");
	if (number == null) {
		number = new Integer(1);
		application.setAttribute("count", number);
	} else {
		number++;
		application.setAttribute("count", number);
	}
%>
您是第<%=(Integer) application.getAttribute("count")%>
位访问本站的客户
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值