JSP内置对象讲解教案_jsp内置对象教案
JSP内置对象讲解教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“jsp内置对象教案”。
第5章 JSP内置对象
在JSP中预先定义好了一些常用的对象,在Web应用中可以直接使用这些对象。内置对象的应用大大简化了Web开发工作。
5.1 JSP内置对象概述
因为java是区分大小写的,所以在JSP中对象名要注意字母的大小写。
JSP内置对象有9个 request对象 response对象 out对象 seion对象 application对象 exception对象 page对象
pageContext对象 config对象
5.2 request对象
request对象用于接收客户端通过HTTP协议传送给服务器端的数据。
而response对象主要用来向客户发送信息,它包含了Web服务器对客户的响应信息。
request和response对象是JSP中很重要的两个内置对象,是实现客户端和服务器交互的基础。
5.2.1 request对象的功能
request对象用来接收客户端提交的请求
例如:接收用户提交的表单信息
在xxx.jsp文件中需要用request对象接收表单信息。request对象用的比较多的方法是getParameter()方法
5.2.2 getParameter方法
request对象的getParameter()方法根据指定的参数,获取客户端提交的信息。 其语法规则如下:
<% String name=request.getParameter(“txtName”)%>
其中,name是一个字符串变量。txtName是客户端提交信息中的一个字段名。
5.2.3获取客户提交信息案例 【例5.1】 request对象应用。
提交页面上有两个文本框,在文本框中输入姓名和电话号码,单击“提交”按钮后,由服务器端应用程序接收提交的表单信息并显示出来。
其中的infoInput.html为用户的输入页面,提交的信息由服务器端的文件infoReceive.jsp接收并显示。
infoInput.html页面主要代码:
姓名:
电话:
infoReceive.jsp代码
<% String str1=request.getParameter(“RdName”);%> <% String str2=request.getParameter(“PhName”);%> 您输入的信息为: 姓名: <%=str1%>
电话: <%=str2%> 5.2.4 request对象常用方法
在客户访问页面时,向服务器的JSP引擎提交一个HTTP请求,该请求包含一个请求行、主机头和上载信息。例如:
◦ POST /chapt5/infoReceive.jsp HTTP/1.1
//请求行 ◦ Host localhost
//头,host是头名字
request对象也提供了一些其他方法,用来获得客户传来信息的其他部分。 request对象常用方法:
1.getProtocol():获取客户端向服务器端传送数据所使用的协议名称和版本号 2.getServerName():获得服务器的名字
3.getServerPort():获得服务器所使用的端口号。4.getRemoteAddr():获得客户端的IP地址。
5.getRemoteHost():获得客户端主机的名字,若失败,则返回客户端的IP地址。6.getMethod():返回客户端向服务器端传送数据的方法,一般方法为get或post。
7.getCookies():返回客户端的cookie对象,结果是一个cookie数组。如果客户端没有发送cookie,则返回空值。
8.getSeion(boolean create):返回和当前客户端请求相关联的HttpSeion对象,如果当前客户端请求没有和任何HttpSeion对象关联,那么当create变量为true,则创建一个HttpSeion对象并返回;反之,返回null。9.getHeader(String name):获得http协议定义的传送文件头信息。
10.getAttribute(String name):返回name指定的属性值,若不存在指定的属性,就返回null。
11.getAttributeNames():返回request对象所有属性的名字,结果集是一个Enumeration(枚举)类的实例。12.getHeaderNames():返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例。
13.getHeaders(String name):返回指定名字的request header的所有值,结果集是一个Enumeration(枚举)类的实例。
14.getParameter(String name):以字符串的形式返回客户端传来的某一个请求参数的值,该参数名由name指定。当传递给此方法的参数名没有实际参数与之对应时,返回null。通常是表单中的参数.15.getParameterNames():返回客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例。当传递给此方法的参数名没有实际参数与之对应时,返回null。
16.getParameterValues(String name):以字符串数组的形式返回指定参数所有值。
17.getQueryString():返回查询字符串,该字符串由客户端以GET方法向服务器端传送。18.getRequestURI():获得发出请求字符串的客户端地址
19.getServletPath():获得客户端所请求的脚本文件的文件路径。
20.setAttribute(String name,Java.lang.Object o):设定名字为name的request参数值,该值由Object类型的o指定。
21.getContentLength():以字节为单位返回客户端请求的大小。如果无法得到该请求的大小,则返回-1。22.getContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,那么返回-1。23.getInputStream():以二进制的形式将客户端的请求以一个ServletInputStream的形式返回。使用此方法可以获得客户端的multipart/form-data数据,可以实现文件上传。
24.isSecure():如果客户机是通过一个安全的访问方式访问的,就返回true;反之,返回false。25.getDateHeader():返回一个long类型的数据,表示客户端发送到服务器的头信息中的时间信息。26.getInitHeader():获取客户端发送到服务器端的头信息中的某一个特定的信息,并转换为int类型。27.getContextPath():返回环境路径.对于JSP来说,一般是当前Web应用程序的根目录。
28.isRequestedSeionIdValid():返回一个指示客户端请求发送Seion ID是否仍然有效的布尔值。
29.isRequestedSeionIdFromCookie():返回一个指示客户端请求发送Seion ID是否存在于Cookie中的布尔值。
30.isRequestedSeionIdFromURL():返回一个指示客户端请求发送Seion ID是否存在于URL中的布尔值。
5.2.5 request对象常用方法应用案例
【例5.2】 使用request对象的常用方法,获取客户端提交信息的不同部分。
本例中的用户输入页面infoInput2.html只需要把例5.1的文件infoInput.html的form的action属性值改为infoReceive2.jsp即可。infoReceive2.jsp主要代码
<%
out.println(“姓名文本框提交信息:” + request.getParameter(“RdName”)+ “”);out.println(“电话文本框提交信息:” + request.getParameter(“PhName”)+ “”);out.println(“客户端协议名和版本号:” + request.getProtocol()+ “”);out.println(“客户机名:” + request.getRemoteHost()+ “”);out.println(“客户机的IP地址:” + request.getRemoteAddr()+ “”);out.println(“客户提交信息的长度:” + request.getContentLength()+ “”);
%> out.println(“---------”);
out.println(“getContextPath:” +request.getContextPath()+ “”);out.println(“requestURI=” + request.getRequestURI()+ “”);out.println(“requestURL=” + request.getRequestURL()+ “”);out.println(“servletPath=” + request.getServletPath()+ “”);// getServletPath 不建议使用 因为当servlet映射成/*时 无法获得
String uri = request.getRequestURI();String servletPath = uri.substring(request.getContextPath().length());out.println(“servletPath=” + servletPath + “”);总结:
request.getRequestURI()与request.getRequestURL()与request.getServletPath()区别
a)getRequestURI()获得的信息:/day6/servlet/RequestServlet b)getRequestURL()获得的信息:http://localhost/day6/servlet/RequestServlet c)getServletPath()获得的信息: servlet/RequestServlet
getServletPath 不建议使用
因为当servlet映射成/*时 无法获得。
d)request.getContextPath()获得的信息: /day6
那如何获取serverpath String uri = request.getRequestURI();
// /day06aaa/servlet/RequestDemo1
String servletPath = uri.substring(request.getContextPath().length());
System.out.println(“servletPath=” + servletPath);5.3 response对象
◦ ◦ 把服务器端的数据以HTTP的格式发送到客户端浏览器 它的功能和request对象的功能相反
request对象用于得到用户提交的信息 而response对象是向用户发送信息
两者结合起来完成动态页面的交互功能。
5.3.1 response对象的功能
response对象提供的几种输出结果的主要方法:
◦ sendRedirect():页面重定向方法。◦ setStatus():设置状态行方法。
◦ setContentType():设置文本类型方法。
5.3.2 sendRedirect()方法
将客户端浏览器转向新的页面,页面中重定向语句后的代码不再被执行。 它可以根据用户的不同要求转向不同的页面。 例如:防盗链。(第3章 http协议中讲解)
【例5-3】response对象的使用。
用户在登录界面输入用户名和密码,提交后验证登录者输入的用户名和密码是否正确,根据判断结果转向不同的页面。
◦ 其中userLogin.html为用户输入界面
◦ userReceive.jsp为接收用户输入信息并判断输入是否正确页面
◦ loginCorrect.html和loginError.html分别为登录成功界面和登录失败界面。
userLogin.html页面主要代码:
姓 名: 密 码: userReceive.jsp页面源代码:
<% String Name = request.getParameter(“RdName”);String Pawd = request.getParameter(“RdPawd”);if(Name.equals(“Mary”)&& Pawd.equals(“123456”))
response.sendRedirect(“loginCorrect.html”);else
response.sendRedirect(“loginError.html”);%>
需要注意的是,在实际的Web开发中,用户的信息保存在数据库中,判断用户登录时所输入的用户名和密码是否正确需要连接到数据库,和数据库中的数据进行匹配。此处为了演示sendRedirect方法的使用,简单的和常量进行比较。
5.3.3 response的状态行
1.状态行的作用
当页面出现错误时,服务器会自动响应,将相应的出错信息返回客户端。状态行包含3位数字的状态代码,代表错误的性质和处理方法。共有5类状态码,如下:
1XX(1开头的3位数):主要是实验性质的。例如101表示服务器正在升级协议。
2XX:表示请求成功。如200表示请求成功。
3XX:表示在请求满足之前应采取的进一步行动。如302请求重定向; 305表示请求必须通过代理来访问。
4XX:浏览器不能满足请求时,返回的状态码。如404表示请求的页面不存在。
5XX:服务器执行出现错误时,返回的状态码。如500表示服务器内部发生错误,不能服务。
2.setStatus()方法
程序中可以使用response对象的setStatus()方法设置状态码。在一般情况下,不需要在程序中设置状态码。页面出现问题时,服务器会自动响应,并发送相应的状态码提示用户。
使用response.setStatus(int n)方法设置状态行
◦ 例如response.setStatus(501)取得错误信息为501的出错信息,返回该出错页面到客户端。◦ 如果状态代码为出错码,页面中 response.setStatus()后面的语句将不被执行。
[例5-4]状态行的应用
本例包含4个文件 : StatueCode.html
responde对象状态行应用案例
显示不同的状态行
href=“statusCode200.jsp”>200请求成功信息
404请求资源不可用信息
501不支持请求的部分功能