JSP重难点详解

一、Page指令,常用基本属性

<%@ page contentType="text/html;charset=UTF-8" language="java"  import="java.util.Date" session="false" buffer="none" errorPage="/error.jsp" isErrorPage="true" pageEncoding="UTF-8" %>

【1】import属性

导入需要使用到的包

【2】session属性

JSP会被jsp引擎翻译为Servlet,本质上JSP还是Servlet。session属性默认为true,表示访问JSP页面,引擎便会在Servlet对象中创建Session对象。设置为false,则表示不会自动创建Session对象,只有调用request.getSession()才会创建Session对象。设置为true,可能会导致不必要的空间浪费。如果确定jsp中不需要session可以设为false。

【3】buffer属性

buffer表示缓冲区大小,设置为none表示,没有缓冲区。没有缓存。

【4】errorPage属性

errorPage表示当页面出现错误的时候,跳转到该界面上。提高用户体验。

错误界面的跳转,建议在web.xml中设置。这样就可以不需要每个界面都去书写errorPage属性。

在web-app标签内书写,以下内容

<error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/500error.jsp</location>
</error-page>

error-code表示错误代码

location表示发生错误,跳转界面路径

【5】isErrorPage

如果设置此属性为true,翻译过来的servlet中将含有Exception隐式对象,其中封装的就是上一个页面中抛出的异常对象。

<%=exception.getMessage()%> 查看错误信息

使用exception对象,必须将isErrorPage设置为true。

【6】pageEncoding

服务器翻译jsp时使用的编码集。如果想防止jsp乱码,应该保证文件的保存编码jsp翻译成servlet用的编码以及输出到页面中的编译三者完全一致。即JSP页面保存到磁盘的编码格式要与将磁盘上的JSP翻译成Servlet的编码格式保持一致。(底层编码格式)。

【7】注意点

page指令可以放在任意行,也可以写多个page指令。

二、JSP九大内置对象

当一个jsp页面在被访问的时候,会由jsp翻译引擎翻译为一个servlet文件去执行,向页面中输出数据。

大家可以去 [Tomcat所在目录]\work\Catalina\localhost\[项目名称]\org\apache\jsp\...中查看翻译的Servlet

翻译的Servlet继承HttpJspBase类和实现JspSourceDependent接口。

以下是Servlet中的内置对象

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;

以及_jspService()方法中的 request,  response对象

从以上内置对象便可知道分别代表的对象

page代表servlet的对象
response

代表response的对象 

request代表request的对象
config代表servletconfig的对象
application代表servletcontext的对象
session代表session的对象
exception代表exception的对象
out代表out的对象
pageContext代表pageContext的对象

 

注意:

【1】exception、out对象

将isErrorPage设置为true才可以使用,表示页面中出现的异常

out对象多用来输出流,输出内容。(现多不使用)

三、pageContext对象详解

【1】获取其他域对象

<%
    pageContext.getRequest();
    pageContext.getServletConfig();
    pageContext.getPage();
..........
%>

【2】作为域对象使用

域对象:如果一个对象有一个可见的范围,利用这个对象身上的map属性,在这个范围内进行共享数据,则称这个对象为域对象。

<%
    pageContext.setAttribute("name","zs");
    pageContext.getAttribute("name");
    pageContext.removeAttribute("name");
    pageContext.getAttributeNamesInScope(PageContext.PAGE_SCOPE);
%>

生命周期:在访问jsp页面时,pageContext对象创建,生命周期开始。在结束访问jsp页面时,pageContext对象销毁,生命周期结束。

作用范围:整个jsp页面

【3】设置其他域对象的内容

pageContext.setAttribute("name","张三",PageContext.APPLICATION_SCOPE);    //application域中设置

pageContext.setAttribute("name","李四",PageContext.SESSION_SCOPE);           //session域中设置

pageContext.setAttribute("name","王五",PageContext.REQUEST_SCOPE);         //request域中设置

pageContext.setAttribute("name","赵六",PageContext.PAGE_SCOPE);                //pageContext域中设置

【4】自动搜寻域

pageContext.findAttribute("country");

findAttribute会在四个作用域中,由小到大的搜索指定名称的域属性,如果在某一个域中获取到域属性,则不会向更大范围的域搜索。

【4】方便进行请求转发

pageContext.forward("/Demo1.jsp");


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值