主頁 > 前端設計 > 使用Eclipse開發Web專案(JSP)——簡單登錄、無sql

使用Eclipse開發Web專案(JSP)——簡單登錄、無sql

2020-09-14 10:46:11 前端設計

1.使用Eclipse開發Web專案(JSP) tomcat

2.在Eclipse中創建的Web專案:

瀏覽器可以直接訪問webContent中的檔案

例如http://localhost:8080/MyJspProject/index1.jsp

其中的index1.jsp就在WebContent目錄中;

但是WEB-INF中的檔案 無法通過客戶端(瀏覽器)直接訪問,只能通過請求轉發來訪問

注意:并不是任何的內部跳轉都能訪問WEB-INF;原因是跳轉有兩種方式:請求轉發、重定向

3.配置tomcat運行時環境

jsp <->Servlet

a.將tomcat/lib中的servlet-api.jar加入專案的構建路徑(只加一個)

b.右鍵專案 -> Build Path -> Add library - Server Runtime(加一堆jar)【推薦】

4.部署tomcat

在servers面板新建一個tomcat實體,再在該實體中部署專案(右鍵-add)

注意:一般建議將eclipse中的tomcat與本地tomcat保持一致;

將eclipse中的tomcat設定為托管模式:【第一次】創建tomcat實體之后,雙擊,選擇Server Location的第二個

5.統一字符集編碼

a.編碼分類:

設計jsp檔案的編碼(jsp檔案中的pageEncodeing屬性):jsp -> java

設定瀏覽器讀取jsp檔案的編碼(jsp檔案中content屬性)

一般將上述設定成一致的編碼,推薦使用UTF-8

b.文本編碼:

i.將整個Eclipse中的檔案統一設定(以后的jsp編碼都會utf-8)【推薦】

ii.設定某一專案(右鍵檔案-properties)

iii.設定單獨檔案

6.JSP的頁面元素

HTML java代碼(腳本Scriptlet) 指令 注釋

a.腳本Scriptlet

i.

1 <%2     區域變數、java陳述句3 %>

ii.

1 <%!2     全域變數、定義方法3 %>

iii.

1 <%=2     輸出運算式3 %>

修改web.xml、組態檔、java需要重啟tomcat服務,但是如果修改Jsp/html/js/css代碼不需要重啟

注意:out.println()不能回車;要想回車:<br\>,即out.print() <%= %>可以直接決議html代碼

b.指令

page指令

1 <%@ page language="java" contentType="text/html; charset=UTF-8"2     pageEncoding="UTF-8" import="java.util.Date"%>

屬性:

language:jsp頁面使用的腳本語言

import:匯入類

pageEnconding:jsp檔案自身編碼 jsp -> java

contentType:瀏覽器決議自身的編碼

c.注釋

html注釋

1 <!--可以被客戶通過瀏覽器查看原始碼所觀察到-->

java注釋

1 //2 /*...*/

jsp注釋

1 <%--    --%>

7.JSP九大內置物件

(自帶,無需new也能使用的物件)

out:輸出物件,向客戶端輸出內容

request:請求物件;存盤“客戶端向服務端發送的請求訊息“

request物件的常見方法:

String getParameter(String name); 根據請求的欄位名key(input標簽的name屬性),回傳欄位值value(input標簽的value屬性)

String[] getParameterValues(String name); 根據請求的欄位名key,回傳多個欄位值value(checkbox)

void setCharacterEncoding("編碼格式utf-8"); 設定post請求編碼(tomcat7以前默認iso-8859-1,tomcat8以后改成了utf-8)

getRequestDispartcher("b.jsp").forward(request,response); 請求轉發的方式跳轉頁面 A -> B

ServletContext getServerContext(); 獲取專案的ServletContext物件

示例:注冊

register.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <form action="show.jsp">11         用戶名:<input type="text" name="uname"/><br/>12&nbsp;&nbsp;&nbsp;碼:<input type="password" name="upwd"/><br/>13&nbsp;&nbsp;&nbsp;齡:<input type="text" name="uage"/><br/>14&nbsp;&nbsp;&nbsp;好:<br/>15         <input type="checkbox" name="uhobbies" value="足球"/>足球16         <input type="checkbox" name="uhobbies" value="籃球"/>籃球17         <input type="checkbox" name="uhobbies" value="乒乓球"/>乒乓球<br/>18         <input type="submit" value="注冊">19     </form>20 </body>21 </html>
show.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <%11         //設定編碼12         request.setCharacterEncoding("utf-8");13         String name = request.getParameter("uname");14         int age = Integer.parseInt(request.getParameter("uage"));15         String pwd = request.getParameter("upwd");16         17         String[] hobbies = request.getParameterValues("uhobbies");18     %>19     注冊成功,資訊如下:<br/>20     姓名:<%=name %><br/>21     年齡:<%=age %><br/>22     密碼:<%=pwd %><br/>23     <%24         if(hobbies !=null){     //控制沒有愛好則不顯示25             out.print("愛好:");26             for(String hobby:hobbies){27                 out.print(hobby + "&nbsp;");28             }29         }30     %>31 </body>32 </html>

http://localhost:8080/MyJspProject/show.jsp?uname=zs&upwd=abc&uage=22&uhobbies=%E7%AF%AE%E7%90%83&uhobbies=%E4%B9%92%E4%B9%93%E7%90%83

連接/檔案?引數名1=引數值1&引數名2=引數值2&引數名3=引數值3

get提交方式:method="get"和地址欄、超鏈接(<a href="https://www.cnblogs.com/dream-by-dream/p/xx">)請求方式默認都屬于get提交方式

