• JSP隐含对象


    1、out隐含对象 (输出对象)
    直接用于在JSP页面输出内容
    javax.servlet.jsp.JspWriter(抽象类) 继承自java.io.Writer

    JSP中的out对象最终被转化成servlet中的JspWriter对象

    2、request内置对象 (请求对象)
    用于获取Http请求相关信息,比如查询字符串,表单数据
    javax.servlet.http.HttpServletRequest

    3、page对象 (页面对象)
    表示对应单个JSP页面, servlet中如下声明:
    final java.lang.Object page = this; // page表示当前的servlet对象,并且是Object类型

    4、pageContext (页面上下文)
    final javax.servlet.jsp.PageContext pageContext;
    页面上下文可以使用setAttribute(String, String) 设置当前页面中所存储的信息,页面间不共享数据
    使用getAttribute(String)方法获取在页面上下文中设置的属性

    5、session对象(会话对象)
    会话对象可以保存用户的基本信息, 如一个用户登录到一个网站,该网站可以记录此用户的信息,并且用户信息在网站的所有页面间
    共享
    会话信息存储在服务器端(数据库,文件系统,WEB容器本身实现的session存储)
    在A页面中使用session对象的setAttribute(String, String) 方法存储数据,能在其他页面中直接使用
    session.getAttribute(String)方法获取数据

    javax.servlet.http.HttpSession session = null;



    对Tomcat WEB容器来说,一个会话的持有时间为30分钟(会话超时时间,单位为分钟)
    在conf目录的web.xml

    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>



    多用于用户登录时存储用户信息,或者购物车等需要多页面间共享单个用户数据的情况

    6、application对象(应用程序对象)
    整个应用都能使用的,不限于某个用户。所有用户都能访问的数据应该放在application对象中
    同样有setAttribute(String, String)和getAttribute(String)方法
    final javax.servlet.ServletContext application;

    7、response对象(响应对象)
    response.sendRedirect("url") 重定向到某个页面

    8、config对象(servlet配置信息)
    final javax.servlet.ServletConfig config;
    为JSP页面配置servlet

    <servlet>
    <servlet-name>configServlet</servlet-name>
    <jsp-file>/config.jsp</jsp-file><!-- 由哪个JSP页面转化成的servlet -->
    <init-param> <!-- servlet初始化参数 -->
    <param-name>configName</param-name>
    <param-value>myValue</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!-- 在web容器启动时被初始化 -->
    </servlet>
    <servlet-mapping>
    <servlet-name>configServlet</servlet-name>
    <url-pattern>/config</url-pattern>
    </servlet-mapping>


    在config.jsp页面中由config对象的getInitParameter()获取初始化参数

    9、exception对象(异常对象)
    java.lang.Throwable exception =

    如果想要使用exception对象,则使用该对象的页面(错误处理页)必须在page指令中声明isErrorPage="true"

    10、隐含对象的作用范围
    1、pageScope 只能作用于页面 page, out, pageContext
    2、requestScope 作用于Http请求,到了另外一个页面,request失效 request
    由页面A转发到页面B,则request同时作用于页面A和页面B
    3、sessionScope session作用域, 用于所有页面 session
    4、applicationScope 应用程序作用域,作用于整个应用程序的所有用户的所有页面 application

    javax.serlvet.jsp.PageContext
    PageContext.PAGE_SCOPE
    PageContext.REQUEST_SCOPE
    PageContext.SESSION_SCOPE
    PageContext.APPLICATION_SCOPE



    11、Cookie
    保存网站信息到客户端浏览器, 这个数据可以轻易地被获取到
    JSP中,通过Cookie对象保存信息,key-value
    通过response.addCookie(Cookie)添加cookie到浏览器端

    通过request.getCookies()方法获取由客户端发送过来的Cookie对象数组,如果没有cookie,则返回 null
    所以服务端需要进行null判断


    1)cookie信息是在浏览器中的,但并不是所有的浏览器都支持cookie功能;

    2)cookie对象不能单独使用,必须和request对象或response对象结合使用;

    3)不同的浏览器中存储的cookie不是通用的。例如:IE存储的cookie只有IE自己使用;

    4)存储在浏览器中的cookie对任何Web服务器都是开放的,所以写入的cookie可能被其它网页读取或覆盖掉

    转发和重定向:
    转发:
    WEB容器内部由一个JSP页面转发到另外一个JSP页面,客户端地址栏URL不会发生改变

    request.getRequestDispatcher("url").forward(request, response);


    转发时指定url前可以加"/", 转发中url相对于ContextPath

    转发可以用request的setAttribute给目标页面传递参数,目标页面通过request.getAttribute()方法获取传递过来的参数

    重定向:
    实际是告诉浏览器由一个页面跳转到另外一个页面,客户端浏览器地址栏会发生改变,显示出目标地址
    HTTP Response Status Code: 状态码为302
    response.sendRedirect("url");
    在重定向中,URL相对于ContextPath来重定向, 所以不需要在url前加“/”
    http://localhost:8080/JSPInnerObject/home.jsp
    如果加了“/”, http://localhost:8080/home.jsp 404 Not Found

    重定向如果想要传递参数到目标url,则需要使用查询字符串
    response.sendRedirect("http://localhost:8080/login.jsp?name=aa");

  • 相关阅读:
    python常用函数 A
    从__name__=='__main__'说到__builtin__
    python常用魔法函数
    MySQL内核:InnoDB存储引擎 卷1
    “胡”说IC——菜鸟工程师完美进阶
    恶意代码分析实战
    转折点:移动互联网时代的商业法则
    大型网站系统与Java中间件实践
    《Node.js实战(双色)》作者之一——吴中骅访谈录
    网站运维技术与实践
  • 原文地址:https://www.cnblogs.com/A0926/p/5443796.html
Copyright © 2020-2023  润新知