JSP隐含对象:
表单的基本格式:
<form method=“get” action=“”></form>
说明
method:信息请求中使用的传输方法
actoin:为表单递交后处理该请求的页面 所有的控件内容都必须放在<form>标签中
目前常用的两种提交方式:
GET:将数据加在指定好的URL之后,中间用问号连接,然后传送到指定的程序做处理。
http://specurl?name=tom&password=admin
传送中字符串的最大长度为2084字节(255个字符数)
信息会在地址栏显示,不安全;是发送请求的默认方式
POST:数据和URL是分开传送
传送的数据量无限制
能够上传文件
信息不会在地址栏显示,安全性高
只有表单Method=post,其他情况都是get
只有以下三种控件可以传递参数到服务器:
1、<input>控件 type=text|password|radio|checkbox|hidden|file
2、<select>控件
3、<textarea>控件
注意:当使用复选框传递参数,或者使用
<select multiply size=n>传递参数时,在服务器端必须使用:String[] request.getParameterValues("name")
其他表单组件传递参数,在服务器端取出时均采用:String request.getParameter("name")
HTTP协议是基于请求/响应的运作方式:
建立连接 :连接的建立是浏览器通过创建套接字(Socket)实现的。浏览器打开一个套接字并把它约束在一个端口上,就可以在该端口上写数据并通过网络向外传送
发送请求 :打开一个连接后,浏览器把请求消息送到服务器的端口上,完成提出请求动作
发送响应 : 服务器在处理完客户的请求之后,向浏览器发送响应消息 。
关闭连接:客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话
点击链接、提交表单、地址栏键入Web页面地址就会发出一个请求,请求的服务器及资源由一个HTTP URL来指定
9种隐含对象:
JSP页面中不须做任何声明就可以直接使用的对象,JSP中共9种隐含对象,分别是:
page | 页面对象 | Object类型 | 作用域:page |
config | 配置对象 | ServletConfig类型 | 作用域:page |
out | 输出对象 | PrintWriter类型 | 作用域:page |
request | 请求对象 | HttpServletRequest类型 | 作用域:request |
response | 响应对象 | HttpServletResponse类型 | 作用域:page |
session | 会话对象 | HttpSession类型 | 作用域:session |
application | 应用程序对象 | ServletContext类型 | 作用域:application |
pageContext | 页面上下文对象,表示此JSP的page上下文 | PageContext类型 | 作用域:page |
exception | 异常对象,用于异常处理 | Exception类型 | 作用域:page |
4大作用域:
作用域是指变量使用的有效范围。这个周期可以是当前页面的执行时间,或是一次请求从创建到消亡的这段时间。
pageContext:当前页面作用域
pageContext相当于Java中的this,它代表着当前页面作用域。在这个作用域中存放的属性值,只能在当前页面中取出。
request:从请求创建到请求消亡这段时间
浏览器从发起请求开始,到服务器处理完成,返回响应的这段时间。request作用域可以跨越多个页面 。
另外,还可以使用<jsp:forward>和<jsp:include>两个方法转向或包含另一个页面, 这个时候request对象中保存的信息对另一个页面也是有效的
session:一段客户端和服务器持续连接的时间
当客户端浏览器第一次向服务器发出请求,服务器会为这个客户端分配一定的内存空间,这个客户端能在其中存取数据,任何客户端都不能操作其他客户端的内存空间中的数据,这块内存空间就称为session,它也是JSP的九大内置对象之一。
存放于session中的对象,将属于session作用域,或者叫会话作用域
application:服务器开始到服务器关闭为止
当服务器开启时,会创建一个公共内存区域,任何客户端都可以在这个公共内存区域存取值,这个公共内存区域,就称为application,它也是JSP的九大内置对象之一
隐含对象--属性与作用范围
方法&说明
void setAttribute(String,Object) | 定义name属性的值为value |
Object getAttribute(String) | 取得name属性的值 |
void removeAttribute(Sting) | 移除name属性的值 |
getAttributeNames(String name) | 得到一个数组的值,但pageContext无此方法。如果找不到对象,则返回null; |
注意注意注意:存入的对象时,类型自动被转换成Object类型,在取出时则需要将Object类型转换成原类型
request对象的方法
getContextPath() | 获取站台路径 |
getMethod() | 获得客户端提交请求的方式 |
getRealPath("/") | 获得站点在服务器的真实路径 |
getRemoteAddr() | 获得客户端主机IP地址 |
getRequestedSessionId() | 获得sessionID |
getSession() | 获取session对象 |
getLocale().getCountry() | 获取客户端浏览器所属国家代码 |
处理HTTP请求报头:
在读取请求报头的时候,我们通常用的方法是HttpServletRequest的getHeader(String name)方法、 getHeaderNames( )方法和getHeader(String name)。
常见的HTTP请求报头域:
Accept:用于指定客户端接受哪些类型的信息。
Accept-Encoding:类似Accept,但是它是用于指定可接受的内容编码。如果请求消息中没有设置这个域,服务器假定客户端对各种内容编码都可接受
Accept-Language:类似于Accept,但是它是用于指定一种自然语言。如果请求消息中没有设置这个域,服务器假定客户端对各种语言都可接受。
Host:主要用于指定被请求资源的Internet主机和端口号,它通常是从HTTP URL中提取出来的。
User-Agent:允许客户端将它的操作系统浏览器和其他属性告诉服务器。
Connnection:标明客户是否能够处理持续性HTTP连接。持续性连接允许客户或者浏览器在单个socket中读取多个文件,从而节省协商几个独立连接所需的开销。
Cookie:向服务器返回cookie,这些cookie是之前由服务器发送给浏览器的:request.getCookies()。
response对象的方法:
主要将JSP处理数据后的结果传回到客户端。对应的javax.servlet.http.HttpServletResponse接口
setContentType(String) | 设置返回客户信息的对象类型 |
void addCookie(Cookie cookie) | 新增cookie |
void setHeader(String name,String value) | 新增String类型的值到标头 |
getWriter() | 获取out对象 |
getOutputStream() | 获取对客户端的输出流 |
String sendRedirect (String url) | 重定向到新的UTL |
请求转发与重定向
请求转发与重定向的区别:
请求转发是将收到的请求原封不动再发出去,可以加参数或属性。
重定向转发是原请求周期结束,重新创建新请求出去。
<jsp:forward>转发需要用<jsp:param>来传递参数,response.sendRedirect()重定向可以直接在url后面编码增加参数。
例如:response.sendRedirect(“example.jsp?aa=123)
response对象设置响应头参数
对客户端的响应参数可以在response中进行参数设置。
需求:
需要每间隔3分钟重新响应1次,则可以通过如下方法:
response.setIntHeader(“Refresh”,180)让页面自己每隔3分钟自动刷新。
需要等10秒钟后,再响应,则可以通过如下方法:
response.setHeader(“refresh”, “10;URL=http://www.sina.com”)让页面过10秒钟后自动重定向到新的页面
Out对象的方法:
print(String) | 显示 |
println( ) | 显示并换行 |
close( ) | 关闭输出流,清楚所有的内容 |
application对象:
application对象实现javax.servlet.ServletContext接口,它主要功用在于取得或更改Servlet的设定。
getRealPath(String)获取某个文件在服务器上的绝对地址,参数如果是/,表示获取站点的真实路径
config对象:
config对象则存放一些Servlet的初始化的数据结构。该对象实现于javax.servlet.
点击链接<a href="fig">测试config</a>
<servlet>
<servlet-name>con</servlet-name>
<jsp-file>/fig.jsp</jsp-file>
<init-param>
<param-name>name</param-name>
<param-value>paramvalue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>con</servlet-name>
<url-pattern>/fig</url-pattern>
</servlet-mapping>
前台jsp页面:
<%
String v=config.getInitParameter("name");
out.println("从配置文件中获取的参数值:"+v);
%>
exception对象
当JSP网页有错误产生异常的时候调用该对象进行处理 和session对象一样,只有当<%@page isErrorPage=“true”%>的时候才能使用该对象。 errorPage=“a.jsp”