个人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对象被销毁了");
}
}