6、JSP内置对象
2013-04-01 19:49
417 查看
JSP有九个内置对象:
- Request ——请求对象
- Response—— 响应对象
- PageContext ——页面上下文对象
- Session ——会话对象
- Application ——应用程序对象
- Out ——输出对象
- Config ——配置对象
- Page ——页面对象
- Exception ——异常对象
out内置对象有println方法,它是对生成的html源代码换行,而不是浏览器显示中的换行,浏览器页面中的换行用<br>标签
重点内置对象:request,session,application
1、request和response
“request”对象代表的是来自客户端的请求,例如在form表单中填写的信息等,是最常使用的对象。它的方法使用较多的是getParameter、getParameterNames和getParameterValues,通过调用这几个方法来获取请求对象中所包含的参数的值。
“response”对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较的底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out”对象即可。
对于request,它的getParameter方法是getParameterValues方法的特例,表示请求的参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。
对于如下的页面:
result.jsp中:
values是一个字符串数组,打印出age和age1的内容,value1只打印出匹配的第一个值。
“response”对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织的方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out”对象即可。“response”一般是用在文件下载。
2、session对象:“session”对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。
- HTTP是无状态(stateless)协议;、Web Server对每个客户端请求都没有历史记忆;session用来保存客户端状态信息
三个jsp页面演示session值的传递:
3、application对象——负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等
4、out:“out”对象代表了向客户端发送数据的对象,与“response”对象不同,通过“out”对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out”对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out”对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。
5、config对象——提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获取Servlet初始化时的参数。
page对象——代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。
exception对象——代表了JSP文件运行时所产生的异常对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true" %>”的JSP文件中使用。
6、request、session、application比较
1)request请求对象:getAttribute,以对象形式返回特性名称的属性值。如果所给名称的属性不存在将返回空;setAttribute,设置
对于request2.jsp,如果使用<a href="request3.jsp">则点击链接时,request3.jsp显示null,如果request2.jsp使用<jsp:forward page="request3.jsp>这是请求转发,request3.jsp将显示request1.jsp中输入的名字。主要是看是不是在一次请求当中。
request的getParameter是客户端的请求信息,getAttribute则是服务器端以前通过setAttribute设置的信息,完全是服务器端的事情。
getAttribute与setAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取后一般需要进行向下类型转换,将属性值转换为真正地对象)。setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法;
request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端想要获取到客户端发送过来的数据,就需要使用getParameter方法获取。没有与getPArameter方法对应的setParameter方法。
request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器端向客户端返回一个响应,该请求对象就被销毁了;之后在向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存在的任何数据。
2)session对象也有getAttribute和setAttribute方法,session对象内数据的存活范围就是session对话的存活范围(只要浏览器不关闭,session对象就会一直存在),因此在同一个浏览器窗口中,无论向服务器端发送多少请求,session对象只有一个
3)application对象也有getAttribute和setAttribute方法,application 应用对象:存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器运行过程中,application对象只有一个。
4)request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内;session是在浏览器窗口的范围内;application则是在整个服务器的运行过程中。
利用application编写网页计数器:
7、关于<jsp:formard>转换为servlet,是使用了PageContext.forward方法来进行请求转发的
使用servlet来完成jsp:forward功能:
servlet
servlet中使用setAttribute主要是设置通过客户端传来的参数然后查询数据库等获得的数据,然后在传递到下一个页面进行展示:
8、application的一些方法(application是ServletContext的对象):getMajorVersion、getMinorVersion、getResource、getRealPath——用的比较多,返回资源的绝对路径
9、关于<input type="hidden" >在进行不同网页之间传递信息时,通常使用hidden标签,而不是使用session来保存,因为session比较消耗内存。
- Request ——请求对象
- Response—— 响应对象
- PageContext ——页面上下文对象
- Session ——会话对象
- Application ——应用程序对象
- Out ——输出对象
- Config ——配置对象
- Page ——页面对象
- Exception ——异常对象
out内置对象有println方法,它是对生成的html源代码换行,而不是浏览器显示中的换行,浏览器页面中的换行用<br>标签
重点内置对象:request,session,application
1、request和response
“request”对象代表的是来自客户端的请求,例如在form表单中填写的信息等,是最常使用的对象。它的方法使用较多的是getParameter、getParameterNames和getParameterValues,通过调用这几个方法来获取请求对象中所包含的参数的值。
“response”对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较的底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out”对象即可。
对于request,它的getParameter方法是getParameterValues方法的特例,表示请求的参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。
对于如下的页面:
<body> <form action="result.jsp" method="post"> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> age:<input type="text" name="age"> age1:<input type="text" name="age"> <input type="submit" value=" submit" > <input type="reset" value="reset" > </form> </body>
result.jsp中:
<body> <% String username = request.getParameter("username"); String password = request.getParameter("password"); out.println("username:" + username +"<br>"); out.println("password:" + password + "<br>"); String[] values = request.getParameterValues("age"); for(String value : values) { System.out.println(value); } String value1 = request.getParameter("age"); System.out.println(value1); %> </body>
values是一个字符串数组,打印出age和age1的内容,value1只打印出匹配的第一个值。
“response”对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织的方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out”对象即可。“response”一般是用在文件下载。
2、session对象:“session”对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。
- HTTP是无状态(stateless)协议;、Web Server对每个客户端请求都没有历史记忆;session用来保存客户端状态信息
三个jsp页面演示session值的传递:
session1.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'session1.jsp' starting page</title> </head> <body> <form action="session2.jsp"> 姓名:<input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html> session2.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'session2.jsp' starting page</title> </head> <body> <% String name = request.getParameter("username"); session.setAttribute("logName",name); %> 你的名字:<%= name %>已经写入session <a href="session3.jsp">check</a> </body> </html> session3.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'session3.jsp' starting page</title> </head> <body> <% String yourName =(String) session.getAttribute("logName"); if(yourName == null) { %> 你还没有登录 <% } else { %> "<%= yourName %>"已经登录 <% } %> </body> </html>
3、application对象——负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等
4、out:“out”对象代表了向客户端发送数据的对象,与“response”对象不同,通过“out”对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out”对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out”对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。
5、config对象——提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获取Servlet初始化时的参数。
page对象——代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。
exception对象——代表了JSP文件运行时所产生的异常对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true" %>”的JSP文件中使用。
6、request、session、application比较
1)request请求对象:getAttribute,以对象形式返回特性名称的属性值。如果所给名称的属性不存在将返回空;setAttribute,设置
request1.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'request1.jsp' starting page</title> </head> <body> <form action="request2.jsp"> username:<input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html> request2.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'request2.jsp' starting page</title> </head> <body> <% String username = request.getParameter("username"); %> username:<%= username %> <% request.setAttribute("username",username); %> <%-- <jsp:forward page="request3.jsp"></jsp:forward> --%> <a href="request3.jsp">request3.jsp</a> </body> </html> request3.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'request3.jsp' starting page</title> </head> <body> <% String username =(String) request.getAttribute("username"); %> <%= username %> </body> </html>
对于request2.jsp,如果使用<a href="request3.jsp">则点击链接时,request3.jsp显示null,如果request2.jsp使用<jsp:forward page="request3.jsp>这是请求转发,request3.jsp将显示request1.jsp中输入的名字。主要是看是不是在一次请求当中。
request的getParameter是客户端的请求信息,getAttribute则是服务器端以前通过setAttribute设置的信息,完全是服务器端的事情。
getAttribute与setAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取后一般需要进行向下类型转换,将属性值转换为真正地对象)。setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法;
request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端想要获取到客户端发送过来的数据,就需要使用getParameter方法获取。没有与getPArameter方法对应的setParameter方法。
request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器端向客户端返回一个响应,该请求对象就被销毁了;之后在向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存在的任何数据。
2)session对象也有getAttribute和setAttribute方法,session对象内数据的存活范围就是session对话的存活范围(只要浏览器不关闭,session对象就会一直存在),因此在同一个浏览器窗口中,无论向服务器端发送多少请求,session对象只有一个
3)application对象也有getAttribute和setAttribute方法,application 应用对象:存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器运行过程中,application对象只有一个。
4)request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内;session是在浏览器窗口的范围内;application则是在整个服务器的运行过程中。
利用application编写网页计数器:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'application.jsp' starting page</title> </head> <body> <% if(application.getAttribute("counter") == null) application.setAttribute("counter","1"); else { String strnum = null; strnum = application.getAttribute("counter").toString(); int icount = 0; icount = Integer.valueOf(strnum).intValue(); icount++; application.setAttribute("counter",Integer.toString(icount)); } %> 你是第<%= application.getAttribute("counter") %>位访问者! </body> </html>
7、关于<jsp:formard>转换为servlet,是使用了PageContext.forward方法来进行请求转发的
使用servlet来完成jsp:forward功能:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% 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 'myforward.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="MyForwardServlet"> username<input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
servlet
import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyForwardServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); req.setAttribute("username", username); RequestDispatcher rd = req.getRequestDispatcher("myResult.jsp"); rd.forward(req, resp); } }
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% 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 'myResult.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> username:<%= request.getAttribute("username") %> </body> </html>
servlet中使用setAttribute主要是设置通过客户端传来的参数然后查询数据库等获得的数据,然后在传递到下一个页面进行展示:
import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyForwardServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); req.setAttribute("username", username); List<String> list = new ArrayList<String>(); for(int i = 0;i < 100;i++) { list.add(String.valueOf(i)); } req.setAttribute("list", list); RequestDispatcher rd = req.getRequestDispatcher("myResult.jsp"); rd.forward(req, resp); } }
8、application的一些方法(application是ServletContext的对象):getMajorVersion、getMinorVersion、getResource、getRealPath——用的比较多,返回资源的绝对路径
9、关于<input type="hidden" >在进行不同网页之间传递信息时,通常使用hidden标签,而不是使用session来保存,因为session比较消耗内存。
相关文章推荐
- JSP内置对象
- JSP内置对象
- jsp内置对象
- JSP内置对象(9个常用的内置对象)
- jsp内置对象
- JSP内置对象(二)——response对象
- JSP内置对象(二)Session对象
- Jsp内置对象
- JSP内置对象(3)-----session对象
- JSP内置对象(上)
- JSP内置对象(二)初学者必看
- JSP内置对象
- 四、JSP内置对象(上)
- JSP内置对象(9个常用的内置对象)
- JSP内置对象(9个常用的内置对象)
- Jsp学习——Jsp内置对象
- JSP内置对象(9个常用的内置对象)
- JSP内置对象
- JSP内置对象(三)——session对象
- JSP内置对象(主要指page、request、session、application)