javaweb ---jsp-作用域-错误页面待完成

  1. Web组件(Servlet/JSP)的交互:
       Web组件之间的跳转,数据共享.
  2. 不加斜杠表示   不能继承上下文路径,表示相对当前servlet路径;有/表示项目的根路径;以后加/
  3. 请求转发:
       从Servlet1,请求转发到Servlet2.
       Servlet1完成一部分的功能,再跳转到Servlet2,继续完成剩下的功能.
    语法:
       request.getRequestDispatcher(String path).forward(request,response);
       参数:path,表示跳转的目标的路径(资源的名称).
       注意:别忘了forward.

    --------------------------------------------------------------
    分析请求转发的特点:
       1:浏览器地址栏不发生改变,
       2:请求转发只发送一个请求.(但是, 请求对象有2个)RequestFacade,ApplicationHttpRequest

    实验证明:同一个response对象,在servlet2响应后,servlet1就不响应了,但servlet1和servlet2的out.write后的还能执行

       3:共享同一个请求中的数据.
       4:最终响应给浏览器的由Servlet2来决定.
       5:请求转发不能跨域访问,只能跳转到当前应用中的资源.
       6:请求转发可以访问WEB-INF目录中的资源.

    啊啊
    请求servlet1之前【】org.apache.catalina.connector.RequestFacade@3b1a81be
    请求servlet1之前【】org.apache.catalina.connector.ResponseFacade@3f250205
    啊啊
    org.apache.catalina.core.ApplicationHttpRequest@3b1db3ba
    请求servlet2之前【】org.apache.catalina.core.ApplicationHttpRequest@3b1db3ba
    请求servlet2之前【】org.apache.catalina.connector.ResponseFacade@3f250205
    请求servlet2之后【】org.apache.catalina.core.ApplicationHttpRequest@3b1db3ba
    请求servlet2之后【】org.apache.catalina.connector.ResponseFacade@3f250205
    关闭out之后【】
    请求servlet1之后【】org.apache.catalina.connector.RequestFacade@3b1a81be
    请求servlet1之后【】org.apache.catalina.connector.ResponseFacade@3f250205
    关闭out之后
    

    URL重定向:
    语法:
      response.sendRedirect(String url);
      参数:url,表示目标资源地址
    --------------------------------------------------------------
    分析URL重定向的特点:
       1:浏览器地址栏发生改变,从/redirect/s1,变成目标地址(/redirect/s2).
       2:URL重定向发了两次请求.但是两次请求响应是同一个request对象和同一个response对象,redirect1执行完才重定向
       3:因为URL重定向是两次独立的请求?所以不共享请求中的数据.
       4:最终响应给浏览器的由Servlet2来决定(把目标地址拷贝到浏览器地址栏,敲回车).
       5:URL重定向能跨域访问,可以访问其他应用中的资源.
       6:URL重定向不能访问WEB-INF目录中的资源.

  4. 李
    请求redirect1之前【】org.apache.catalina.connector.RequestFacade@1cea71b6
    请求redirect1之前【】org.apache.catalina.connector.ResponseFacade@e079e52
    请求redirect1之后【】org.apache.catalina.connector.RequestFacade@1cea71b6
    请求redirect1之后【】org.apache.catalina.connector.ResponseFacade@e079e52
    关闭out之后
    null
    请求redirect2之前【】org.apache.catalina.connector.RequestFacade@1cea71b6
    请求redirect2之前【】org.apache.catalina.connector.ResponseFacade@e079e52
    请求redirect2之后【】org.apache.catalina.connector.RequestFacade@1cea71b6
    请求redirect2之后【】org.apache.catalina.connector.ResponseFacade@e079e52

  5. 如果需要跨域访问,避免表单的重复提交,只能使用URL重定向.

  6. Servlet的三大作用域对象:
    目的:共享数据.
    request:        每一次请求都是一个新的request对象,如果在Web组件之间需要共享同一个请求中的数据,只能使用请求转发.
    session:         每一次会话都是一个新的session对象,如果需要在一次会话中的多个请求之间需要共享数据,只能使用session.
    application:    应用对象,Tomcat启动到Tomcat关闭,表示一个应用,在一个应用中有且只有一个application对象.作用于整个Web应用,可以实现多次会话之间的数据共享.
    ---------------------------------------------------------------
         对象名称                               对象的类型
    ---------------------------------------------------------------
         request                                    HttpServletRequest
         session                                     HttpSession
         application(servletContext)           ServletContext
    ---------------------------------------------------------------
    作用域对象如何共享数据:
    ---------------------------------------------------------------
    1:设置作用域中的共享数据.
       作用域对象.setAttribute(String name,Object value);
    2:获取作用域中的共享数据.
       Object value   = 作用域对象.getAttribute(String name);
    3:删除作用域中的指定的共享数据.
       作用域对象.removeAttribute(String name);

    注意:在哪一个作用域中设置共享数据,就只能从该作用域中取出数据.     

  7. ServletContext接口:表示Web应用对象,(从Tomcat启动到Tomcat关闭之间,应用中有且只有一个ServletContext对象,而且是在Tomcat启动的时候就创建的在JSP中把该对象称之为:application)
    ------------------------------------------------------------------------------------
    如何获取ServletContext对象:
       方式1:在Servlet类中: super.getServletContext();必须servlet子类
       方式2:通过请求对象来获取: request.getServletContext(); 该方法是从Tomcat7开始存在的.不许servlet子类,只要用request对象即可调用
       方式3:通过session对象来获取:request.getSession().getServletContext();
       注意:无论是哪一种方式,获取的都是同一个ServletContext对象.
    常用的方法:
       1:String getRealPath(String path):根据一个资源的相对于Web根路径的路径,获取它的绝对路径. (伪路径,直接拼接字符串而已拼接到相对路径的磁盘路径)  在文件上传或下载用到C:\work\workSpace\lihj-workSpace1809\javaWeb\webapp\index.html
        String realPath = super.getServletContext().getRealPath("/WEB-INF/in.html");    
       2:String getContextPath():返回当前响应的上下文路径<Context path="XXXX"/>:
    --------------------------------------------------------------------------------
    全局初始化参数.
    获取全局的初始化参数,只能使用以下的两个方法:
        String getInitParameter(String name):获取指定名称的全局初始化参数.
        Enumeration<String> getInitParameterNames():获取所有全局的初始化参数的名字.

    注意:
    ServletConfig接口中的获取初始化参数的方法,只能获取当前Servlet自身的初始化参数,不能获取全局的初始化参数.
    ServletContext接口中的获取初始化参数的方法,只能获取全局的初始化参数,不能获取局部的初始化参数.

  8. JSP:Java Server Page, Java的动态服务页面

    JSP的基本语法:    
        1、JSP的注释:
         作用:注释Java脚本代码
         语法:<%--这是JSP注释--%>
        2、JSP中的Java脚本片段:
         作用:书写Java代码逻辑
         语法: <% 语句1; 语句2; %>
         原理:其中的语句会原封不动的被服务器翻译到对应的Servlet的_jspService方法中。
         3、JSP的Java脚本表达式:
         作用:输出数据到页面上
         语法:<%=表达式%>(实际上就是调用输出流打印到页面上) out.print(表达式);
         4、JSP的声明:
         作用:定义类的成员
         语法:<%! Java代码 %>
         原理:其中的语句会原封不动的被服务器翻译到对应Servlet类中,作为成员变量和方法.

    JSP的标准指令:设定JSP网页的整体配置信息
    特点:
      1:并不向客户端产生任何输出;
      2:指令在JSP整个文件范围内有效;
      3:为翻译阶段提供了全局信息;
    每一个JSP都得有page指令,一般放在JSP的第一行.

    指令的语法
    <%@ 指令名称 属性=属性值... %>

    -------------------------------------------
    JSP的三大指令:
       1):page
       2):include
       3):taglib
    ------------------------------------------

    page指令:
    作用:定义JSP页面的各种属性
    属性:
    language:指示JSP页面中使用脚本语言。默认值java,目前只支持java。
    extends:指示JSP对应的Servlet类的父类。不要修改。
    *import:导入JSP中的Java脚本使用到的类或包。(如同Java中的import语句)
    JSP引擎自动导入以下包中的类:
    javax.servlet.*    
    avax.servlet.http.*
    javax.servlet.jsp.*
    注意:一个import属性可以导入多个包,用逗号分隔。
    *sessioin:指示JSP页面是否创建HttpSession对象。默认值是true,创建req.getSession(),可用session
    *buffer:指示JSP用的输出流的缓存大小.默认值是8Kb。
    autoFlush:自动刷新输出流的缓存。
    isThreadSafe:指示页面是否是线程安全的(过时的)。默认是true。
        true:不安全的。
        false:安全的。指示JSP对应的Servlet实现SingleThreadModel接口。
    *errorPage:指示当前页面出错后转向(转发)的页面。值是:跳轉到的錯誤頁面的path
        目标页面如果以"/"(当前应用)就是绝对路径?或同級下資源名
    配置全局错误提示页面:
    web.xml
    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.jsp</location>
    </error-page>
    <error-page>
    <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
    *isErrorPage:指示当前页面是否产生Exception对象。為true才可拿到Exception,同session
    *contentType:指定当前页面的MIME类型。作用与Servlet中的response.setContentType()作用完全一致
    *pageEncoding:通知引擎读取JSP时采用的编码(因为要翻译)等价于resp.setCharacterEncoding("UTF-8");
        还有contentType属性的作用。
    *isELIgnored:是否忽略EL表达式。${1+1}。默认值是false。         

    request                               HttpServletRequest                      请求对象,一个请求就一个对象
    response                            HttpServletResponse                    响应对象
    session                                HttpSession                                     会话对象,一个会话就一个session对象
    pageContext                     PageContext                                   页面对象,一个页面一个对象
    exception                         Throwable                                       异常对象
    application                        ServeltContext                                web应用对象,一个应用要给ServeltContext
    config                                 ServletConfig                                   当前Servelt的配置信息对象
    out                                      JspWriter                                         输出流对象
    page                                    Object                                              页面对象,一个页面就是一个page对象

    JSP的四大作用域:
    作用域对象就只能在自己的作用范围之内共享数据.

    pageContext(page)      PageContext                                  当前JSP的作用域对象
    request                           HttpServletRequest                     当前请求的作用域
    session                           HttpSession                                   当前会话的作用域
    application                    ServletContext                              当前Web应用的作用域

  9. jsp 常用动作元素
    <jsp:forward page="要跳转资源路劲">     :jsp页面的请求转发操作
        <jsp:param value="参数值" name="参数名"/> :  给请求转发设置参数
    </jsp:forward>

     

  10. 页面包含
    静态包含:
    语法:
    <%@include file="要包含的资源路径"%>
    特点:
     编译成一个Servelt,把包含的jsp中内容直接拼接到主的页面上
    (不能带参数)
    动态包含
    语法:
    <jsp:include page="要包含的资源路径”>
        <jsp:param value="xiaoming" name="name"/>
    </jsp:include>
    特点:
    会生成各自独立的Servelt,然后再访问的时候才去动态的包含进去
    ------------------------------------------------------------------
    如何选择包含:
    如果需要在包含过程带参数就使用动态包含,其他都可以,使用静态可以提高渲染的速度(性能)

     

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值