概述:
- out对象:用于向客户端浏览器输出各种数据。
- request对象:包含了来自客户端浏览器的各种信息。
- response对象:封装了服务器的响应信息。
- exception对象:封装了jsp程序中发生的异常和错误信息。
- config对象:封装了应用程序的配置信息。
- page对象:指向了当前jsp程序本身。
- session对象:用来保存会话信息。
- application对象:代表了当前应用程序的上下文,可以在不同的用户之间公用信息。
- pageContext对象:jsp所有命名空间和对象的访问。
out对象详解
<%
out.println("jikexueyuan");//向浏览器页面输出文字,会换行,在页面上是看不到
out.print("darkmi");//向浏览器页面输出文字,不会换行
out.newLine();//也是输出换行,但是页面看不到,源代码可以看到
out.flush();//强制刷新服务器输出缓冲区里面的数据。上面的数据不会显示
out.clearBuffer();//用于清空缓冲区的数据。
/**
*同样用于清空缓冲区数据,
如果之前调用了flush方法则会抛出异常,如果之前调用了clearBuffer则不会
*/
out.clear();
//out还会对输出缓冲区进行管理。
out.println("获取当前缓冲区大小:"+out.getBufferSize());
out.print("<br>");
out.print("获取当前缓冲区剩余字节数目:"+out.getRemaining());
%>
默认缓冲区大小是8kb,我们可以通过page指令来修改。
<%@ page buffer="10kb" %>
Request对象
客户端向服务端发送的表单,包括cookie、ip等。可以用来实现注册功能、递交评论。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>request对象示例</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="userName"/>
<input type="submit" value="提交"/>
</form>
请求方法名:<%= request.getMethod()%><br/>
请求的资源名:<%= request.getRequestURI()%><br/>
请求使用的协议:<%= request.getProtocol()%><br/>
请求服务器的ip:<%= request.getServerName()%><br/>
请求的服务器端口:<%= request.getServerPort()%><br/>
客户端的ip地址:<%= request.getRemoteAddr()%><br/>
客户端的主机名:<%= request.getRemoteHost()%><br/>
获取提交的表单数据,方法的参数需要更递交的表单参数保持一致:
<%= request.getParameter("userName")%>
</body>
</html>
Requset对象使用
request对象专门的方法来处理递交的表单信息(里面包含的是数组)。
这里创建3个文件:register.jsp(录入表单信息)do_register.jsp(处理表单信息)welcome.jsp(展示信息)
register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>录入表单信息</title>
</head>
<body>
<form action="do_register.jsp" method="post">
用户名:<input type="text" name="userName" ><br>
技能:
<input type="checkbox" name="skills" value="java">java
<input type="checkbox" name="skills" value="python">python
<input type="checkbox" name="skills" value="ruby">ruby
<input type="checkbox" name="skills" value="golang">golang
<br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
</html>
do_register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String userName = request.getParameter("userName");
String skills = "";
//用request.getParameterValues()方法来获取提交的数组信息。
String[] skillArr = request.getParameterValues("skills");
if (skillArr != null && skillArr.length > 0){
for (String skill : skillArr){
skills = skills + skill + " ";
}
}
//接下来将信息保存到request对象中。
request.setAttribute("userName",userName);
request.setAttribute("skills",skills);
%>
//跳转页面
<jsp:forward page="welcome.jsp"></jsp:forward>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>信息展示</title>
</head>
<body>
信息展示<<br><br>
用户名:<%= request.getAttribute("userName")%><br>
技能:<%= request.getAttribute("skills")%>
</body>
</html>
Response对象详解
主要用于对客户端的请求进行回应。同时还可以处理http协议,设置http文件头,及cookie信息。
<%
//设置网页头信息,可以用来设置缓存策略。no-cache表示不会被存储,public,private,等等
response.setHeader("Cache-Control","no-cache");
//设置整形的头信息,这是网页每隔2s刷新一次。
response.setIntHeader("Refresh",2);
out.println("date is" + new java.util.Date().toString() + "<br>");
%>
<%
//使用response对象实现页面跳转。
response.sendRedirect("http://www.baidu.com");
%>
<%
//用response对象设置cookie
Cookie myCookie = new Cookie("darkmi","jikexueyuan");
//设置保存的时间 3600s
myCookie.setMaxAge(3600);
response.addCookie(myCookie);
%>