九个内置对象:
pageContext, request, response, session, application, config, out, page, exception
四大作用域:
Page范围:只在一个页面中保存;javax.servlet.jsp.PageContext(抽象类)
<%
//设置两个page范围数据key->value
pageContext.setAttribute("name", "root");
pageContext.setAttribute("password", 123456);
%>
<%
//取值
String name = (String) pageContext.getAttribute("name");
int password = (Integer) pageContext.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />
Request范围:只在一个请求中保存数据;javax.servlet.http.HttpServletRequest(接口)
requestScope.jsp
<%
//设置两个request范围数据key->value
request.setAttribute("name", "root");
request.setAttribute("password", 123456);
%>
<jsp:forward page="requestTarget.jsp"></jsp:forward>
requestTarget.jsp:
<%
//取值
String name = (String) request.getAttribute("name");
int password = (Integer) request.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />
Session范围:只在一个请求中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口)
sessionScope.jsp
<%
//设置两个session范围数据key->value
session.setAttribute("name", "root");
session.setAttribute("password", 123456);
%>
设置完毕
sessionTarget.jsp
<%
//取值
String name = (String) session.getAttribute("name");
int password = (Integer) session.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />
Application范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)
applicationScope.jsp
<%
//设置两个session范围数据key->value
application.setAttribute("name", "root");
application.setAttribute("password", 123456);
%>
设置完毕
applicationTarget.jsp
<%
//取值
String name = (String) application.getAttribute("name");
int password = (Integer) application.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />
Session和Application的区别在于Appliaction是全局的,可以在不同的电脑上获取这些值,而Session只能在当前申请的浏览器下获取这些值。
Request和Session用的比较多。
使用<%@ page import=”java.util.*”%>来导入包
response对象:
//自动刷新
<%
//每隔一秒刷新一次页面
response.setHeader("refresh", "1");
Date myData = new Date();
%>
当前时间:<%=myData.toLocaleString()%>
//重定向,不能带参数
<%
response.sendRedirect("pageScope.jsp");
%>
post放在数据包里,安全
get放在Url后面
form提交基本都是用host
//操作cookie应用,cookie存在客户端,session存在服务器
response.jsp
<script type="text/javascript">
function resetValue() {
document.getElementById("userName").value = "";
document.getElementById("password").value = "";
}
</script>
<%
String userName = null, pwd = null;
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if (cookies[i].getName().equals("userNameAndPwd")) {
userName = cookies[i].getValue().split("-")[0];
pwd = cookies[i].getValue().split("-")[1];
}
}
System.out.println(userName + pwd);
if (userName == null) {
userName = "";
}
if (pwd == null) {
pwd = "";
}
%>
<body>
<form action="userLogin.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="userName" name="userName"
value="<%=userName%>" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="pwd" name="pwd" value="<%=pwd%>" /></td>
</tr>
<tr>
<td>记住密码:</td>
<td><input type="checkbox" id="remember" name="remember"
value="remember-me" /></td>
</tr>
<tr>
<td><input type="submit" value="登录" /></td>
<td><input type="button" value="重置" onclick="resetValue()" /></td>
</tr>
</table>
</form>
</body>
userLogin.jsp
<body>
<%
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
String remember = request.getParameter("remember");
if ("remember-me".equals(remember)) {
Cookie userNameAndPwd = new Cookie("userNameAndPwd", userName + "-" + pwd);
userNameAndPwd.setMaxAge(1 * 60 * 60 * 24 * 7);
response.addCookie(userNameAndPwd);//保存cookie
System.out.print("设置cookie成功!");
}
response.sendRedirect("response.jsp");
%>
</body>
out对象:向客户端输出各种类型数据,可以管理应用服务器上的输出缓冲区。
<%
out.print(out.getBufferSize() + "<br/>");//总共缓冲区大小
out.print(out.getRemaining());//未使用的缓冲区大小
%>
Config对象:JSP页面通过JSP容器初始化时被传递的对象。
exception对象:处理JSP文件在执行时发生的异常
在页头加上:<%@ page errorPage=”error.jsp”%>
在error.jsp头加上<%@ page isErrorPage=”true”%>会自动处理异常
pageContext对象:相当于页面中所有对象功能集合,能够访问到页面中所有对象。