内置对象:
JSP内置对象是Web容器创建一组对象,不用通过手动new就可以使用
JSP九大内置对象:
名称 类型 作用域
session (用来保存会话信息,可以实现在同一-用户的不同请求之间共享数) javax.servlet.http.HttpSession Session
application (代表了当前应用程序的上下文,可以在不同的用户之间共享信息) javax.servlet.ServletContext Application
out (用户向客户端,浏览器你输出数据) javax.servlet.jsp.JspWriter page
request (封装了来自客户端,浏览器的各种信息) javax.servlet.ServletRequest Request
response (封装了服务器的响应信息) javax.servlet.SrvletResponse page
pageContext (提供了对JSP页面所有对象以及命名空间的访问) javax.servlet.jsp.PageContext page
page (指向了当前JSP程序本身) javax.lang.Object page
exception (封装了JSP程序执行过程中发生的异常和错误信息) javax.lang.Throwable
config (封装了应用程序的配置信息) javax.servlet.ServletConfig page
out对象:
方法名 说明
print或println 输出数据
newLine 输出换行字符
flush 输出缓冲区数据
close 关闭输出流
clear 清除缓冲区数据,但不输出到客户端
clearBuffer 清除缓冲区数据,输出到客户端
getBufferSize 获得缓冲区大小
getRemaining 获取缓冲区中没有被占用的空间
isAutoFlush 是否为自动输出
request对象:
方法名 说明
isUserRole 判断认证后的用户是否属于某一成员组
getAttribute 获取指定属性的值,如该属性不存在返回null
getAttributeNames 获取所有属性名的集合
getCookies 获取所有Cookie对象
getCharacterEncoding 获取请求的字符编码方法
getContentLength 返回请求正文的长度,如不确定返回-1
getHeader 获取指定名字报头值
getHeaders 获取指定名字报头的所有值,一个枚举
getHeaderNames 获取所有报头的名字,一个枚举
getInputStream 返回请求输入流,获取请求中的数据
getMethod 获取客户端向服务器端传送数据的方法
getParameter 获取指定名字的参数值
getParameterNames 获取所有参数的名字,一个枚举
getParameterValues 获取指定名字参数的所有值
getProtocol 获取客户端向服务器端传送数据的协议名称
getQueryString 获取一get方法向服务器传送的查询字符串
getRequestURL 获取发出请求字符串的客户端地址
getRemoteAddr 获取客户端的IP地址
getRemoteHost 获取客户端的名字
getSession 获取和请求相关的会话
getServerName 获取服务器的名字
getServerPath 获取客户端请求问价的路劲
getServerPort 获取服务器的端口号
removeAttribute 删除请求中的一个属性
setAttribute 设置指定名字参数值
response对象:
方法名 说明
addCookie 添加一个Cookie对象
addHeader 添加Http文件指定名字开头信息
containHeader 判断指定名字Http文件信息是否存在
encodeURL 使用sessionid封装URL
flushBuffer 强制把当前缓冲区内容发送到客户端
getBufferSize 返回缓冲区大小
getOutputStream 返回客户端的输出对象
sendError 向客户端发送错误信息
sendRedirect 把响应发送到另一个位置进行处理
setContentType 设置响应的MIME类型
setHeader 设置指定名字的Http文件头信息
session对象:
方法名 说明
getAttribute 获取指定名字的属性
getAttributeNames 获取session中全部的属性名字,一个枚举
getCreationTime 返回色session的创建时间
getId 获取回话标识符
getLastAccessedTime 返回最后发送请求的时间
getMaxInactiveInterval 返回session对象的生存时间单位千分之一秒
invalidate 销毁session对象
isNew 每个请求是否会产生新的session对象
removeAttribute 删除指定名字的属性
setAttribute 设置指定名字的属性值
application对象
方法名 说明
getAttribute 获取应用对象中指定名字的属性值
getAttributeNames 获取应用对象中所有属性的名字,一个枚举
getInitParameter 返回应用对象中指定名字的初始参数值
getServletInfo 返回Servlet编译器中当前版本信息
setAttribute 设置应用对象中指定名字的属性值
config对象:
方法名 说明
getServletContext 返回执行的Servlet的环境对象
getServletName 返回所有执行的Servlet的名字
getInitParamter 返回执行名字的初始参数值
getInitParamterNames 返回该JSP中所有初始参数名,一个枚举
page对象:
方法名 说明
toString 将当前项目的信息打印出来
getClass 返回当前Object类
hashCode 返回page对象的hashCode值
equals 用于比较对象是否与当前对象相同
pageContext对象:
方法名 说明
forword 重定向到另一页面或Servlet组件
getAttribute 获取某范围中指定名字的属性值
findAttribute 按范围搜索指定名字的属性
removeAttribute 删除某范围中指定名字的属性
setAttribute 设定某范围中指定名字的属性值
getException 返回当前异常对象
getRequest 返回当前请求对象
getResponse 返回当前响应对象
getServleConfig 返回当前页面的ServletConfig对象
getServletContext 返回所有页面共享的ServletContext对象
getSession 返回当前页面的会话对象
post和get的区别:
1.从安全角度考虑 post更安全一些 get不安全 ;
2.post方式提交数据可以提交大概几GB的数据 get方式提交数据最大也就到几KB;
解决乱码的方案:
post乱码解决:request.setCharacterEncoding("UTF-8");
get乱码解决: hobbys[i]=new String(hobbys[i].getBytes("ISO-8859-1"),"UTF-8");
HTTP状态码:
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
404和500错误状态码配置页面:
在当前项目的web.xml当中加入如下配置信息:
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
response:响应
转发:(是在服务器内部进行,无法访问到除内部以外的资源):request.getRequestDispatcher("/response/welcome.jsp").forward(request, response);
重定向:(全路径):response.sendRedirect("/Chap02/response/Login.jsp");
contentType和pageEncoding区别:
contentType定义响应的资源类型,也可以包含JSP页面和响应内容的字符集;
pageEncoding指定JSP文件的字符集及默认的contentType字符集;
转发和重定向区别:
1.转发是在服务器内部进行,重定向是客户端完成的,需要写入全路径,地址xxxxxxx
2.转发请求1次,其余的操作都是在服务器内部进行的;重定向请求至少2次,其余的请求命令客户端再次请求一个URL
3.转发可以携带这次请求的数据,重定向不带数据
session会话:
一个会话就是在一段时间内,一个用户和Web服务器的一连串相关的交互过程,它可以包含浏览器与服务器之间的多次请求,响应过程;
会话机制是一种服务器端的机制,当用户向服务器发出第一次请求时,服务器会为该用户创建唯一会话,会话将一直延续到用户访问结束;
当服务器接收到客户的请求时,服务器首先会判断是否创建了与该客户端对应的会话,如果已经创建,就将该请求与此会话相关联,如果没有创建,则创建一个新会话,此客户端之后发送的请求将关联到该会话;
而服务器判断是否创建了相关会话,是通过一个唯一的标识sessionid来实现的,如果在客户端请求一个包含一个sessionid,则说明在此前已经为客户端创建了会话,服务器就会根据这个sessionid将对应的会话对象读取出 来;否则就会创建一个新的会话对象生成一个sessionid,并将sessionid在本次响应的过程返回客户端保存;
会话失效:
方法一:
//时间单位为秒
session.setMaxInactiveInterval(600);
方法二:
//时间单位为分钟
<session-config>
<session-timeout>10</session-timeout>
</session-config>
session会话对象:
会话:在一段时间内,客户端和服务器建立连接的过程,只要会话时间不过期,只要会话不关闭,那么会话就一直存在,那么会话中保存的数据就一直存在
不同浏览器的会话是不相等的;
可以设置Session的会话时长:
1.session.setMaxInactiveInterval(秒数)
2.在项目web.xml当中去设置Session的实效时长:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
手动设置Session实效:
session.invalidate();
会话保存数据:
session.setAttribute(String name, Object value);
Object value=session.getAttribute(String name);
删除会话当中保存的数据:
session.removeAttribute(String name);
incloud
<%@ include file="loginControl.jsp" %>