JSP内置对象:JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的对象,
即可以不用声明和创建,就可以直接在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量。
常用的有out、 request、 response、 session、 application以及不常用的Page、 pageContext、 exception、 config共9大内置对象
在之前的博客有这样的一个例子可以加深理解
https://mp.csdn.net/postedit/84112439
一、out对象:
是JspWriter类的实例,是向客户端输出内容常用的对象
作用域:page
常用方法如下:
1.void println() 向客户端打印字符串
2.void clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常
3.void clearBuffer() 清除缓冲区的内容,如果在flush之后不会抛出异常
4.void flush() 将缓冲区内容输出到客户端
5.int getRemaining() 返回缓冲区还剩多少可用
6.int getBufferSize() 返回缓冲区字节数的大小
7.boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
8.void close() 关闭输出流
9.out.write() 与println()类似,区别在于println可输出各种类型的数据而 write方法只能输出字符型的数据
<%
out.print("输出内容");
%>
也可以输出js代码
<%
out.print("<script>alert('输出js代码')</script>");
%>
二、 request对象
作用域:request。说明,这次请求结束后,它的生命周期 就结束了。
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域, 即完成客户端的请求之前,该对象一-直有效。常用方法如下:
■String getParameter(String name)返回name指定参数的参数值
■String[] getParameterValues(String name)返回包含参数name的所有值的数组。
■void setAttribute(String,Object);存储此请求中的属性。
■object getAttribute(String name)返回指定属性的属性值
■String getContentType()得到请求体的MIME类型。
■String getProtocol0返回请求用的协议类型及版本号。
■String getServerName(返回接受请求的服务器主机名
将客户端输入的用户名和密码在getParameter.jsp获取并且显示出来
index.jsp
<%@ 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>
<center>
<form action="getParameter.jsp" method="post">
用户名<input type="text" name="name" /> <br>
密码<input type="password" name="psd" /> <br>
<br>
<button type="submit">登录</button>
<button type="reset">重填</button>
</form>
</center>
</body>
</html>
getParameter.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getParameter</title>
</head>
<body>
<center>
<%
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("name");
String password=request.getParameter("psd");
if(name!=null&&password!=null){
%>
<p>welcome <%=name%>,你的密码是<%=password %></p>
<%
}else{
%>
<p>欢迎访问页面</p>
<% } %>
</center>
</body>
</html>
注意:在form表单中属性action后跟着跳转的页面,属性method有两个值,get将参数添加到页面地址末尾以参数形式提交,post提交表单时参数会被作为请求头部中的信息发送
三、response对象
response对象包含了响应客户请求的有关信息,但在JSP里很少直接用到它。它是HttpServletResponse类的实例。
response对象具有page的作用域,即访问一个页面时,该页面的response对象只对这次访问有效,其他页面的response对象对当前页面无效。常用方法如下:
■String getCharacterEncoding()返回响应用的是何种编码
■void setContentType(String type)设置响应的MIME类型
■PrintWriter getWriter() 返回可以向客户端输出字符的一个对象(总是先于out对象输出,即打印在out对象前面)
■sendRedirect(Java.lang.String location)重新定向客户端的请求
PrintWriter outer = response.getWriter();
outer.println("输出response对象生成的输出流outer对象");
response.sendRedirect("index.jsp"):
//跳转到index页面
四、session对象
session表示客户端与服务器的一次回话。Web中的session指的是用户在浏览某个网站时,从进入网站浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,session实际上是一个特定的时间概念。当一个客户端访问一个服务器时,可能会在这个服务器的多个 页面之间反复跳转,服务器应当通过某种办法来识别这是来自 同一个客户端的不同请求,这种办法通常就是session对象
session销毁的三种方式:
1.session.invalidate() ; //注销 session
2.session过期
3.服务器重新启动
用一个登录例子来说明:
//login.jsp
<form action="logcheck.jsp" method="post">
姓名<input type="text" name="username"><br> 密码<input
type="password" name="password"><br> <input
type="submit" value="登录">
</form>
//logcheck.jsp
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("fxs") && password.equals("123456")) {
session.setAttribute("username", username);
response.sendRedirect("welcome.jsp");
} else {
out.print("用户名或密码不正确,3秒钟之后重新登录");
response.setHeader("refresh", "3;url='login.jsp'");
}
%>
//welcome.jsp
<%
if (session.getAttribute("username") == null) {
out.print("你还没有登录,3秒钟之后重新登录");
response.setHeader("refresh", "3;url='login.jsp'");
} else {
%>
欢迎<%=(String) session.getAttribute("username")%>
<br />
<br />
<a href="logout.jsp">注销</a>
<%
}
%>
//logout.jsp
<%
session.invalidate() ;
//注销 session
response.sendRedirect("login.jsp");
%>
五、application对 象
application对象的生命周期从创建到应用服务器关闭。
application可保存网站访问人数,例:网站计数器
<%
Integer count = (Integer) application.getAttribute("count");
if (count == null) {
count = 1;
} else {
count++;
}
application.setAttribute("count", count);
%>
<html>
<head>
<title>网站计数器</title>
</head>
<body>
你是第<%=count%>个访问客户
</body>
</html>
六、page对象
page对象就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。常用方法如下:
■class getClass() 返回此Object的类
■int hashCode() 返回此Object类的hash码
■boolean equals(Object obj)判断此Object是否与指定的Object对象相等
■void copy(Object obj) 把此Object拷贝到指定的Object对象中
■Object clone()克隆此对象
■String toString()把此Object对象转换为string类的对象
■void notify()唤醒一个等待的线程
■void notifyAll()唤醒全部等待的线程
■void wait(int timeout)使一个线程处于等待直到timeout结束或背唤醒
■void wait()使一个线程处于等待直到背唤醒