1. JSP的概念
1.1. Java Server Pages:Java服务器页面,包含有Java代码的动态页面
1.2. JSP中Java代码作用:和后台程序交互
1.3. JSP执行流程
2. JSP页面元素
2.1. Java脚本元素
<%
NewsUser nu=(NewsUser)session.getAttribute("nu");
%>
2.2. 表达式
<%=nu.getUname() %>
2.3. 模板元素:JSP的静态HTML或者XML内容
<%
for(int i=0;i<5;i++){
%>
<!– 模板元素与JSP表达式混合使用 -->
<p><%=i %></p>
<%
}
%>
2.4. 声明元素
<%-- 声明方法 --%>
<%!
String sayHello(String name){
return name+”,你好!”;
}
%>
<%-- 调用方法 --%>
<%=sayHello(“刘德华”) %>
<%
//Java脚本中声明的变量是_jspService方法的局部变量
int i=9;
%>
<%!
//如果jsp页面名称为index.jsp
//加感叹号的脚本中声明的变量是index_jsp.java类的成员变量
int i=10;
%>
3. JSP的九大内置对象
3.1. request
3.1.1. Request是HttpServletRequest类的实例
3.1.2. 一次请求中传递的数据保存在request对象,一旦请求重定向,则request保存的数据将销毁
3.2. Response
3.2.1. Response是HttpServletResponse类的实例
3.2.2. 响应对象的作用:在后台程序将数据打印到浏览器,例如response.getWriter().print();可以使用response.sendRedirect()重定向请求路径
3.3. Out
3.3.1. out对象是JspWriter类的实例,是向客户端输出内容常用的对象
3.3.2. 在JSP页面上使用out.print()打印数据
3.4. Page
3.4.1. page表示当前page.jsp页面被Tomcat容器翻译成page_jsp.java类的对象
3.5. pageContext
3.5.1. 所有的内置对象都自动地被添加到pageContext对象中,例如pageContext.setAttribute("u", "刘德华",PageContext.SESSION_SCOPE);
3.6. Session
3.6.1. Session的生命周期与打开一次浏览器相联系,在同一个浏览器中打开多个窗口,所有这些窗口的session.getId()相同,也就是说程序认定当前是一个用户与服务端的一次会话
3.7. Application
3.7.1. application是ServletContext类的实例
3.7.2. 在Servlet类中,可以通过this.getSevletContext()获取ServletContext对象
3.7.3. 在JSP页面中,可用通过application获取ServletContext对象
3.7.4. Application生命周期与web应用程序相联系,也就是关闭网站,则application对象被销毁
3.8. Exception
3.8.1. 当页面发生异常,则可以通过exception对象获取页面具体的报错信息
3.8.2. 获取页面异常信息的步骤
在程序JSP页面设置错误页面,例如errorPage="error1.jsp"
在error1.jsp中将页面本身设置为错误页面,例如isErrorPage="true"
在error1.jsp中获取异常信息,例如<%=exception.getMessage()%>
3.8.3. 方法
3.9. Config
3.9.1. Config对象其实是实现javax.servlet.ServletConfig接口的类的实例对象
3.9.2. Config获取web应用程序的配置信息
4. 常用page指令与动作
4.1. <%@page import="java.util.*,java.io.*" %> 导入包名
4.2. <%@page pageEncoding=“utf-8"%> 设置页面的字符编码
4.3. <%@page session="false"%> 设置当前页面session是否生效,默认是true
4.4. <%@include file="copyright.jsp"%> 静态包含:将被引入的页面的Java代码与当前JSP中Java代码合二为一,共同组成_jspService()方法中的部分代码
4.5. <jsp:include page="a.jsp" flush="true" /> 动态包含:通过调用include方法,将被引入页面的代码直接运行,再继续运行当前页面的代码
4.6. 静态与动态的包含的区别
4.6.1. 静态include是在JSP文件被转换成Servlet的时候引入文件
4.6.2. 动态include插入文件的时间是在页面被请求的时候
4.7. <jsp:forward page=”页面路径或者servlete请求路径” /> 达到转发的效果
<!-- page=”tlist.news” 指定进入NewsServlet的请求路径 -->
<jsp:forward page="tlist.news" >
<!-- 发送请求的同时,可以向后台传递参数
Name=”a” value=”1” 相当于 tlist.news?a=1
-->
<jsp:param value="1" name="a"/>
</jsp:forward>
4.8.