Jsp 之 九大对象,七大动作,三大指令,四大作用域

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013987258/article/details/83030180

Jsp九大内置对象:


        request                       HttpServletRequest                    
        response                    HttpServletResponse
        session                       HttpSession
        application                  ServletContext
        out                              JspWriter
        pageContext               PageContext
        page                           Object(代表当前对象)
        config                          ServletConfig
        exception                    Throwable


1>out 向客户端输出数据,字节流.如out.print(" dgaweyr");
 
2>request 接收客户端的http请求.
String getParameter(String name):得到表单参数名name的值.
String[] getParameterValues(String name):(得到String[]复选框时常用).
setAttribute(String name,Object obj):设置属性名为name,属性值为obj.
getAttribute(String name);得到属性值.
 
3>response:封装jsp产生的回应,然后发送到客户端以响应客户的请求.重定向跳转任意界面.(服务器跳转)
addCookie(Cookie cookie):
sendRedirect("/wel.jsp"):跳转到指定页面
 
4>session:用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据. session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止.它是HttpSession类的实例.
setAttribute(String name,Object obj):设置属性名为name,属性值为obj.
getAttribute(String name):得到属性值.
 
5>application对象:实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问.服务器的启动和关闭决定了application对象的生命.它是ServletContext类的实例.
 
6>page对象代表jsp这个实体本身,即当前页面有效.相当于java中的this.
数据范围:page<session<application
 
7>.exception:代表运行时的异常.
在会发生异常的页面加入指令:<%@ page errorPage="处理错误的页面.jsp"%>
在处理异常的页面写入:<%@ page isErrorPage="true"%>
 
8>.pageContext对象 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext.
 
9>.config jsp对应的servlet的配置,可以得到web.xml中的初使化参数.
 

application,session,request,pageContext的区别:
一个项目中session尽量少用几个,因为过多的session会影响程序的执行效率.它主要用于保存登录信息(用户信息,权限,资源)即频繁使用的信息.
application: 用于多个浏览器之间共享数据,多个用户共享该对象,可以做计数器.它的用法与session完全一样.
数据范围:
application(服务器关闭时失效)>session(浏览器关闭时失效)>request(只能用于两个跳转页面之间)>pageContext(用于本页面)


jsp七大动作:


一:include 动态包含(分别编译):
用jsp:include动作实现<jsp: include page="included.jsp" flush="true" />
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。flush属性: 用true ,表示页面可刷新。默认为false;
 
二:useBean动作(jsp页面使用javaBean的第二种方式):
<jsp:useBean id="u" class="cn.itcast.domain.User" scope="作用范围(page/request/session/application)"/>
作用域默认为page(本页面有效).

三:getProperty动作(name为useBean动作中的id).
从对象中取出属性值:<jsp:getProperty property="username" name="u"  />

四:setProperty动作(name为useBean动作中的id):
为对象设置属性值:<jsp:setProperty property="username" name="u" value="值" />
为对象设置属性值:<jsp:setProperty property="username" name="u" param="username"/>
(param="username" 相当于 value=<%=request.getParameter("username")%>)
 
注:
<jps:setProperty name = "u"  property = "*"/>

该形式是设置Bean 属性的快捷方式.在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。

property = "*"表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。  

五:param动作(传递参数)):
到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值
<jsp:include page="转向页面的url" >       (注意这里的url没有项目名即contextPath)
           <jsp:param   name="参数名1" value="参数值1">
           <jsp:param   name="参数名2" value="参数值2">
           ...........
 </jsp:include>
或:
<jsp:forward page="转向页面的url" >    (注意这里的url没有项目名即contextPath)
           <jsp:param   name="参数名1" value="参数值1">
           <jsp:param   name="参数名2" value="参数值2">
           ...........
</jsp:forward>
 
六:forward动作:
跳转页面:<jsp:forward page="login.jsp" />
 
七:plugin动作:<jsp:plugin>:用于指定在客户端运行的插件
 
JSP三大指令:


一:page 指令:
1.指定页面编码.例:
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
2.导入包,例:
<%@ page import="java.util.*,java.text.*" %>.

二:include 指令
静态包含(统一编译):
<%@ include file="included.jsp"%>
 
三:taglib 指令
引用核心标签库:
引入JSTL的标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
引入EL函数库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 
Jsp中的静态包含与动态包含区别:
动态include(<jsp: include page="included.jsp"/>)
静态include(<%@ include file="included.jsp"%>)
1. 静态include的结果是把其他jsp引入当前jsp,两者合为一体,可以达到数据的共享即可以说是统一编译的,而
动态include的结构是两者独立的,直到输出时才合并即为分别编译的.
2.动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都由自己创建,而静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.
3.动态包含总是检查被包含页面的变化,静态包含不一定检查被包含页面的变化.
4.动态包含可带参数,静态包含不能带参数.如(<jsp: include page="included.jsp">放入参数</jsp:include>);
 

JSP四大作用域:

四个域对象:

                        pageContext      page域                              

                        request          request域

                        session          session域

                        application       context域

1)域对象作用:

      保存数据  和 获取数据 ,用于数据共享。

2)域对象方法:

      setAttribute("name",Object) 保存数据

      getAttribute("name")  获取数据

      removeAttribute("name") 清除数据

 3)域对象作用范围:

       page域: 只能在当前jsp页面中使用(当前页面)

       request域: 只能在同一个请求中使用(转发)

       session域: 只能在同一个会话(session对象)中使用(私有的)

       context域: 只能在同一个web应用中使用。(全局的)

         1、如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

        2、如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过            程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

        3、如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,

        4、如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。

*****指定域获取变量值:  ${pageScope.name} 

*****域范围: pageScope / requestScope / sessionScope / applicationScope

猜你喜欢

转载自blog.csdn.net/u013987258/article/details/83030180