JSP的九大内置对象以及四大作用域

什么是内置对象?

  • 内置对象:在jsp页面中不需要通过new关键字创建的对象,直接可以使用的对象。

1.request:请求对象,包含客户端的请求信息

  1. 需要在jsp中创建一个表单,用于demo
<form action="page4.jsp">
  		用户名:<input type="text" name="username"/><br/>
  		<input type="checkbox" name="hob" value="篮球">篮球
  		<input type="checkbox" name="hob" value="足球">足球
  		<input type="checkbox" name="hob" value="羽毛球">羽毛球
  		<input type="checkbox" name="hob" value="游泳">游泳
  		<input type="submit" value="提交"/>
  </form>
  1. request对象常用的方法
  • 获取当前资源的根路径
request.getContextPath()
  • 获取客户端的请求地址
request.getRemoteAddr()
  • 获取客户端请求资源路径
request.getRequestURI()
  • 获得表单提交过来的数据
request.getParameter("参数名")
  • 获取表单提交过来的数据集合
 String[] s = request.getParameterValues("参数名");
  • 解决request获得表单提交数据出现中文乱码的问题 我们需要打开tomcat中的conf目录,编辑server.xml,在Connector标签中加上URIEncoding="UTF-8"即可。

###2.response:封装jsp的响应

  • response的常用方法
<!-- response对象 -->
   <%
   		//用于向页面输出信息
        PrintWriter pw = response.getWriter();
   		pw.println("hello,response");
   
   		if(s.length>2)
   			//页面重定向
   			response.sendRedirect("sucess.jsp");
   %>

3.session:用于长期存储用户信息保持会话的对象

  1. 向session中添加信息
<!-- session对象 -->
   <%
   		//向session中添加信息
   		session.setAttribute("uname",name);
   %>
  1. 在另一个jsp页面中获取session值
请求成功,欢迎你:<%String name = session.getAttribute("uname").toString();
    out.println(name);
  %>  
  <a href="page5.jsp">page5.jsp</a>

4.application:用于用户之间共享的数据对象,它开始于服务器的启动,直到服务器的关闭

  1. 向application中添加信息
//向application中添加信息
application.setAttribute("参数名",值);
  1. 在另一个jsp页面中获取值
application.getAttribute("参数名");

除此之外,我们可以继续在其他的页面获取到这个值,即使我们关闭当前浏览器,然后用另外一个浏览器打开,还能获取到application的值。对比request,session可以看到,当我们关闭当前浏览器,打开一个新的连接的时候,利用session和request获取到的值都已经丢失,而application的值还存在,所以说只要服务器不断开连接这个值就一直存在。

  1. application的其他方法
//获得服务器引擎信息
String info = application.getServerInfo();

5.out:从response中获取的的字符打印流(PrintWriter)对象,用于向页面输出信息

  • out实例:实现9*9乘法表
<%
  	  //完成一个九九乘法表,页面输出,java实现
  	  String[] colors = {"red","green","blue"};
  	  for(int i=1;i<10;i++){
  		  for(int j=1;j<=i;j++){
  		      out.print("<font color="+colors[j%3]+">"+j+"*"+i+"="+(i*j)+" "+"</font>");  
  		  }
  		  out.println("<br>");
  	  }
  	%>

6.pageContext:提供对jsp页面所有对象的信息的访问

7.page:类似于我们java中对象的this的引用

8.exception:异常对象,当页面中发生异常包装了所有异常信息的对象

9.config:获取当前web.xml配置信息的对象

#jsp内置对象的四大作用域

  1. pageContext:当前页,存储在pageContext中的数据默认只能在当前页面访问和使用;
  2. requeset:只能在一次请求中保存(如果需要持续保存,则需要请求转发,将request继续传递);
  3. session:能够在整次会话中都能保存,只要在session的有效时间之内,并且浏览器未关闭的情况下;
  4. application:能够在应用程序级别保存数据,即使客户端浏览器被关闭,都能长期有效,并且所有用户之间都能够共享数据。除非服务器停止。

请求转发和重定向

  1. 请求转发:发生在服务器端的跳转,客户端只发送一次请求,其他请求过程,由服务器完成,在客户端地址栏中显示的客户端发送的请求路径,并且请求转发可以将请求(request)对象继续传递。
request.serAttribute("参数名","值");
request.getRequestDispatcher("请求地址").forward(request,response);
  1. 发生在客户端的请求,客户端发送多次请求,寻找对应的资源,在客户端地址栏显示的是客户最后一次请求的地址,重定向无法将请求(request)继续传递。
resposne.sendRedirect("请求的地址")

特要说明的是:如果我们将参数放在request内置对象中进行传递,那么我们只能采用请求转发的方式,因为请求转发只发生一次请求,而重定向会发送多次请求,而request对象的值,只能在一次请求中进行传递,所以,只能是请求转发的方式。而且,请求转发之后网页栏中显示的是发送请求的页面的地址,重定向显示的是最后一次请求的地址,而且request对象丢失。

转载于:https://my.oschina.net/u/2968127/blog/812439

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值