JSP内置对象详解
- 格式:doc
- 大小:438.60 KB
- 文档页数:15
详解JSP内置对象request常见⽤法request 对象是 HttpServletRequestWrapper 类的实例。
它的继承体系如下:_request 对象继承层次结构图.pngServletRequest 接⼝的唯⼀⼦接⼝是 HttpServletRequest ,HttpServletRequest 接⼝的唯⼀实现类HttpServletRequestWrapper ,单从 request 对象⼀脉单传的类继承体系可以看出,javaweb 标准类库只⽀持了 http 协议。
Servlet/JSP 中⼤量使⽤了接⼝⽽不是实现类,这恰恰就是⾯向接⼝编程的最佳应⽤啊。
request 内置对象是由 Tomcat 创建的,可以⽤来封装 HTTP 请求参数信息、进⾏属性值的传递以及完成服务端跳转,这就是request 对象最重要的三个功能了。
request 对象的创建流程⼀旦 http 请求报⽂发送到 Tomcat 中, Tomcat 对数据进⾏解析,就会⽴即创建 request 对象,并对参数赋值,然后将其传递给对应的 jsp/servlet 。
⼀旦请求结束,request 对象就会⽴即被销毁。
服务端跳转,因为仍然是同⼀次请求,所以这些页⾯会共享⼀个 request 对象。
1、访问请求参数<a href="login.jsp?name=张三&sex=man&id=" rel="external nofollow" >传递参数</a>login.jsp关键代码<%= "name:"+new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") %><br><%= "sex:"+request.getParameter("sex") %><br><%= "id:"+request.getParameter("id") %><br><%= "pwd:"+request.getParameter("pwd") %><br>说明:如果指定的参数不存在,将返回null;如果指定了参数名,但未指定参数值,将返回空的字符串"。
第四章JSP 内置对象4.6 实验一:request对象1,相关知识点在就是jsp中,内置对象request封装了用户请求信息时所提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。
2,参考代码:Register.jsp:<%@page contentType="text/html;charset=gb2312"%><head><%@ include file="head.txt"%></head><%@taglib tagdir="/WEB-INF/tags" prefix="look"%><html><body bgcolor=pink><font size=2><form action="Register_1.jsp" method=post>请输入注册信息,用户名必须由字母或数字组成,带*为必填项。
<table border=1><tr><td>员工编号:</td><td><Input type=text name="id">*</td></tr><tr><td>用户名:</td><td><Input type=text name="name">*</td></tr><tr><td>用户密码:</td><td><Input type=text name="password">*</td></tr><tr><td>用户权限(Y/N):</td><td><Input type=text name="right">*</td></tr><tr><td>性别:</td><td><Input type=text name="sex">*</td></tr><tr><td>联系电话:</td><td><Input type=text name="phone"></td></tr><tr><td>备注:</td><td><Input type=text name="remark"></td></tr></table><br><Input type="submit" name="b" value="提交"><br>注册前<look:QueryTag dataSource="SupermarketMS" tableName="Staff" user="sa" password="sa"/><br><%=queryResult%></font></body></html>Register_1.jsp<%@page contentType="text/html;charset=gb2312"%><%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%><html><body bgcolor=pink><font size=2><%String ID=request.getParameter("id");String aa=request.getParameter("name");String PassWord=request.getParameter("password");String Right=request.getParameter("right");String Sex=request.getParameter("sex");String Phone=request.getParameter("phone");String Remark=request.getParameter("remark");byte bb[]=aa.getBytes("iso-8859-1");aa=new String(bb);%><inquire:Register_2 ID="<%=ID%>" nn="<%=aa%>" pw="<%=PassWord%>"right="<%=Right%>"sex="<%=Sex%>"phone="<%=Phone%>"remark="<%=Remark%>"/><br>注册后所有员工信息<inquire:QueryTag dataSource="SupermarketMS" tableName="Staff" user="sa" password="sa"/><br><%=queryResult%></font></body></html>Register_2.tag代码如下:<%@tag pageEncoding="gb2312"%><%@tag import="java.sql.*"%><%@ attribute name="ID" required="true"%><%@ attribute name="nn" required="true"%><%@ attribute name="pw" required="true"%><%@ attribute name="right" required="true"%><%@ attribute name="sex" required="true"%><%@ attribute name="phone" required="true"%><%@ attribute name="remark" required="true"%><%out.print("hello world");%><% int id=Integer.parseInt(ID);String insert="insert into Staff values("+id+",'"+nn+"','"+pw+"','"+right+"','"+sex+"','"+phone+"','"+remark+"')";try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(Exception e){}Connection con;Statement sql;ResultSet rs;try{String uri="jdbc:odbc:SupermarketMS";con=DriverManager.getConnection(uri,"sa","sa");sql=con.createStatement();sql.executeUpdate(insert);con.close();}catch(Exception e){out.print(""+e);}%>实验2:session对象1,相关知识点Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟. 我们使用session功能,可以达到多个jsp程序从操作同一个java bean, 那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.) 2,参考代码inputGuess.jsp<%@ page contentType="text/html;charset=GB2312" %><HTML><BODY bgcolor=cyan><FONT Size=2><P>随机分给了你一个1到100之间的数,请猜!<%int number=(int)(Math.random()*100)+1;session.setAttribute("count",new Integer(0));session.setAttribute("save",new Integer(number));%><FORM action="result.jsp" method="post" name=form>输入你的猜测:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Result.jsp 的代码如下:<% String str=request.getParameter("boy");if(str.length()==0){response.sendRedirect("inputGuess.jsp");}int guessNumber=-1;try{guessNumber=Integer.parseInt(str);Integer integer=(Integer)session.getAttribute("save");int realnumber=integer.intValue();if(guessNumber==realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("success.jsp");}else if(guessNumber>realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("large.jsp");}else if(guessNumber<realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("small.jsp");}}catch(Exception e){response.sendRedirect("inputGuess.jsp");}%>Small.jsp参考代码为:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><FORM action="result.jsp" method="get" name=form>猜小了,请再猜:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Large.jsp 参考代码如下:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><FORM action="result.jsp" method="get" name=form>猜大了,请再猜:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Success.jsp 的参考代码如下:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><%int count=((Integer)session.getAttribute("count")).intValue(); int num=((Integer)session.getAttribute("save")).intValue(); %><P>恭喜你,猜对了<BR>您共猜了<%=count%>次,这个数字就是<%=num%> <BR>单机超链接返回到inputGuess.jsp页面:<BR><A href="inputGuess.jsp">inputGuess.jsp</A></FONT></BODY></HTML>3实验结果及分析。
JSP中的内置对象<j s p:f o r w a r d><jsp:forward>是把一个请求转发到另一个JSP或Servlet或者其他的静态资源(HTML)特点:被forward转发的资源必须与发出请求的页面处于相同的上下文环境中,每当遇到此标签时,容器就会停止执行当前的JSP,转而执行被转发的资源<j s p:p a r a m>l当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给的资源是一个能动态执行的程序时,例如Servlet和JSP页面,那么,还可以使用<jsp:param>标签向这个程序传递参数信息。
l语法1:<jsp:include page="relativeURL | <%=expression%>"><jsp:param name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:include>l语法2:<jsp:forward page="relativeURL | <%=expression%>"><jsp:param name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:include>l<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。
在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
JSP程序设计实验报告(三)院系:计算机科学与工程学院【实验题目】JSP内置对象【实验目的】1、了解JSP中4个内置对象request、reponse、session、pagecontext的基本概念。
2、理解JSP内置对象的常用方法的功能。
3、掌握JSP内置对象的应用。
【实验内容】1、request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。
2、response对象:response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
3、session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
4、pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application 的某一属性值,他相当于页面中所有功能的集大成者。
5、练习(自己完成)【实验代码】实验1 request对象使用<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title></head><body bgcolor="#FFFFF0"><form action="" method="post"><input type="text" name="qwe"><input type="submit" value="提交"></form>请求方式:<%=request.getMethod()%><br>请求的资源:<%=request.getRequestURI()%><br>请求用的协议:<%=request.getProtocol()%><br>请求的文件名:<%=request.getServletPath()%><br>请求的服务器的IP:<%=request.getServerName()%><br>请求服务器的端口:<%=request.getServerPort()%><br>客户端IP地址:<%=request.getRemoteAddr()%><br>客户端主机名:<%=request.getRemoteHost()%><br>表单提交来的值:<%=request.getParameter("qwe")%><br><%String str = "";if (request.getParameter("qwe") != null) {Enumeration enumt = request.getParameterNames();while (enumt.hasMoreElements()) {str = enumt.nextElement().toString();out.println(str + ":" + request.getParameter(str) + "<br>");}}%></body></html>实验2 response对象<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>你想重定向去哪个网站?</title></head><body><%String address = request.getParameter("where");if (address != null) {if (address.equals("sohu"))response.sendRedirect("");else if (address.equals("avceit"))response.sendRedirect("");else if (address.equals("mypage"))response.sendRedirect("mypage.jsp");}%><b>Please select:</b><br><form action="" method="GET"><select name="where"><option val ue="sohu" selected>go to sohu</option><option value="avceit">go to avceit</option><option value="mypage">go to mypage</option></select><input type="submit" value="go"></form></body></html>实验3 session对象使用<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title></head><body><br>session的创建时间:<%=session.getCreationTime()%> <%=newDate(session.getCreationTime())%><br><br>session的Id号:<%=session.getId()%><br><br>客户端最近一次请求时间:<%=session.getLastAccessedTime()%> <%=newjava.sql.Time(session.getLastAccessedTime())%><br><br>两次请求间隔多长时间此SESSION被取消(ms):<%=session.getMaxInactiveInterval()%><br><br>是否是新创建的一个SESSION:<%=session.isNew()?"是" : "否"%><br><br><%session.setAttribute("name", "火星人");session.setAttribute("nmber", "1234567");%><%String str;//Enumeration为枚举类Enumeration<String> enum1=session.getAttributeNames();while(enum1.hasMoreElements()){str=enum1.nextElement().toString();out.println(str+":"+session.getAttribute(str)+"<br>");}%><br></body></html>实验4 pageContext对象使用<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>pageContext对象举例</title></head><body><%request.setAttribute("name", "软件001");session.setAttribute("name", "软件002");application.setAttribute("name", "编程001");%>request设定的值:<%=pageContext.getRequest().getAttribute("name")%><br>session设定的值:<%=pageContext.getSession().getAttribute("name")%><br>application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>范围1内的值:<%=pageContext.getAttribute("name", 1)%><br>范围2内的值:<%=pageContext.getAttribute("name", 2)%><br>范围3内的值:<%=pageContext.getAttribute("name", 3)%><br>范围4内的值:<%=pageContext.getAttribute("name", 4)%><br><!--从最小的范围page开始,然后是reques、session以及application--><%pageContext.removeAttribute("name", 3);%>pageContext修改后的session设定的值:<%=session.getAttribute("name")%><br><%pageContext.setAttribute("name", "应用技术培训", 4);%>pageContext修改后的application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>值的查找:<%=pageContext.findAttribute("name")%><br>属性name的范围:<%=pageContext.getAttributesScope("name")%><br> </body></html>【实验结果】request对象:response对象:、session对象:pageContext对象:【实验心得】通过本次实验,我知道了如何在JSP页面中实现使用request、reponse、session、pagecontext4个内置对象,对这四个内置对象有了一定的了解,并且对JSP编程更加得心应手。
jsp九⼤内置对象什么是内置对象 可以在JSP⽂件中直接拿来使⽤的对象 JSP⽂件翻译后⽣成的⽂件:在service⽅法中就引⼊了9个对象,所以在jsp⽂件中才可以直接使⽤九⼤内置对象有哪些四个范围对象的范围从⼩到⼤是什么: 从⼩范围到⼤范围:pageContext、request、session、applicationpageContext对象是什么 pageContext对象代表jsp页⾯上下⽂对象pageContext对象可以⼲什么 通过pageContext对象可以获取整个JSP页⾯环境中的所有数据: 获取当前JSP页⾯中的请求对象:pageContext.getRequest()。
获取当前JSP页⾯中的会话对象:pageContext.getSession()。
获取ServletContext对象:pageContext.getServletContext()。
通过pageContext对象传递数据(只能存储⼀个页⾯中的数据,⽆法跨页⾯。
可以获取include指令包含的jsp页⾯中存储的数据,但是不能获取include动作包含的jsp页⾯中存储的数据): pageContext.setAttribute(“username”,jack); //存 pageContext.getAttribute(“username”); //取 通过pageContext对象往request,session,application对象中存储数据: 向request范围存储数据:pageContext.setAttribute(“username”,”jack”,PageContext.REQUEST_SCOPE); 向session范围存储数据:pageContext.setAttribute(“username”,”jack”,PageContext.SESSION_SCOPE); 向application范围存储数据:pageContext.setAttribute(“username”,”jack”,PageContext.APPLICATION_SCOPE);。
第三章:Jsp隐式对象(request对象、response对象session对象、application对象、cookie)Jsp隐式对象概述:由JSP规范提供,不用编写者实例化。
通过Web容器实现和管理。
所有JSP页面均可使用。
只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)。
常用九大内置对象的作用和方法1、out对象:代表提供输出流的访问。
2、request对象:request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息。
常用方法:getparameter()getParameterValues()setAttribute() getAttribute()3、response对象:允许直接访问HttpServletResponse对象常用方法:sendRedirect()4、session对象:允许直接访问HttpServletResponse对象常用方法:setAttribute()、getAttribute()5、application对象:用于多个程序或者多个用户之间共享数据。
常用方法:setAttribute()、getAttribute()6、config :将初始化数据传递给一个JSP页面7、page :代表JSP页面对应的Servlet类实例8、exception:针对错误网页,未捕捉的例外9、pageContext :管理网页的属性内置对象的作用域:◆application:服务器启动到停止这段时间◆session:HTTP会话开始到结束这段时间◆request:HTTP请求开始到结束这段时间◆page:当前页面从打开到关闭这段时间对于每一个用户都共享同一个对象的是:application对象,而每个用户分别使用不同对象实例的是:session对象forword和sendRedirect的区别:forword仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;sendRedirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接getParameter(String name);例题一:文件名:input.html<html>< body bgcolor="white"><font size=1><form action="requestdemo1.jsp" method=post name=form><input type="text" name="boy"><input type="submit" value="Enter" name="submit"></form></font></body></html>文件名:requestDemo1.jsp:<%@ page contentType="text/html;charset=GB2312" %><html><body bgcolor="white"><font size=4><p>获取文本框提交的信息:<%String strContent=request.getParameter("boy");%><%=strContent%> // 输出文本框boy提交的信息<p> 获取按钮的名字:<%String strButtonName=request.getParameter("submit");%><%=strButtonName%> // 输出按钮的value名字</font></body></html>例题二:设计一个简单的“JSP程序设计网上测试系统”,如下图所示。
JSP内置对象本讲主要介绍JSP主要内置对象,包括对象的作用、常用函数,并通过具体实例说明其用法,并介绍了Cookie的概念和使用方法。
通过本讲的学习,重点掌握以下内容:●掌握常用内置对象的作用●掌握常用内置对象的用法●了解Cookie的有关操作1.1 内置对象介绍JSP九大隐式对象:[1]request:表示客户端的请求,包含了所有的请求信息,是Servlet中service(或doPost/doGet方法)方法的resquest参数。
[2]response:处理JSP生成的响应,然后将响应结果发送给客户端。
是service(或doPost/doGet方法)方法的response参数。
[3]out:表示输出流,将作为请求的响应发送给客户端。
是JspWriter的一个实例。
[4]session:表示用户的会话状况,用此机制可以轻易的识别每一个用户,能保存和跟踪用户的会话状态。
是HttpSession的一个实例。
[5]pageContext:作用于此页面,可以访问页面作用域中定义的所有隐式对象。
是PageContext的一个实例。
[6]application:作用于整个应用程序。
是ServletContext的一个实例。
[7]page:提供对网页上定义的所有对象的访问。
是一个Object对象。
是此Servlet的一个引用。
[8]config:存储Servlet的一些初始信息。
是ServletConfig的一个实例。
[9]exception:此对象负责处理程序执行过程中引发的异常。
1.2 out:输出对象out对象是JspWriter类的实例,主要用于向客户端输出数据。
out对象与response.getWriter()得到的PrintWriter对象的关系:一、都是继承自java.io.Writer类。
JspWriter在JSP页面中直接用out对象输出,也可以用pageContext.getOut(); 得到out对象。
jsp有哪些内置对象?作⽤分别是什么?
JSP共有以下9种基本内置组件
1、request对象客户端请求,此请求会包含来⾃GET/POST请求的参数通过它才能了
解到客户的需求,然后做出响应。
2、response对象响应客户请求的有关信息
3、session对象它指的是客户端与服务器的⼀次会话,从客户端连到服务器的⼀个WebApplication开始,直到客户端与服务器断开连接为⽌。
4、out对象它是JspWriter类的实例,是向客户端输出内容常⽤的对象
5、page对象它是指向当前JSP页⾯本⾝,有点象类中的this指针,它是 ng.Object类的实例
6、application对象它实现了⽤户间数据的共享,可存放全局变量。
它开始于服务器的启动,直到服务器的关闭
7、exception对象它是⼀个例外对象,当⼀个页⾯在运⾏过程中发⽣了例外,就产⽣这个对象。
8、pageContext对象它提供了对JSP页⾯内所有的对象及名字空间的访问
9、config对象它是在⼀个Servlet初始化时,JSP引擎向它传递信息⽤的。
JSP9⼤内置对象详解内置对象特点:1. 由JSP规范提供,不⽤编写者实例化。
2. 通过Web容器实现和管理3. 所有JSP页⾯均可使⽤4. 只有在脚本元素的表达式或代码段中才可使⽤(<%=使⽤内置对象%>或<%使⽤内置对象%>)常⽤内置对象:1. 输出输⼊对象:request对象、response对象、out对象2. 通信控制对象:pageContext对象、session对象、application对象3. Servlet对象:page对象、config对象4. 错误处理对象:exception对象对象常⽤⽅法说明:1.out对象(数据流 javax.servlet.jsp.jspWriter)⽅法名说明print或println输出数据newLine输出换⾏字符flush输出缓冲区数据close关闭输出流clear清除缓冲区中数据,但不输出到客户端clearBuffer清除缓冲区中数据,输出到客户端getBufferSize获得缓冲区⼤⼩getRemaining获得缓冲区中没有被占⽤的空间isAutoFlush是否为⾃动输出2.request对象(请求信息 javax.servlet.http.HttpServletrequest)⽅法名说明isUserInRole判断认证后的⽤户是否属于某⼀成员组getAttribute获取指定属性的值,如该属性值不存在返回NullgetAttributeNames获取所有属性名的集合getCookies获取所有Cookie对象getCharacterEncoding获取请求的字符编码⽅式getContentLength返回请求正⽂的长度,如不确定返回-1getHeader获取指定名字报头值getHeaders获取指定名字报头的所有值,⼀个枚举getHeaderNames获取所有报头的名字,⼀个枚举getInputStream返回请求输⼊流,获取请求中的数据getMethod获取客户端向端传送数据的⽅法getParameter获取指定名字参数值getParameterNames获取所有参数的名字,⼀个枚举getParameterValues获取指定名字参数的所有值getProtocol获取客户端向端传送数据的协议名称getQueryString获取以get⽅法向传送的查询字符串getRequestURI获取发出请求字符串的客户端地址getRemoteAddr获取客户端的IP地址getRemoteHost获取客户端的名字getSession获取和请求相关的会话getServerName获取的名字getServerPath获取客户端请求⽂件的路径getServerPort获取的端⼝号removeAttribute删除请求中的⼀个属性setAttribute设置指定名字参数值3.response对象(响应 javax.servlet.http.HttpServletResponse)⽅法名说明addCookie添加⼀个Cookie对象addHeader添加Http⽂件指定名字头信息containsHeader判断指定名字Http⽂件头信息是否存在encodeURL使⽤sessionid封装URLflushBuffer强制把当前缓冲区内容发送到客户端getBufferSize返回缓冲区⼤⼩getOutputStream返回到客户端的输出流对象getOutputStream返回到客户端的输出流对象sendError向客户端发送错误信息sendRedirect把响应发送到另⼀个位置进⾏处理setContentType设置响应的MIME类型setHeader设置指定名字的Http⽂件头信息4.session对象(会话 javax.servlet.http.HttpSession)⽅法名说明getAttribute获取指定名字的属性getAttributeNames获取session中全部属性名字,⼀个枚举getCreationTime返回session的创建时间getId获取会话标识符getLastAccessedTime返回最后发送请求的时间getMaxInactiveInterval返回session对象的⽣存时间单位千分之⼀秒invalidate销毁session对象isNew每个请求是否会产⽣新的session对象removeAttribute删除指定名字的属性setAttribute设定指定名字的属性值5.pageContext对象(页⾯上下⽂ javax.servlet.jsp.PageContext)⽅法名说明forward重定向到另⼀页⾯或Servlet组件getAttribute获取某范围中指定名字的属性值findAttribute按范围搜索指定名字的属性removeAttribute删除某范围中指定名字的属性setAttribute设定某范围中指定名字的属性值getException返回当前异常对象getRequest返回当前请求对象getResponse返回当前响应对象getServletConfig返回当前页⾯的ServletConfig对象getServletContext返回所有页⾯共享的ServletContext对象getSession返回当前页⾯的会话对象6.application对象(应⽤程序 javax.servlet.ServletContext)⽅法名说明getAttribute获取应⽤对象中指定名字的属性值getAttributeNames获取应⽤对象中所有属性的名字,⼀个枚举getInitParameter返回应⽤对象中指定名字的初始参数值getServletInfo返回Servlet编译器中当前版本信息setAttribute设置应⽤对象中指定名字的属性值7.config对象(Servlet的配置信息 javax.servlet.ServletConfig)⽅法名说明getServletContext返回所执⾏的Servlet的环境对象getServletName返回所执⾏的Servlet的名字getInitParameter返回指定名字的初始参数值getInitParameterNames返回该JSP中所有的初始参数名,⼀个枚举8.page对象(当前JSP的实例,ng.object)它代表JSP被编译成Servlet,可以使⽤它来调⽤Servlet类中所定义的⽅法9.exception对象(运⾏时的异常,ng.Throwable)被调⽤的错误页⾯的结果,只有在错误页⾯中才可使⽤,即在页⾯指令中设置:<%@page isErrorPage=“true”%>Request(Javax.servlet.ServletRequest)它包含了有关浏览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数。
jsp内置对象实验报告JSP内置对象实验报告实验目的:通过实验,了解JSP内置对象的作用和用法。
实验步骤:1. 创建一个简单的JSP页面,命名为index.jsp。
2. 在index.jsp中使用JSP内置对象out,输出一段文本:"Hello, JSP!"。
3. 在index.jsp中使用JSP内置对象request,获取客户端传递的参数,并输出到页面上。
4. 在index.jsp中使用JSP内置对象session,存储用户登录信息,并在其他页面中获取并显示用户信息。
5. 在index.jsp中使用JSP内置对象application,存储全局变量,并在其他页面中获取并显示全局变量的值。
实验结果:1. 使用JSP内置对象out,成功在页面上输出了文本:"Hello, JSP!"。
这说明out 对象可以用来向页面输出内容。
2. 使用JSP内置对象request,成功获取客户端传递的参数,并在页面上显示了参数的值。
这说明request对象可以用来获取客户端的请求参数。
3. 使用JSP内置对象session,成功存储了用户登录信息,并在其他页面中获取并显示了用户信息。
这说明session对象可以用来存储用户的会话信息。
4. 使用JSP内置对象application,成功存储了全局变量,并在其他页面中获取并显示了全局变量的值。
这说明application对象可以用来存储全局变量。
结论:通过本次实验,我们了解了JSP内置对象的作用和用法。
out对象可以用来向页面输出内容,request对象可以用来获取客户端的请求参数,session对象可以用来存储用户的会话信息,application对象可以用来存储全局变量。
掌握了这些内置对象的用法,可以更加灵活地开发JSP页面,实现更丰富的功能。
希望通过本次实验,同学们能够更加熟练地运用JSP内置对象,提高自己的JSP开发能力。
JSP脚本中的九个内置对象JSP脚本中包含九个内置对象,这九个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化(由JSP页面对应的Servlet的_jspService()方法来创建这些实例)。
内置对象名所属类型有效范围说明称application javax.servlet.ServletContext application 该对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息config javax.servlet.ServletConfig page 该对象允许将初始化数据传递给一个JSP页面exception ng.Throwable page 该对象含有只能由指定的JSP“错误处理页面”访问的异常数据out javax.servlet.jsp.JspWriter page 该对象提供对输出流的访问page javax.servlet.jsp.HttpJspPage page 该对象代表JSP页面对应的Servlet类实例pageContext javax.servlet.jsp.PageContext page 该对象是JSP页面本身的上下文,它提供了唯一一组方法来管理具有不同作用域的属性,这些API在实现JSP自定义标签处理程序时非常有用request javax.servlet.http.HttpServletRequest request 该对象提供对HTTP请求数据的访问,同时还提供用于加入特定请求数据的上下文response javax.servlet.http.HttpServletResponse page 该对象允许直接访问HttpServletReponse对象,可用来向客户端输入数据session javax.servlet.http.HttpSession session 该对象可用来保存在服务器与一个客户端之间需要保存的数据,当客户端关闭网站的所有网页时,session变量会自动消失application (javax.servlet.ServletContext的实例)application对象代表Web应用本身,因此使用application来操作Web应用相关的数据。
application通常有如下两个作用:Ø在整个Web应用的多个JSP、Servlet之间的共享数据。
通常被定义为数据字典来使用。
通常在一处实现application.setAttribute(“name”,value);来定义一个变量,在JSP中使用application.getAttribute(“name”);获取值;在Servlet中使用一个实例的ServletContext 对象sc.getAttribute(“name”);获取值。
我们可以把application理解成一个Map对象,任何JSP、Servlet都可以把某个变量放入application中保存,并指出一个属性名;而该应用的其他JSP、Servlet就可以根据该属性名来得到这个变量。
由于application对象代表整个Web应用,所以只应该把Web应用的状态数据放入到application中。
Ø访问Web应用的配置参数,在web.xml中配置类似的参数,该标签是<web-app></web-app>下的子标签。
即<context-param><param-name>name</param-name><param-value>value</param-value></context-param>在JSP中可以通过application.getInitParameter(“name”);取得配置的参数,在Servlet中可以先实例一个ServletContext对象即:final javax.servlet.ServletContext application;然后就可以取值了,即:application = pageContext.getServletContext();application.getInitParameter("name");这里通常被用作普通java Web开发中数据库用户名,密码的获取时使用,因为在项目开发用的密码不一定和部署在服务器上的密码一致,但是把它写到这里便于修改这些有关项目的参数。
config (javax.servlet.ServletConfig的实例)config对象代表当前的JSP配置信息,但JSP页面通常无需配置,因此也就不存在配置信息,该对象在JSP页面用的比较少,但在Servlet中用处则相对较大,因为Servlet需要在web.xml文件中进行配置,可以指定配置参数。
但是如果说要为某个JSP配置一些参数的话,也是跟配置Servlet一样需要在web.xml中配置,也就说吧JSP当成Servlet配置<servlet><servlet-name>Configure</servlet-name><jsp-file>/getcontextparam.jsp</jsp-file><init-param><param-name>conn</param-name><param-value>connnn</param-value></init-param></servlet><servlet-mapping><servlet-name>Configure</servlet-name><url-pattern>/configure</url-pattern></servlet-mapping>其中这里“<jsp-file>/getcontextparam.jsp</jsp-file>”是表明把某个JSP配置成Servlet。
在地址栏中访问时要输入http://localhost:8080/test/configure(url-pattern中内容)在JSP中获取参数时使用config.getInitParameter("conn")即可。
exception (ng.Throwable的实例)exception对象是Throwable的实例,代表JSP脚本中错误和异常,是JSP异常机制的一部分。
在JSP脚本中无需处理异常,即使该异常是checked异常,事实上,JSP脚本包括的所有的可能出现的异常都可交给错误页处理。
异常处理结构如下。
try{//代码处理段}catch(Throwableexception){//异常处理段}其中代码处理段交给普通的JSP脚本,异常处理段是由异常处理界面负责的。
在异常处理段,可以看到有个异常对象,该对象就是异常处理对象exception。
看一下变异后的servlet 文件中有一段:if(_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);这表明JSP脚本和静态的HTML部分都会转换成_jspService()方法里的可执行性代码,既然如此,那么JSP就根本不需要处理异常,因为这一切都是属于try里面的内容。
一旦捕获到JSP页面的异常,并且该页面的page指令指定了errorPage属性(_jsp_page_context!=null),则请求forward到errorPage属性指定的页面,否则使用系统页面来输出异常信息。
如果把某一页面指定为errorPage页面,那么在编译成Servlet时他也就具有了exception 内置对象。
也就是说普通的页面不会有exception对象,错误页才会有。
在错误页面中可以通过<%=exception.getClass()%>//获取异常类型<%=exception.getMessage()%>//获取异常信息out (javax.servlet.jsp.JspWriter的实例)out对象代表一个页面输出流,通常用于在页面上输出变量值及常量。
一般在使用输出表达式的地方都可以使用out对象达到同样的效果。
out是个页面输出流,负责输出页面的内容,但是用out需要编写更多的代码。
<%= %>表达式的本质就是out.write(…);对于页面上的某个html标签来讲<table><tr></tr></table>如果使用了out即:<%out.println(“<table>”);out.println(“<tr>”);out.println(“</tr>”);out.println(“</table>”);%>page (javax.servlet.jsp.HttpJspPage的实例)page代表页面本身,通常没有太大的用处。
也就是Servlet中的this,其类型就是生成的Servlet类,能用page的地方就可以使用this。
pageContext (javax.servlet.jsp.PageContext的实例)该对象代表JSP页面的上下文,使用该对象可以访问页面中的共享数据。
使用pageContext 可以访问page、request、session、application范围的变量。
pageContext时PageContext 类的实例,它提供了两个方法访问四个范围的变量1getAttribute(ng.String name);2getAttribute(ng.String name, int scope)∙PageContext.PAGE_SCOPE:对应page范围--->1∙PageContext.REQUEST_SCOPE:对应request范围--->2∙PageContext.SESSION_SCOPE:对应session范围--->3∙PageContext.APPLICATION_SCOPE:对应application范围--->4与之相对应的也有两个对应的setAttribute()方法。