來源:遇妳 發(fā)布時間:2020-05-12 11:58:39 閱讀量:1656
靜態(tài)web項目與動態(tài)web項目的區(qū)別
1.傳統(tǒng)意義上的靜態(tài)web項目是指使用HTML+CSS+JS等前端技術做成的頁面,靜態(tài)web項目不會隨著用戶的操作時間、操作地點等改變;而動態(tài)web項目可以根據(jù)用戶的請求動態(tài)的作出響應。
2.靜態(tài)web項目與動態(tài)web項目最大的區(qū)別是動態(tài)web項目可以進行數(shù)據(jù)庫的操作,而靜態(tài)web項目無法進行數(shù)據(jù)庫的操作。
動態(tài)web項目執(zhí)行原理
如圖1所表示的一樣,當客戶端通過瀏覽器向服務端請求web資源時,web服務器插件會先判斷客戶端請求的web資源的類型,若是靜態(tài)web資源則將客戶端請求交給web服務器,并從文件系統(tǒng)中取出資源響應給客戶端;若客戶端請求的是動態(tài)web資源,則在web容器中進行處理,主要是通過拼湊代碼(拼湊html代碼)的方式動態(tài)的生成數(shù)據(jù)并通過web服務器響應給客戶端。
JSP九大內置對象及常用方法
out對象
1.out對象的作用
JspWriter類的實例,用于把結果輸出至網(wǎng)頁上。
2.out對象常用方法
out.print(dataType dt):輸出Type類型的值
request對象(請求對象)
常用方法:
1.void setCharacterEncoding():設置請求的編碼方式
2.String getParameter(String name):返回name指定參數(shù)的參數(shù)值
3.String[] getParameterValues(String name):返回包含參數(shù)name的所有值的數(shù)組
4.void getRequestDispatcher(String location).forward(requset,response):請求轉發(fā),頁面跳轉的一種方式
下面通過一個簡單的注冊功能串一下上面的方法
注冊頁,用于收集用戶信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陸</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密碼:<input type="password" name="upwd"/><br/>
愛好:<br/>
<input type="checkbox" name="uhobbies" value="足球"/>足球
<input type="checkbox" name="uhobbies" value="籃球"/>籃球
<input type="checkbox" name="uhobbies" value="乒乓球"/>乒乓球<br/>
<input type="submit" value="提交"/>
</form>
</body>
檢查頁,用于接收用戶信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>檢查</title>
</head>
<body>
<%
/*
request對象常用方法
1.void setCharacterEncoding():設置請求的編碼方式
2.String getParameter(String name):返回name指定參數(shù)的參數(shù)值
3.String[] getParameterValues(String name):返回包含參數(shù)name的所有值的數(shù)組
4.void getRequestDispatcher(String location).forward(requset,response):請求轉發(fā),頁面跳轉的一種方式
*/
// 設置請求的編碼方式
request.setCharacterEncoding("utf-8");
// 根據(jù)name取值
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
String[] hobbies = request.getParameterValues("uhobbies");
%>
<!--顯示用戶信息-->
提交成功,信息如下:<br/>
姓名:<%=name%><br/>
密碼:<%=pwd%><br/>
愛好:<br/>
<%
if (hobbies != null){
for (String hobby : hobbies){
out.print(hobby+" ");
}
}
%>
</body>
</html>
開啟tomcat服務器訪問login.jsp,進行注冊操作
頁面跳轉到check.jsp進行取值
response(響應對象)
常用方法
response常用方法
1.void addCookie(Cookie cookie):服務端向客戶端增加一個Cookie對象
2.void sendRedirect(String location):重定向,頁面跳轉的一種方式
3.void setContentType(String type):設置響應編碼
下面通過一個登陸操作演示一下上面的常用方法,用戶通過login.jsp頁面輸入用戶名、密碼;頁面跳轉到check.jsp進行校驗,若用戶名等于張三且密碼等于abc則跳轉到歡迎頁,否則登陸失敗。
登陸頁
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陸頁</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密碼:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>檢查頁</title>
</head>
<body>
<%
/*
response常用方法
1.void addCookie(Cookie cookie):服務端向客戶端增加一個Cookie對象
2.void sendRedirect(String location):重定向,頁面跳轉的一種方式
3.void setContentType(String type):設置響應編碼
*/
// 設置響應的編碼方式
request.setCharacterEncoding("utf-8");
// 取出用戶信息
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
// 進行校驗
if (name.equals("張三") && pwd.equals("abc")){
// 登陸成功,跳到歡迎頁
// 重定向方式跳轉
// response.sendRedirect("success.jsp");
//請求轉發(fā)方式
request.getRequestDispatcher("success.jsp").forward(request,response);
}else {
// 登陸失敗,跳回登陸頁重新登陸
request.getRequestDispatcher("login.jsp").forward(request,response);
out.print("用戶名或密碼有誤!");
}
%>
</body>
</html>
歡迎頁
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>歡迎頁</title>
</head>
<body>
登陸成功,歡迎您:<br/>
<%
String name = request.getParameter("uname");
out.print(name); //登陸成功,歡迎您: null
%>
</body>
</html>
將項目部署到tomcat服務器并訪問login.jsp
頁面跳轉到check.jsp頁面進行校驗
關于重定向和請求轉發(fā)
cookie對象
1.Cookie對象不是內置對象,必須使用new關鍵字創(chuàng)建,由服務端產(chǎn)生并且在響應的同時發(fā)送給客戶端,相當于我們平時理解的緩存
2.常用方法
public Cookie(String name,String value)
String getName():獲取name
String getValue():獲取value
void setMaxAge(int expiry):設置最大有效時間
3.服務端準備Cookie:response.addCookie(String name,String value)
客戶端獲取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie對象,然后再遍歷取出
下面通過一個記住用戶名的例子串一下上面的方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陸頁</title>
</head>
<body>
<%!
String uname;
%>
<%
// 標記用來記錄Cookie是否失效
boolean flag = false;
// 接收Cookie
Cookie[] cookies = request.getCookies();
// 進行判斷并取出用戶信息
for (Cookie cookie : cookies){
if (cookie.getName().equals("uname")){ // 若能執(zhí)行到這一步說明拿到了用戶名
uname = cookie.getValue();
//flag = true; // 能進行到這一步說明Cookie未失效
}
}
if (!flag){
out.print("Cookie已失效!");
}else {
out.print("Cookie:"+uname);
}
%>
<form action="addCookie.jsp" method="post">
姓名:<input type="text" name="uname" value="<%=(uname==null?"":uname)%>"/><br/>
密碼:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>服務端</title>
</head>
<body>
<!--
Cookie對象
1.Cookie對象不是內置對象,必須使用new關鍵字創(chuàng)建,由服務端產(chǎn)生并且在響應的同時發(fā)送給客戶端,相當于我們平時理解的緩存
2.常用方法
public Cookie(String name,String value)
String getName():獲取name
String getValue():獲取value
void setMaxAge(int expiry):設置最大有效時間
3.服務端準備Cookie:response.addCookie(String name,String value)
客戶端獲取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie對象,然后再遍歷取出
-->
<%
// 設置請求編碼方式
request.setCharacterEncoding("utf-8");
// 取出用戶信息
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
// 創(chuàng)建Cookie對象
Cookie cookie = new Cookie("uname",name);
// 設置Cookie最大有效時間
cookie.setMaxAge(60);
// 增加Cookie對象
response.addCookie(cookie);
// 響應將Cookie發(fā)送給客戶端
response.sendRedirect("A.jsp");
%>
</body>
</html>
session對象
session對象:
1.session中文翻譯為會話,表示用戶從登陸到退出登陸的這個過程,session由服務端產(chǎn)生,通過Cookie響應至客戶端
2.當用戶第一次訪問服務端時,服務端會自動為這個用戶產(chǎn)生一個sessionId,并且自動產(chǎn)生一個name為JSESSIONID的Cookie響應至客戶端
session常用方法
1.String getID():獲取sessionId
2.boolean isNew():判斷用戶是否是第一次登陸
3.void invalidate():使sessio失效(退出登陸、注銷)
4.void setAttribute():設置屬性值
5.Object getAttribute():獲取屬性值,需要進行強制類型轉換
6.void setMaxInactiveIntervval():設置最大有效非活動時間
下面通過一個實例演示session對象常用方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陸</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密碼:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>檢查</title>
</head>
<body>
<%--
session對象:
1.session中文翻譯為會話,表示用戶從登陸到退出登陸的這個過程,session由服務端產(chǎn)生,通過Cookie響應至客戶端
2.當用戶第一次訪問服務端時,服務端會自動為這個用戶產(chǎn)生一個sessionId,并且自動產(chǎn)生一個name為JSESSIONID的Cookie響應至客戶端
session常用方法
1.String getID():獲取sessionId
2.boolean isNew():判斷用戶是否是第一次登陸
3.void invalidate():使sessio失效(退出登陸、注銷)
4.void setAttribute():設置屬性值
5.Object getAttribute():獲取屬性值,需要進行強制類型轉換
6.void setMaxInactiveIntervval():設置最大有效非活動時間
--%>
<%
// 設置編碼
request.setCharacterEncoding("utf-8");
// 取出用戶信息進行判斷
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
if (name.equals("張三") && pwd.equals("abc")){
// 登陸成功,session中才有必要保存用戶信息
session.setAttribute("uname",name);
session.setAttribute("upwd",pwd);
System.out.println("sessionId:"+session.getId());
Cookie cookie = new Cookie("uname",name);
response.addCookie(cookie);
// 設置最大有效非活動時間
// session.setMaxInactiveInterval(10);
// 請求轉發(fā)
request.getRequestDispatcher("welcome.jsp").forward(request,response);
}else {
// 登陸失敗,重新登陸
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>歡迎頁</title>
</head>
<body>
登陸成功,歡迎您:<br/>
<%
String name = (String) session.getAttribute("uname");
if (name != null) {
out.print(name);
%>
<a href="invalidate.jsp">注銷</a>
<%
}else {
// 重新登陸(防止用戶直接通過地址欄的方式訪問welcom.jsp頁面)
response.sendRedirect("login.jsp");
}
%>
</body>
</html>