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()