課(ke)程(cheng)咨詢: 400-996-5531 / 投(tou)訴建(jian)議: 400-111-8989
認真做教育 專(zhuan)心促就業
參賽學員:鄒(zou)龍(long)章
獲獎獎項:三等獎
大家好!很高興在這個平臺上給大家分享一些knowledge,同時感謝達內能(neng)提供(gong)這么(me)一(yi)個好(hao)的機會。謝(xie)謝(xie)!
親,你(ni)們的好評是對我(wo)的鼓(gu)勵(li),請大(da)(da)家多多支(zhi)持(chi)我(wo),我(wo)會(hui)拿出自己的最大(da)(da)的精(jing)力來與(yu)大(da)(da)家分享我(wo)所學的。
java EE( Plantfor Enterprise Edition)是(shi) sun公司推出的(de)企(qi)(qi)業級(ji)應用(yong)(yong)程序版本。這個版本以前成為J2EE.能(neng)夠(gou)幫(bang)助我們開(kai)發和部(bu)署可移(yi)植、健(jian)壯、可伸縮且安全的(de)服(fu)務(wu)器端(duan)java應用(yong)(yong)程序。 java EE 是(shi)在(zai)java SE的(de)基礎(chu)上構建(jian)的(de),它提供Web服(fu)務(wu)、組建(jian)模(mo)型、管理和通信(xin)API,可以用(yong)(yong)來實現企(qi)(qi)業級(ji)的(de)面向(xiang)服(fu)務(wu)體系結構和Web 2.0應用(yong)(yong)程序。
J2EE本身是(shi)一個(ge)標(biao)(biao)準,一個(ge)為企業(ye)分(fen)布式應用的開(kai)發提供的標(biao)(biao)準平臺(tai)。J2EE也是(shi)一個(ge)框架(jia),包(bao)括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。
java EE 的體系結構:
1、表示層(ceng)(HTML、、Ajax)
2、中(zhong)間層(JSP、Servlet、JSTL、JavaBean)(Struts)
3、數據層(JDBC)()
三層體系結構(gou)的優點?
1、耦合性(xing)低 2、擴展性(xing)好(hao) 3、復(fu)用性(xing)好(hao) 4、便于分工
j2ee常用的設(she)計模式:
Java中的(de)23種設計模(mo)式:
Factory(工廠(chang)模(mo)式(shi)), Builder(建(jian)造模(mo)式(shi)), Factory Method(工廠(chang)方法模(mo)式(shi)),
Prototype(原始模(mo)型模(mo)式),Singleton(單例模(mo)式), Facade(門(men)面模(mo)式),
Adapter(適(shi)配(pei)器模式(shi)), Bridge(橋梁模式(shi)), Composite(合成模式(shi)),
Decorator(裝飾(shi)模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模(mo)式(shi)), Interpreter(解釋器模(mo)式(shi)), Visitor(訪問者模(mo)式(shi)),
Iterator(迭代(dai)子(zi)模式(shi)), Mediator(調停(ting)者模式(shi)), Memento(備忘(wang)錄模式(shi)),
Observer(觀察者模式(shi)(shi)), State(狀態模式(shi)(shi)), Strategy(策略模式(shi)(shi)),
Template Method(模板方法模式), Chain Of Responsibility(責任鏈(lian)模式)
工廠(chang)(chang)模(mo)(mo)(mo)式(shi):工廠(chang)(chang)模(mo)(mo)(mo)式(shi)是一(yi)種(zhong)經常(chang)被使用到的模(mo)(mo)(mo)式(shi),根據工廠(chang)(chang)模(mo)(mo)(mo)式(shi)實(shi)現的類可以(yi)根據提供的數(shu)據生(sheng)成一(yi)組類中某(mou)一(yi)個類的實(shi)例,
通常這(zhe)一組(zu)類有(you)一個公共的抽象父類并(bing)且實現了相同的方法,但是(shi)這(zhe)些方法針對(dui)不同的數(shu)據(ju)進行了不同的操作。首先(xian)需要
定義(yi)一個基類,該類的子(zi)類通過不(bu)同(tong)的方法(fa)實現了(le)基類中的方法(fa)。然后(hou)需要定義(yi)一個工廠(chang)類,工廠(chang)類可以根據條件生成不(bu)同(tong)
的(de)(de)子(zi)類實例(li)。當(dang)得到子(zi)類的(de)(de)實例(li)后,開發人員可以調(diao)用基類中的(de)(de)方(fang)法而(er)不必考(kao)慮(lv)到底返回的(de)(de)是哪一個子(zi)類的(de)(de)實例(li)。
HTTP協(xie)議的提交(jiao)方式:
1、GET——用URL傳遞(di)數據
2、POST——用(yong)流(liu)的方式傳遞數據
Servlet是一個,是在(zai)服務器端(duan)運行的(de)以(yi)處理客戶端(duan)請求并做出響應(ying)的(de)程序。
Servlet類一定(ding)要(yao)繼承HttpServlet,Servlet必須和Servlet容器(qi)配合運行(xing),Servlet要(yao)嵌入(ru)容器(qi)才能運行(xing)。
Web應(ying)用程序的(de)結構:
tomcat—webapps—appName:
http://ip:port/appName/index.jsp
1、頁面和(he)圖片(pian)(可(ke)以(yi)自己組織(zhi)結構,可(ke)以(yi)從客戶端直(zhi)接(jie)訪問,jsp、html、js、jpg.....)
2、WEB-INF 目(mu)錄(必須有的(de) 其中的(de)東西不能從客戶端直接訪問 )
a、web.xml (必須有 Web程序的總體(ti)配置(zhi),是一個核心)
b、classes文件夾(必須的 Servlet和JavaBean編(bian)譯成Class后存放于該(gai)文件夾)
c、lib文件夾(jia)(存放該程序用的類(lei)庫jar包)
Web .xml中要(yao)對Servlet進行一些配置
<Servlet>
<servlet-name>test</servlet-name>
<servlet-class>org.owl.servlets.TestServlet</servlet-class>
</Servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
JSP在(zai)運行(xing)(xing)時需要(yao)翻譯(yi)成一個Servlet程序,然(ran)后再編譯(yi)成Class文(wen)件,然(ran)后才可以運行(xing)(xing)。
Servlet的生命周期(qi)由Servlet容器(qi)來管理
Servlet的(de)聲(sheng)明周期:
1、加(jia)載和實例化(hua)(構造方(fang)法): 在(zai)Web容器中查(cha)找用(yong)戶請求的Servlet,如果(guo)沒有找到(dao),則實例化(hua),如果(guo)找到(dao),則加(jia)載。
2、初始(shi)化(init):在(zai)實例化后(hou)調(diao)用的方法,可以(yi)初始(shi)化一些資源(yuan)。
3、服務(wu)(service): 接(jie)受請求并做出響應(ying)。根據請求的方式不同,調用doXXX方法(fa)。
4、銷毀(destory): 主要用來銷毀初(chu)始化時創建(jian)的資(zi)源,在destory方法中我們標識哪些資(zi)源可以回收,并不能馬上回收。
如(ru)何獲得請(qing)求參數(shu)?
1. request。getParameter(“name”);
2. 如果一個(ge)請求參數(shu)有(you)多個(ge)值,需要(yao)返回一個(ge)數(shu)組(zu)!
String []size=request.getParameter(“name”);
For(int i=0;i<size.length;i++){
out.print(size[0]);
}
除了參數,還可以獲得其他(ta)
1與請(qing)求(qiu)相關的cookie Cookie [] cookies=request.getCookies();
2與會話相(xiang)關(guan)的session Session session=request.getSession();
3請(qing)求的HTTP方法 String methed=request.getMethed();
初始化參數:
在(zai)web.xml中(zhong)設置servlet初始化(hua)參數(shu)
<servlet>
<servlet-name> dbinit </servlet-name>
<servlet-class> strutsfinalcase.db.util.DBInit </servlet-class>
<init-param>
<param-name> driverClass </param-name>
<param-value> org.gjt.mm.mysql.Driver </param-value>
</init-param>
<servlet>
解釋:容(rong)器(qi)初始(shi)化一(yi)(yi)個servlet時,會(hui)為這個servlet創(chuang)建一(yi)(yi)個唯一(yi)(yi)的ServletConfig, 容(rong)器(qi)從DD讀出servlet初始(shi)化參數,交給(gei)ServletConfig然(ran)后轉(zhuan)遞給(gei)servlet的init()方法
在(zai)servlet 代碼中獲得(de)初始化參(can)數的值:
getServletConfig(),getInitParameter(“param-name”);
上下文(wen)初始化(hua)參數
<context-param>
<param-name>name</param-name>
<param-value>John</param-value>
</context-param>
在servlet 代碼中獲得上(shang)下文初始化參(can)數的值:
getServletContext().getInitParameter(“name”);
ServletContext
用于(yu)在Web應用范圍內存(cun)取共(gong)享數據的方法(fa)。
注:web應用(yong)范圍具有以(yi)下兩層含義:
(1) 表示有web應(ying)用的(de)生命周期構成的(de)時(shi)間段.
(2) 表(biao)示在(zai)web應(ying)用的生命周期內(nei)所(suo)有web組件(jian)的集(ji)合。
* setAttribute(String name,java.lang.Object object):把一(yi)個java對象和一(yi)個屬性名(ming)綁定,并存放到ServletContext中,參數name指定屬性名(ming),參數Object表(biao)示共享數據。
* getAttribute(String name):根據參數給定(ding)的(de)屬性名,返回一個Object類型的(de)對象。
* getAttributeNames():返(fan)回(hui)一個Enumeration對象,該對象包含了所有存放(fang)在ServletContext中的屬性名(ming)。
* removeAttribute(String name):根據參數指(zhi)定的屬(shu)性名(ming),從servletContext對象中(zhong)刪除匹配的屬(shu)性。
訪(fang)問當前(qian)Web應用的資(zi)源
* getContextpath():返回當(dang)前web應用的URL入口。
* getInitParameter(String ame):返回web應用方(fang)位內(nei)的匹配的初(chu)始(shi)化(hua)參數值。在(zai)web.xml中元(yuan)素中元(yuan)素表(biao)示應用范(fan)圍內(nei)的初(chu)始(shi)化(hua)參數。
* getInitParameterNames():返回一(yi)個Enumeration對象(xiang)。
* getServletContextName():返回(hui)web應用的名字。即元素(su)中元素(su)的值。
* getRequestDispatcher(String path):返(fan)回一個用于向其他(ta)web組件轉發請求的(de)RequestDispatcher對(dui)象。
web.xml文件
web.xml文(wen)件是用來初始化配置信息:比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動加載級別等
1、指定(ding)歡迎頁面,例如:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
:指(zhi)定了2個(ge)歡迎頁(ye)面,顯示(shi)時按(an)順序從第(di)一個(ge)找起,如(ru)果第(di)一個(ge)存(cun)在(zai),就顯示(shi)第(di)一個(ge),后面的不起作用(yong)。如(ru)果第(di)一個(ge)不存(cun)在(zai),就找第(di)二個(ge),以(yi)此類推(tui)。
2、命名(ming)與定(ding)制URL。我們可以為Servlet和JSP文件命名(ming)并定(ding)制URL,其中定(ding)制URL是依賴命名(ming)的(de),命名(ming)必須在定(ding)制URL前(qian)。下面拿(na)serlet來舉例:
(1)、為Servlet命(ming)名(ming):
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
</servlet>
(2)、為(wei)Servlet定(ding)制(zhi)URL、
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3、定(ding)(ding)制初(chu)(chu)始化(hua)參(can)(can)數:可以(yi)(yi)定(ding)(ding)制servlet、JSP、Context的初(chu)(chu)始化(hua)參(can)(can)數,然后可以(yi)(yi)再(zai)servlet、JSP、Context中獲取這(zhe)些參(can)(can)數值。
下面用servlet來舉例:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>Daniel</param-value>
</init-param>
<init-param>
<param-name>E-mail</param-name>
<param-value>125485762@qq.com</param-value>
</init-param>
</servlet>
經過上(shang)面的配置,在servlet中(zhong)能夠(gou)調(diao)用(yong)getServletConfig().getInitParameter("param1")獲得參(can)數(shu)名對應的值。
4、指(zhi)定(ding)錯誤處理頁面,可以(yi)通過(guo)“異(yi)常類型”或“錯誤碼”來指(zhi)定(ding)錯誤處理頁面。
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
-----------------------------
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>
5、設(she)置過濾器(qi):比如設(she)置一個編碼過濾器(qi),過濾所有資源
<filter>
<filter-name>XXXCharaSetFilter</filter-name>
<filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXCharaSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6、設置監聽器:
<listener> <listener-class>net.test.XXXLisenet</listener-class> </listener>
7、設(she)置(zhi)會(hui)話(hua)(Session)過(guo)期時間,其中(zhong)時間以分(fen)鐘(zhong)為(wei)單位,假如設(she)置(zhi)60分(fen)鐘(zhong)超時:
<session-config> <session-timeout>60</session-timeout> </session-config>
8.設置上下文(wen)初(chu)始(shi)化參數(shu)(對于(yu)整個web應用(yong)都適用(yong))
<context-param> <param-name>foo</param-name> <param-value>bar</param-value> </context-param>
在servlet中獲取上下文參(can)數初始化
String s=getContex().getInitParameter("foo");
3.重定向和請求分派的(de)比較
<1>請(qing)求分派只能(neng)將請(qing)求轉發給(gei)同一個web應用中的其他組(zu)件,而重定向不僅可以定向到(dao)(dao)當前應用程序中的其他資源,也可重定向到(dao)(dao)其他站點的資源上(shang)
<2>重(zhong)定向的(de)(de)訪問過程結束后,瀏(liu)覽器的(de)(de)地(di)址欄(lan)顯示(shi)的(de)(de)URL會發生改(gai)變(bian),變(bian)成重(zhong)定向的(de)(de)目標URL,而請求分派的(de)(de)瀏(liu)覽器地(di)址欄(lan)保持(chi)初始(shi)的(de)(de)URL
<3>請求分派的(de)(de)發起者和被(bei)調者之間共享相(xiang)同(tong)的(de)(de)request實(shi)例(li)和response實(shi)例(li),屬于(yu)(yu)同(tong)一(yi)個(ge)“請求/響應”而重(zhong)定向(xiang)的(de)(de)發起者和被(bei)調用者使用各自(zi)的(de)(de)request實(shi)例(li)和response實(shi)例(li),各自(zi)屬于(yu)(yu)獨立的(de)(de)“請求/響應”過程。
請求轉發(fa) RequestDispatcher dis=request.getRequestDispatcher("Servlet2");
dis.forward(request, response);
重(zhong)定向 response.sendRedirect("Servlet2"); //重(zhong)定向到指定路(lu)徑的資源(yuan)
get 和post 比較
1. get是(shi)從(cong)服務器(qi)上獲取數據,post是(shi)向服務器(qi)傳送數據。
2. get是(shi)把參數數據(ju)隊列加到(dao)提交表(biao)單的ACTION屬性所指的URL中,值(zhi)和表(biao)單內各(ge)個字段一(yi)一(yi)對(dui)應,在URL中可以看到(dao)。post是(shi)通過HTTP post機(ji)制,將表(biao)單內各(ge)個字段與其內容放置在HTML HEADER內一(yi)起傳送(song)到(dao)ACTION屬性所指的URL地址(zhi)。用戶看不(bu)到(dao)這個過程。
3. 對(dui)于get方(fang)(fang)式(shi)(shi),服(fu)務器(qi)端(duan)(duan)用Request.QueryString獲取變(bian)量的值,對(dui)于post方(fang)(fang)式(shi)(shi),服(fu)務器(qi)端(duan)(duan)用Request.Form獲取提交的數據。
4. get傳(chuan)送的數據量較(jiao)小,不能大(da)(da)于2KB。post傳(chuan)送的數據量較(jiao)大(da)(da),一(yi)般被默認為(wei)不受限制(zhi)。但理論上,IIS4中最大(da)(da)量為(wei)80KB,IIS5中為(wei)100KB。
5. get安全性非常低,post安全性較高。但是執行效(xiao)率卻比(bi)Post方法好。
Tomcat服務(wu)器
運行Java Web程序必須有(you)相應Web容器(qi)支持,所有(you)的動態程序代碼都在Web容器(qi)中執行,Tomcat是一個web容器(qi);
靜態請求的所(suo)有代碼(ma)操作都是固定的,動態請求操作的所(suo)有代碼(ma)都是拼湊的;
Tomcat是(shi)有Apache軟(ruan)件基金會的(de)Jakarta項目(mu)中的(de)一(yi)個核心(xin)項目(mu),有Apache、sun和(he)其他一(yi)些(xie)公司及個人共同開(kai)發而成;
使用Tomcat必須有JDK的(de)支持
Tomcat中(zhong)主要文件夾:bin/conf/lib/logs/webapps/work
任(ren)何服務器都是依靠端口(kou)號進行監聽的(de)
服務器配置
(1)修改端口號——conf/server.xml (2)配置虛擬目錄——磁盤下建立文件夾、建立WEB-INF文件、復制web.xml文件,服務器端配置<Context path="/sjwin" docBase="url"/> 修改conf/web.xml文件listings中false為true,重啟Apache服務 (3)配置首頁——index.xxx;<welcome-file-list><welcome-file>main.htm</welcome-file></welcome-file-list>
【免責聲(sheng)明】本(ben)文(wen)部分(fen)系轉載,轉載目的(de)在(zai)于傳遞(di)更多信息,并不(bu)代表本(ben)網贊同其觀點和(he)對其真實性負責。如涉及(ji)作品內容、版權和(he)其它問題(ti),請在(zai)30日內與聯系我們,我們會予以更改或刪除相(xiang)關文(wen)章(zhang),以保證(zheng)您(nin)的(de)權益!