get與post請求方式的區別:

a.get方式在地址欄顯示請求資訊(但是地址欄能夠容納的資訊有限,4-5KB;如果請求資料存在大檔案)

b.檔案上傳操作,必須是post【推薦】

response:回應物件

提供的方法:

void addCookie(Cookie cookie); 服務端向客戶端增加cookie物件

void sendRedirect(String location) throws IOException; 頁面跳轉的一種方式(重定向)

void setContentType(String type);設定服務端回應的代碼(設定服務端的contentType型別)

示例:登錄

login.jsp -> check.jsp -> success.jsp

login.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <form action="check.jsp" method="post">11         用戶名:<input type="text" name="uname"><br/>12         密碼:<input type="password" name="upwd"><br/>13         <input type="submit" value="登錄"><br/>14     </form>15 </body>16 </html>
check.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <%11         request.setCharacterEncoding("utf-8");12         String name = request.getParameter("uname");13         String pwd = request.getParameter("upwd");14         if(name.equals("zs")&&pwd.equals("abc")){15             //通過重定向跳轉,結果導致資料丟失16             //response.sendRedirect("success.jsp");17             //請求轉發跳轉:可以獲取到資料,并且地址欄沒有改變(仍然保留轉發時的頁面)18             request.getRequestDispatcher("success.jsp").forward(request, response);19         }else{20             //登錄失敗21             out.print("用戶名或密碼錯誤!");22         }23     %>24 </body>25 </html>
success.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     登陸成功!<br/>11     歡迎您:12     <%13         String name = request.getParameter("uname");14         out.print(name);15     %>16 </body>17 </html>

請求轉發和重定向的區別

 請求轉發重定向
地址欄是否改變不變(check.jsp)改變(success.jsp)
是否保留第一次請求時的資料保留不保留 --4種范圍物件
請求的次數12
跳轉發生的位置服務端客戶端發起的第二次跳轉

轉發、重定向:

轉發:張三(客戶端) -> 【服務視窗A(服務器) -> 服務視窗B】

重定向:張三(客戶端) -> 服務視窗A(服務端) -> 去找B

張三(客戶端) ->服務視窗B(服務端) -> 結束

session(服務端,內置物件)

Cookie(客戶端,不是內置物件):

Cookie是由服務端生成的,再發給客戶端保存

相當于本地快取的作用:客戶端(hello.jsp)->服務端(hello.mp4;zs/abc)

作用:提高訪問服務器的效率,但是安全性較差,

Cookie:key=value

javax.servlet.http.Cookie

public Cookie(String name,String value)

String getName() 獲取name

String getValue() 獲取value

void setMaxAge(int expiry); 最大有效期(s)

服務器準備Cookie:

response.addCookie(Cookie cookie)

頁面跳轉(轉發、重定向)

客戶端獲取Cookie:request.getCookies();

a.服務端增加Cookie:response物件;客戶端獲取物件:request物件

b.不能直接獲取某一個單獨物件,只能一次性將全部的Cookie拿到

通過F12可以發現,除了自己設定的Cookie物件外,還有一個name為JSESSIONID的cookie

建議cookie中只保存英文、數字,否則需要進行編碼、解碼處理

使用Cookie實作記住用戶名操作

login.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <%!11         String uname;12     %>13     <%14         Cookie[] cookies = request.getCookies();15         for(Cookie cookie:cookies){16             if(cookie.getName().equals("uname")){17                 uname = cookie.getValue();18             }19         }20     %>21     <form action="check.jsp" method="post">22         用戶名:<input type="text" name="uname" value="<%=(uname==null?"":uname)%>"><br/>23         密碼:<input type="password" name="upwd"><br/>24         <input type="submit" value="登錄"><br/>25     </form>26 </body>27 </html>
check.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     <%11         request.setCharacterEncoding("utf-8");12         String name = request.getParameter("uname");13         String pwd = request.getParameter("upwd");14         15         //將用戶名加入到Cookie中16         //Cookie cookie = new Cookie("key","value");17         Cookie cookie = new Cookie("uname",name);18         response.addCookie(cookie);19         20         response.sendRedirect("result.jsp");21         22         /* if(name.equals("zs")&&pwd.equals("abc")){23             //通過重定向跳轉,結果導致資料丟失24             //response.sendRedirect("success.jsp");25             //請求轉發跳轉:可以獲取到資料,并且地址欄沒有改變(仍然保留轉發時的頁面)26             request.getRequestDispatcher("success.jsp").forward(request, response);27         }else{28             //登錄失敗29             out.print("用戶名或密碼錯誤!");30         } */31     %>32 </body>33 </html>
result.jsp
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10     僅供測驗使用11 </body>12 </html>

pageContext(后面講)

application(后面講)

config(后面講)

page(后面講)

exception(后面講)

8.統一請求的編碼request

get方式請求

如果出現亂碼的解決方法:

a.統一改每一個變數的編碼

new String(舊編碼,新編碼)

1 name = new String(name.getBytes("iso-8859-1"),"utf-8")

b.修改server.xml,一次性的更改tomcat默認get提交方式的編碼(utf-8)

建議使用tomcat時,首先在server.xml中統一get方式的編碼

1 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>2 <!--添加URIEncoding="UTF-8"以后所有的get方式都是utf-8-->

post方式請求

1 <%2     //設定編碼3     request.setCharacterEncoding("utf-8");4 %>

tomcat7(iso-8859-1)

tomcat8(utf-8)

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/34039.html

標籤:HTML5

上一篇:新手學Html之JSP基礎語法——入門(二)

下一篇:git使用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more