javaweb第一季笔记【siki学院】
目錄
什么是xml?
xml用來干什么?
xml語法
對xml的約束:DTD、Schema
什么是dtd?
schema約束
schema文檔的使用
xml解析方式
javaweb和javaee
JSP是什么
Tomcat基本使用
新建一個dynamic web project
jsp定義表達式和內容輸出表達式
什么是http協議
請求的轉發
參數在兩個服務端頁面間的傳遞
中文亂碼
session會話
application
servlet
servlet中獲得jsp內置對象
web.xml配置servlet路徑
請求轉發與重定向
eclipse常用快捷鍵
什么是xml?
可擴展標記語言,標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。
html也是標記語言,html里面的標記是固定的,每個標記有自己的功能。
xml里面的標記我們可以自己定義。
它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。
是Internet環境中跨平臺的、依賴于內容的技術,也是當今處理分布式結構信息的有效工具。
?
xml用干什么?
1.編寫配置文件
在后續的web開發中很多配置文件,都使用xml來編寫。 jsp servlet后續框架都需要配置文件 配置我們使用的框架或插件的功能
使用xml編寫配置文件,結構清晰,配置清楚。
2.數據傳輸
假如有一個手機APP客戶端,是一個網上商城的軟件,打開軟件需要顯示商品列表。那么這個商品列表的數據就可以使用xml來傳輸。
?
xml語法
大小寫敏感
有開始標記必須有結束標記(標記是成套的)
標記可以是單標記,但必須自己閉合
標記可以包含標記(可以嵌套,嵌套成對嵌套)
標記可以有自己的屬性(屬性值必須加引號)
必須有根標記,也叫做根元素。(根元素是其他元素的父元素)
xml文檔聲明
<?xml version="1.0" encoding="UTF-8"?>必須放在第一行
?
對XML的約束:DTD,Schema
平時編寫xml文件的時候,是沒有固定規則的,標記名,屬性名,屬性值我們可以按照我們的需求隨意來開發。
但是當我們使用別人的框架的時候,一般需要提供一個配置文檔,來配置我們使用這個框架的時候的一些屬性。這個時候,這個配置文檔就需要按照框架的要求來編寫。框架的要求就是對xml文檔的約束。我們可以通過DTD和Schema文檔來編寫對文檔的約束
定義了約束之后,可以防止我們寫錯文檔
比如某個配置文件,按照相同的約束來書寫,更容易讓別人閱讀和別的程序讀取。
?
什么是DTD?
DTD用來約束xml文檔,規定xml文檔中元素的名稱,子元素的名稱和順序,元素的屬性。
一般來說我們很少編寫自己的DTD文檔約束,我們一般會遵循框架提供的DTD約束文檔來編寫配置文件。比如struts框架會給我們提供dtd文檔
當我們編寫的xml不符合DTD約束規則的時候,會報錯,方便我們找錯。
怎么引入DTD約束
1,內部引入 2,外部引入(本地)
3,外部引入(網絡)
示例:Struts框架的配置文檔的首行
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
?
schema約束
(比DTD牛逼,替代DTD)
schema約束文檔本身也是一個xml文檔,后綴為xsd
語法更加容易閱讀,更加友好
功能更加強大,類型更加完善
里面有命名空間
同樣,我們也不需要寫schema約束文檔,我們只需要直接使用框架提供給我們的約束文檔即可。
?
schema文檔的使用
schema文檔使用http://www.w3school.com.cn/schema/schema_howto.asp
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" --默認命名空間 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" :xsi為起別名 xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> --引用的命名空間 引用的xsd文檔(xsd文檔可為url) < xsi:to>George</ xsi:to> 不寫別名 則為默認 <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>?
xml解析方式
DOM方式解析,就是把xml文檔加載到內存形成樹形結構,可以進行增刪改的操作。
我們可以使用dom4j來進行dom方式的解析。
dom4j是一個開源是xml解析軟件包。
首先去下載dom4j https://dom4j.github.io/
怎么引入jar包?
比如把dom4j放到項目的lib文件夾下,本地下載位置ctrl+C,到lib V一份,然后jar包右擊build path-> add to build path
dom4j解析xml 代碼
https://blog.csdn.net/qq_24065713/article/details/77970469
?
Java Web和Java EE的區別
Java Web就是以Java語言為基礎,使用JSP和Servlet來開發Web程序。Web程序簡單理解就是我們平時說的網站。
Java EE是Java的企業級應用,里面包含的功能比較多。JavaEE是個大雜燴,包括Applet、EJB、JDBC、JNDI、Servlet、JSP等技術的標準,運行在一個完整的應用服務器上,用來開發大規模、分布式、健壯的網絡應用。這里的網絡應用也可以理解為我們平時使用的網站。
可以粗略地認為JavaWeb就是JavaEE的一部分,是成為JavaEE大師過程中的第一站。
https://www.zhihu.com/question/52002845/answer/364360839
SSM SSH框架
SSM:Spring SpringMVC MyBatis
SSH:Spring Struts Hibernate
?
JSP是什么
JSP全名為Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計
用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。
百度百科
簡單來說JSP = html + Java代碼
在一個正常的網頁上,加入java代碼之后,就成為了一個jsp頁面。
?
Tomcat基本使用
哪個目錄放置項目
開發好的應用放在tomact webapps目錄下部署
怎么啟動tomcat
啟動 bin/startup.bat ????關閉 bin/shutdown.bat
這個需要在cmd運行,需要環境變量配置 不推薦
推薦 在eclipse啟動tomcat ,不需要環境變量配置
?
新建一個 dynamic web project項目
1.默認編碼
默認的編碼 ISO-8859-1 導致中文亂碼
亂碼問題以及怎么解決 utf-8
eclipse更改默認編碼:
window->preferences->web->JSP Files 更改encoding為utf-8
2.怎么在jsp頁面上寫java代碼
<%
//java代碼
%>
3.out與system.out區別
瀏覽器訪問jsp頁面,java代碼首先執行,然后顯示html代碼,java代碼可以控制html的顯示
out.println();//輸出到客戶端 這個out是jsp內置對象
system.out.println();//顯示 到服務器端 console控制臺
?
jsp定義表達式和內容輸出表達式
定義表達式<%! %>
普通表達式<% %>
內容輸出表達式<%= %>
=后面可以是變量或方法(返回方法的返回值),結果顯示到網頁
count 為成員變量,number為普通變量
頁面每刷新一次,count的值就會加一
?
什么是http協議
http協議規定了我們在發起http請求的時候,這個請求的數據包里面都包含了什么樣的數據
以及數據按照什么樣的先后順序存放在數據包里面。
http請求和http響應
https://blog.csdn.net/chen1403876161/article/details/51546653
請求和響應本質上都是數據包
?
請求的轉發
’每次請求都會創建一個request對象
獲取參數 request.getParameter(“age”)返回的是字符串
服務端獲得客戶端傳來的參數
請求轉發到login.jsp頁面
request.getRequestDispatcher(“login.jsp”).forward(request, response);
1.首先是首頁(注冊頁)index.jsp 點擊注冊跳到do_register.jsp頁面
2.do_register.jsp頁面處理注冊請求
3.注冊成功后,請求轉發到login.jsp登錄頁面
url顯示register_do.jsp
請求的轉發只有一個request對象!!!
?
參數在兩個服務端頁面間的傳遞
在register_do.jsp中
request.setAttribute(“message”,“注冊成功,請登錄!”);
request.getRequestDispatcher(“login.jsp”).forward(request,response);
在login.jsp中
String msg=request.getAttribute(“msg”).toString(); request.getAttribute(“msg”);返回的是對象!!!
中文亂碼
情形一:
默認的編碼 ISO-8859-1 導致中文亂碼
亂碼問題以及怎么解決 utf-8
eclipse更改默認編碼:
window->preferences->web->JSP Files 更改encoding為utf-8
情形二:
String sex=request.getParameter(“sex”);
System.out.println(new String(sex.getBytes(“iso-8859-1”),“utf-8”));
=》
String sex=new String(request.getParameter(“sex”).getBytes(“iso-8859-1”),“utf-8”);
情形三:
request.setCharacterEncoding(“utf-8”);
之后再去取得參數。
?
session會話
一個客戶端創建一個session對話
session銷毀:長時間不與服務器進行交互、關閉瀏覽器、關閉電腦
login_do.jsp
session.setAttribute(“user”, user);
session可在任何頁面訪問
login.jsp和register.jsp頁面
Object o=session.getAttribute(“user”);
if(o!=null){
User user=(User) o;
out.println(“當前登錄用戶:”+user.getUsername()+"
");
}
personcenter.jsp
User user=(User)session.getAttribute(“user”);
jsp九大內置對象https://blog.csdn.net/qq_40587575/article/details/79810019
?
application
application可以傳遞參數,但不推薦,application是所有客戶端共享的,不安全。
application統計網站登錄的數據
數據是所有客戶端共享的
login_do.jsp頁面
int number=0; if(application.getAttribute("userNumber")!=null){number=(Integer)application.getAttribute("userNumber"); } number++; application.setAttribute("userNumber",number);強轉之前一定要判斷key是否為空
index.jsp
Object o2=application.getAttribute("userNumber"); if(o2!=null){out.println("當前登錄用戶:"+o2+"個!<br/>"); }?
servlet
怎么訪問Servlet?
Servlet是一個java類,我們需要給類添加一個對應的路徑
@WebServlet("/register_do")
配置該Servlet類路徑為register_do
servlet多用來做邏輯處理,處理完后把請求轉發給jsp
?
servlet中獲得jsp內置對象
1.用this.getServletContext()方法獲得application
比如ServletContext application=this.getServletContext();
2.request.getSession();獲得session
?
web.xml配置servlet路徑
當我們部署一個項目的時候,其實就是把項目放到tomacat下的webapps目錄下的
WEB-INF下 web.xml配置servlet
web.xml
我們創建項目的版本和web.xml版本保持一致version=“ ”;
按住ctrl后可以打開我們寫的類,則說明沒有配置錯
注意
1.<servlet-name>只是給配置的這個類起個名字
確保<servlet>和<servlet-mapping>下的<servlet-name>保持一致
2.<servlet-class>是要配置的類 ?<url-pattern>是配置的訪問路徑
3.配置的路徑不要忘記加/ !!!
?
請求轉發與重定向
response.sendRedirect(“login.jsp”);
if(isSuccess){request.setAttribute("message","注冊成功,請登錄!");//請求轉發//request.getRequestDispatcher("login.jsp").forward(request,response); //重定向response.sendRedirect("login.jsp"); }else{request.setAttribute("message","注冊失敗,用戶重復!");request.getRequestDispatcher("register.jsp").forward(request,response); }請求轉發與重定向
相同點:把一個新的頁面返回給客戶端
區別:
請求轉發:直接把這個頁面返回給客戶端,但是url不變
重定向:讓客戶端發起一個新的請求返回頁面,url是返回頁面的
request.setAtribute()提示的信息,重定向無法得到
?
eclipse常用快捷鍵
alt+/ 引入包名
引入注解
ctrlj+鼠標左鍵 查看源碼
參考教程
http://www.sikiedu.com/course/214
總結
以上是生活随笔為你收集整理的javaweb第一季笔记【siki学院】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: geojson 包含道路_GeoJSON
- 下一篇: 利用Python网络爬虫获取电影天堂视频