servlet:服務器端的小應用程序。適合編寫java邏輯代碼,如果編寫網頁內容—痛苦。
jsp:適合編寫輸出動態內容,但不適合編寫java邏輯。
Servlet:控制器。重點編寫java代碼邏輯 (獲取表單數據、處理業務邏輯、分發轉向)
JSP:代碼顯示模板。重點在於顯示數據
腳本 <% java代碼 %>
<% %>
表達式 <%= 2+3 %> 等價於out.print(2+3);
聲明 <%! %> 表示在類中定義全局成員,和靜態塊
註釋
JSP註釋:<%-- 被註釋的內容 --%> 特點:安全,省流量
網頁註釋:<!-- 網頁註釋 --> 特點:不安全,費流量
9個內置對象
指在JSP的<%=%> 和<% %>中可以直接使用的對象
對象名 類型 說明
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession 由session="true"開關
application javax.servlet.ServletContext
exception java.lang.Throwable 由isErrorPage="false"開關
page java.lang.Object 當前對象this 當前servlet實例
config javax.servlet.ServletConfig
out javax.servlet.jsp.JspWriter 字符輸出流,相當於 printWriter對象
pageContext javax.servlet.jsp.PageContext 可以通過pageContext()獲取其他的8個域對象
6個動作
使用標籤的形式來表示一段java代碼。
如: <jsp:include page=“2.jsp”></jsp:include>
<jsp:include > 動態包含
jsp:forward 請求轉發
jsp:param 設置請求參數
jsp:useBean 創建一個對象 User u=new User();
jsp:setProperty 給指定的對象屬性賦值 u.setUsername();
jsp:getProperty 取出指定對象的屬性值 u.hetUsername();
<%@ page import="com.qf.entity.Student" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 六個動作 -->
<%
Student stu=new Student(); /* 創建實例 */
stu.setName("tom"); /* 存值 */
out.write(stu.getName()); /* 取值 */ /* 轉發 */
/* request.getRequestDispatcher("/zhuanfa.jsp").forward(request, response); */
%>
<!-- 創建實例 -->
<jsp:useBean id="stu1" class="com.qf.entity.Student"></jsp:useBean>
<jsp:setProperty property="name" name="stu1" value="admin"/>
<jsp:getProperty property="name" name="stu1"/>
<!-- 請求轉發 -->
<!-- 編碼設置在轉發前 -->
<% request.setCharacterEncoding("utf-8");%>
<jsp:forward page="zhuanfa.jsp">
<jsp:param value="湯姆" name="name"/>
</jsp:forward>
</body>
</html>
3個指令
page指令 聲明jsp頁面的屬性
Include指令 靜態包含 靜態包含只生成一個.class文件
taglib指令 導入標籤庫 JSTL <%@ taglib prefix="c" uri="---/jsp/jstl/core"%>
page指令
3個重要屬性
contextType:設置響應流編碼 contextType=“text/html; charset=utf-8”
pageEncoding:設置頁面的編碼
只設置一個的時候共用編碼,設置2個採用自己的編碼,不設置才用服務器默認編碼 ISO-8859 -1
import:導包
其他屬性:
language:當前jsp頁面可以嵌套的語言
buffer:設置jsp的緩衝大小
autoFlush:是否自動刷新
extends:聲明jsp頁面繼承那個類,必須繼承HttpServlet及其子類
session:設置jsp頁面是否使用session對象
isELIngnored:是否忽略EL表達式
errorPage:當前頁面出現異常會跳到的頁面 服務器錯誤設置跳轉的頁面 errorPage=“error.jsp”
isErrorPage:當前jsp頁面是否是錯誤頁面 true:jsp頁面內置一個對象exception