第一:概念
(一)JSP自定义模板
(1)Window->Preferences->MyEclipse->Files and Editors
->JSP->JSP Templates->点击右侧的New按钮,出现向导窗口
(2)向导窗口中填写:
①name:MyJspTemplate(名称可以自定义)
②context: jsp_new(newjsp)
③pattern:填写具体模板内容
(3)在web项目中,根据模板生成jsp页面
①通过new菜单,选择JSP(Basic templates)来创建jsp页面;
②选择自定义的模板;
③点击finish按钮;
-------------------------------------------------------
(二)进一步完善JSP细节
(1)page指令中的errorPage属性及isErrorPage属性
(2)其中isErrorPage属性,可以配合jsp页面中exception内置
对象的使用
(3)pageContext内置对象
①四大Web域对象之一;
②作用范围,只限于当前页面,不能共享。
(4)jsp的转发,动作标签<jsp:forward>
①转发页面与当前页面共享request对象;
②可以向转发的页面传递参数;
(5)jsp的包含,
Ⅰ、动作标签<jsp:include>
①执行时包含:只包含页面的输出结果,而不包含其代码;
②动态包含:包含时可以向被包含的页面传递参数;
Ⅱ、include指令 <%@ include file="页面" %>
①编译时包含;包含的是代码,将代码合二为一。
②静态包含,包含时不能传递参数;
(6)jsp的注释:
①jsp的标准注释是<%-- --%>
被注释的部分,不执行;
②html的注释是:<!-- -->
被注释的部分,不显示;
(三)JSP页面中内置对象或者叫做隐含对象
9大内置对象:
①request HttpServletRequest
②response HttpServletResponse
③application ServletContext(ContextPath中的Context)
④config ServletConfig
⑤pageContext PageContext
⑥out JspWriter(Writer的子类)
⑦page(this) Object
⑧exception Exception
⑨session HttpSession
其中的4大web域对象(从小到大)是:
pageContext(当前页面)
request(转发页面)
session(浏览器中的所有页面)
application(站点中的所有页面)
特点是内部都包含一个map结构;例如:
HttpSession session=request.getSession();
session.setAttribute("name", new Object())
注意:jsp的一些标准动作
jsp的几个标准动作标签(只要是jsp:的都是标准动作)。至少记住六七个。
---<jsp:userBean id="dao" class="com.dao"/>:是根据类创建一个对象 ,这里的bean就是一个类的意思
---<jsp:setProperty proprtty="属性名" name="对象名" value="值"/> :给对象的属性设置值
---<jsp:getProperty proprtty="属性名" name="对象名" />
---<jsp:forword page="路径">:跳转,就是转发
---<jsp:params value="" name=""/>:获取表单元素的值
----<jsp:include page="地址"/>:这是包含,运行时包含,两个页面运行之后再把结果放在一起。
跟昨天讲的<%@ include file=""%>不一样,<%@ include file=""%>是编译时候包含。
其中<%@ include file=""%>是静态导入,在编译的时候进行页面的合并
<jsp:include page="地址"/>是动态导入,先执行两个jsp,然后将结果进行合并。
第二:相关代码
1.
<body>
<%
pageContext.setAttribute("username", "wangda");//只能本页有效。Attribute是属性的意思,通过键值对中的键对内置对象进行值传递
request.setAttribute("password", "123456");//一次请求有效,即:重定向没效,必须转发才能有效,才能向下传递属性值
session.setAttribute("time", new Date());//session在一次对话中都会有效,值的内容可以是个对象
%>
【注意:】这个是指我当前页面包含MyJsp01-7.jsp这个页面里面的内容,<br>
欢迎新会员(向被包含的页面传递参数):<br>
<!-- jsp:include这个是标签包含:是 执行时包含(只包含页面的输出结果。是先去执行两个jsp页面,然后把两个jsp页面的执行结果包含在一起),动态包含(因为可以使用参数jsp:param) -->
<jsp:include page="MyJsp01-7.jsp">
<jsp:param value="zhangsan" name="zs"/>
<jsp:param value="1234" name="pw"/>
</jsp:include>
</body>
2.
<body>
欢迎你,
<!--【注意:】include这是指令包含:1.他是编译时包含(两个jsp是两个servlet。是先将两个jsp的代码合并成一个jsp代码,然后去执行这一个jsp代码),2.他是静态包含(里面不能写参数,参数在地址栏上以问号的形式传递)
--> <%@include file="MyJsp01-7.jsp" %>
</body>
</html>