Servlet的认识
第七章Servlet基礎
1、Servlet 是一個 Java程序,是在服務器上運行以處理客戶端請求并做出響應的程序
2、Servlet體系結構:
①接口:
Servlet概述
定義了所有Servlet需要實現的方法
Servlet接口的常用方法:
?
ServeltConfig概述
在Servlet初始化過程中獲取配置信息,一個Servlet只有一個ServletConfig對象
ServletConfig的常用方法
?
②抽象類:
1)GenericServlet概述
提供了Servlet與ServletConfig接口的默認實現方法
GenericServlet的常用方法
2)HttpServlet概述
繼承于GenericServlet
處理HTTP協議的請求和響應
HttpServlet的常用方法
?
?
?
Servlet的生命周期:
實例化 Servlet 容器創建 Servlet 的實例
初始化 該容器調用 init() 方法
請求處理 如果請求 Servlet,則容器調用 service() 方法
服務終止 銷毀實例之前調用 destroy() 方法
3、Servlet的應用:
創建Servlet
實現doPost()或doGet()方法
部署Servlet
編輯部署描述文件web.xml(添加<servlet>和<servlet-mapping>)
啟動Tomcat,訪問Servle
總結:
1)Servlet的應用:
創建Servlet:實現doPost()或doGet()方法
部署Servlet:編輯部署描述文件web.xml
啟動Tomcat,訪問Servlet
2)Servlet初始化參數配置
<init-param>
????????????<param-name>initParam</param-name>
????????????<param-value>Hello Servlet</param-value>
</init-param>
3)Servle上下文參數配置
<web-app>
????<context-param>
????????<param-name>contextParam</param-name>
????????<param-value>Hello Servlet</param-value>
????</context-param>
????<!--省略其他配置-->
</web-app>
getServletContext().getInitParameter("contextParam")
?
?
1、什么是EL
Expression Language(表達式語言)
2、EL的功能
替代JSP頁面中的復雜代碼
3、EL的特點
自動轉換類型
EL得到某個數據時可以自動轉換類型
使用簡單
4、EL表達式:
${ EL exprission }
使用變量名獲取值
獲取對象的屬性值
獲取集合
5、使用變量名獲取值
${變量名}:
Eg:<% ?request.setAttribute("username","LiYang"); %>
姓名: ${requstScope.username}
6、變量屬性范圍名稱
?
?
7、獲取對象的屬性值
點操作符
${user.name}
[ ]操作符
${user["name"]}
Eg:<%
????User user = (User )request.getAttribute("user");
????user.getName();
%>
8、獲取集合-List:
<%
????List names = new ArrayList();
????names.add(0, "LiYang");
????names.add(1,"WangHua");
????request.setAttribute("names",names);
%>
姓名:${names[0]}<br/>
姓名:${names[1]}<br/>
9、獲取集合-Map:
<%
????Map names = new HashMap();
????names.put("one","LiYang");
????names.put("two","WangHua");
????request.setAttribute("names",names);
%>
姓名:${names.one}<br/>
姓名:${names["two"] }<br/>
10、${ ?EL exprission }
關系操作符
邏輯操作符
Empty操作符
?
變量 a不存在,則${empty a}返回的結果為true
${not empty a}或${!empty a}返回的結果為false
?
?
11、EL隱式對象:作用域訪問對象,參數訪問對象,JSP隱式對象
作用域訪問對象:pageScope,requestScope,sessionScope,applicationScope
參數訪問對象:param,paramValues
JSP隱式對象:pageContext
12、EL隱式對象介紹:
?
?
?
?
13、什么是JSTL?
JSP標準標簽庫(JavaServerPages Standard Tag Library)
14、JSTL 的優點:
提供一組標準標簽
可用于編寫各種動態 JSP 頁面
JSTL通常會與EL表達式合作實現JSP頁面的編碼
15、JSTL的環境內搭:
使用JSTL的步驟:
在工程中引用JSTL的兩個jar包和標簽庫描述符文件
在JSP頁面添加taglib指令
使用JSTL標簽
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c%>
16、JSTL標準標簽庫內的標簽:
通用標簽:set ?out ?remove
條件標簽: ?if ??choose
迭代標簽: ?forEach
17、
①set:設置指定范圍內的變量值
//將value值存儲到范圍為scope的變量variable中
<c:set var="index" value=" 8 " scope=" ?request ?"/>
//將value值設置到對象的屬性中
<c:set value="value" target="target" property="property" />
?
<%
????User user = new User();
????request.setAttribute("user", user);
%>
<c:set target="${user}" property="name" value="defaultName " />
②out:計算表達式并將結果輸出顯示
不指定默認值:
<c:out value="value" />
指定默認值
<c:out value="value" default="default" />
<%
????User user = new User();
????request.setAttribute("user", user);
%>
<c:set target="${user}" property="name" value="defaultName " />
<c:out value="${user.name}" default="noUserName" />
通用標簽的使用:
//引入使用核心標簽的指令
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<body>
//set 標簽用于給變量設置值和作用范圍
//scope= "page|request|session|application"
<c:set var= "example" value="${100+1}" scope="session" ?/>
//out 標簽在頁面上顯示信息或變量值
<c:out value="${example}"/>
//remove 標簽用于刪除作用域內的變量
<c:remove var= "example" scope="session"/>
</body>
③條件標簽的應用
<body>
<c:set var="isLogin" value="${empty sessionScope.user}"/>
<c:if test="${isLogin}">
…登錄表單
</c:if>
<c:if test="${! isLogin}">
已經登錄!
</c:if>
</body>
④choose:實現Java語言中if-else if-else語句的功能
<c:choose var="varName" scope="scope">
<c:when test="condition">
主體內容
? </c:when>
<c:otherwise>
主體內容
</c:otherwise>
</c:choose >
⑤ forEach:實現對集合中對象的遍歷
<%
List products = GoodsDao.getAllProducts();
request.setAttribute("products", products);
%>
…
<!-- 循環輸出商品信息 -->//循環遍歷集合
<c:forEach var="product" items="${requestScope.products}" varStatus="status">
<!-- 如果是偶數行,為該行換背景顏色 -->//判斷奇偶
<tr <c:if test="${status.index % 2 == 1 }">style=""</c:if>>
//輸出商品信息
????????<td>${product.name }</td>
????????<td>${product.area }</td>
????????<td>${product.price }</td>
????</tr>
</c:forEach>
⑥通過迭代標簽遍歷Map
<%
????Map<String,String> map=new HashMap<String,String>();
????map.put("tom", "美國");
????map.put("lily", "英國");
????map.put("jack","中國");
????request.setAttribute("map", map);
%>
<c:forEach var="entry" items="${map}">
?????${entry.key}
?????${entry.value}<p>
</c:forEach>
⑦ forEach:指定迭代的次數
<c:forEach ?begin="start" ??end="end" ?step="count">
?
…循環體代碼…
</c:forEach>
<c:forEach ?begin="1" ??end="5" ?step= "2">
<c:out value="*"></c:out>
</c:forEach>
總結:
EL表達式的語法有兩個要素:$ 和 {}
EL表達式可以使用“.”或者“[]”操作符在相應的作用域中取得某個屬性的值
JSTL核心標簽庫中常用的標簽有如下三類。
通用標簽;<c:set>、<c:out>、<c:remove>
條件標簽;<c:if>、<c:choose>、<c:when>、<c:otherwise>
迭代標簽:<c:forEach>
EL表達式與JSTL標簽結合使用,可以減少JSP中嵌入的Java代碼,有利于程序的維護和擴展
?
轉載于:https://www.cnblogs.com/qwe234/p/6636491.html
總結
以上是生活随笔為你收集整理的Servlet的认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyTorch之torch.nn.Cro
- 下一篇: JS-DOM ~ 03. 子节点的操作、