概述
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")%>
位访问本站的客户
最后
以上就是善良雪糕为你收集整理的JSP内置对象:request对象、 response对象、out对象、application对象的全部内容,希望文章能够帮你解决JSP内置对象:request对象、 response对象、out对象、application对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复