Servlet技术缺点在于:大量使用out.print()语句输出页面。JSP技术则负责将Servlet中负责显示的语句抽取出来。
JSP:服务器端动态页面技术的组件规范,含有HTML和少量Java代码。容器会将JSP文件转换为一个Servlet类,然后运行。(HTML,注释,Java代码,指令,隐含对象)
其中注释:<!--注释 内容-->HTML注释,如果注释中存在Java代码,则会被执行。 <%--注释内容--%>JSP特有的注释,忽略Java代码
Java代码分为三种:JSP表达式(<%=。。。。。>),JSP小脚本(<%........%>),JSP声明(<%!.........%>成员属性或成员方法的声明)
JSP指令:<%@指令名 属性=值%>
常用的指令名:page,include,taglib 用于控制JSP在转译成Servlet类时生成的内容。
其中:page用于导入包,设置页面属性。例如<%@ page import="java.util.*,java.net.*" %> <%@ page contentType="text/html" %> <%@page pageEncoding="UTF-8" %>
其中:include用于包含其他文件。例如:<%@include file = "url"%>
JSP的隐含对象:分为4类。(输入输出对象,作用域通信对象,Servlet对象,异常对象)
输入输出对象:HttpServletRequest request,HttpServletResponse response,JSPWriter out
作用域通信对象:HttpSession Ssession ,ServletContext application,PageContext pageContext
Servlet对象:Object page,ServletConfig config
异常镀锡:Throwable exception
转发:一个Web组件将未完成的工作交给另外一个Web组件继续完成。
如何实现转发:
1、绑定数据到request对象。request.setAttribute(String name,Object obj) request.getAttribute(String name)
2、获得转发器 RequestDispatcher rd = request.getRequestDispatcher(String uri)
3、转发 rd.foward(request,response)
特点:地址栏不变(转发发生在服务器内部。),共享同一个request对象,和response对象
<error-page>
<exception-type>
javax.servlet.ServletException
</exception-type>
<location>/error.jsp</location>
</error-page>
路径处理技巧:
链接地址、表单提交、重定向是从应用名开始写。
转发是从应用名之后开始写。
获取应用的实际部署名称:request.getContextPath()