个人java学习路线-Jsp九大内置对象,常用标签,Listener监听器

介绍

jsp中的内置对象,是指Tomcat在翻译jsp页面成为Servlet源代码后,内部提供的九大对象,叫内置对象
            request:    请求对象
            response:    响应对象
            pageContext: jsp的上下文对象
            session:    会话对象
            application: ServletContext对象
            config:     ServletConfig对象
            out:        jsp输出流对象
            page:       指向当前jsp对象
            exception:  异常对象(需开启errorPage)

四大域对象

 pageContext     (PageContextImpl类),jsp的上下文对象        当前jsp页面范围内有效
 request         (HttpServletRequest类),请求对象            一次请求内有效
 session         (HttpSession类),会话对象                   一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
 application     (ServletContext类),ServletContext对象     整个web工程范围内都有效(只要web工程不停止,数据都在)

四个域在选择使用时遵循从小到大的顺序

取值赋值代码

<%
    pageContext.setAttribute("key", "pageContext");
    request.setAttribute("key", "request");
    session.setAttribute("key", "session");
    application.setAttribute("key", "application");
%>
pageContext域是否有值:  <%=pageContext.getAttribute("key")%><br>
request域是否有值:  <%=request.getAttribute("key")%><br>
session域是否有值:  <%=session.getAttribute("key")%><br>
application域是否有值:  <%=application.getAttribute("key")%><br>

jsp转发代码

<jsp:forward page="/xxx.jsp"></jsp:forward>

jsp中out输出和response.getWriter输出的区别

out.writer(“数据”)方法会将数据写入out缓冲区中
自动执行out.flush()操作会将out缓冲区中的数据追加写入到response缓冲区末尾
自动执行response刷新操作,把全部数据写给客户端

        response中表示响应,我们经常用于设置返回给客户端的内容(输出)
        out也是给用户做输出使用的

        一般统一使用out输出,避免打乱输出顺序(jsp底层源代码也是用out输出的)

        关于out的print()和write()方法
            out.writer()    输出字符串没有问题,输出其它会转换成ASCII码
            out.print()     输出任意数据都没有问题(都转换成字符串后调用write输出)

JSP常用标签

静态包含

什么时候用?
例如网页的头部和尾部所有页面都要用,那么可以单独做成一个jsp页面,然后要用的时候用静态包含引入

特点:
    1》静态包含不会翻译被包含的jsp页面
    2》静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出
 <jsp:include page="/include/footer.jsp">
     <jsp:param name="username" value="bbj"/>
     <jsp:param name="password" value="root"/>
 </jsp:include>

动态包含(几乎已淘汰)

特点:
    1》动态包含会把包含的jsp页面也翻译成为java代码
    2》动态包含底层代码使用如下,代码去调用被包含的jsp页面执行输出:
         org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/include/footer.jsp", out, false);
    3》动态包含还可以传递参数
 <%--
     动态包含
      <jsp:include page="/include/footer.jsp"></jsp:include>
 --%>

Listener监听器

1.javaWeb的三大组件之一,javaWeb的三大组件:Servlet程序,Filter过滤器,Listener监听器
2.Listener是Java EE的规范(接口)
3.作用:监听某种事务的变化,然后通过回调函数,反馈给客户(程序)去做一些相应的处理

4.很多监听器都被淘汰了,我们只需了解ServletContextListener监听器

ServletContextListener监听器:

1.可以监听ServletContext对象的创建和销毁(两个方法)

public interface ServletContextListener extends EventListener {
    
    

    //在ServletContext对象创建之后马上调用,做初始化
    void contextInitialized(ServletContextEvent var1);

    //在ServletContext对象销毁之后调用
    void contextDestroyed(ServletContextEvent var1);
}

2.使用步骤:
1》编写一个类去实现ServletContextListener
2》实现其两个回调方法
3》到web.xml中去配置监听器

web.xml配置

<!--配置监听器-->
<listener>
    <listener-class>com.personal.servlet.jsp.listener.MyServletContextListenerImpl</listener-class>
</listener>

监听器Java代码:

public class MyServletContextListenerImpl implements ServletContextListener {
    
    
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
    
    
        System.out.println("ServletContext对象被创建了");
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    
    
        System.out.println("ServletContext对象被销毁了");
    }
}

猜你喜欢

转载自blog.csdn.net/youxizaixian123/article/details/119883989