For investors

股價(jià):

5.36 美元 %
認(rèn)識(shí)達(dá)內(nèi)從這里開(kāi)始

認(rèn)真做教育 專(zhuān)心促就業(yè)

雜談javaEE重點(diǎn),分享交流經(jīng)驗(yàn)

  • 發(fā)布:IT培訓(xùn)
  • 來(lái)源:達(dá)內(nèi)
  • 時(shí)間:2014-12-04 00:54

參賽學(xué)員:鄒龍章

獲獎(jiǎng)獎(jiǎng)項(xiàng):三等獎(jiǎng)

大家好!很高興在這個(gè)平臺(tái)上給大家分享一些knowledge,同時(shí)感謝達(dá)內(nèi)能提供這么一個(gè)好的機(jī)會(huì)。謝謝!

親,你們的好評(píng)是對(duì)我的鼓勵(lì),請(qǐng)大家多多支持我,我會(huì)拿出自己的最大的精力來(lái)與大家分享我所學(xué)的。

java EE(Java Plantfor Enterprise Edition)是 sun公司推出的企業(yè)級(jí)應(yīng)用程序版本。這個(gè)版本以前成為J2EE.能夠幫助我們開(kāi)發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端java應(yīng)用程序。 java EE 是在java SE的基礎(chǔ)上構(gòu)建的,它提供Web服務(wù)、組建模型、管理和通信API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)和Web 2.0應(yīng)用程序。

J2EE本身是一個(gè)標(biāo)準(zhǔn),一個(gè)為企業(yè)分布式應(yīng)用的開(kāi)發(fā)提供的標(biāo)準(zhǔn)平臺(tái)。J2EE也是一個(gè)框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術(shù)。

java EE 的體系結(jié)構(gòu):

1、表示層(HTML、JavaScript、Ajax)

2、中間層(JSP、Servlet、JSTL、JavaBean)(Struts)

3、數(shù)據(jù)層(JDBC)(Hibernate)

三層體系結(jié)構(gòu)的優(yōu)點(diǎn)?

1、耦合性低 2、擴(kuò)展性好 3、復(fù)用性好 4、便于分工

j2ee常用的設(shè)計(jì)模式:

Java中的23種設(shè)計(jì)模式:

Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式), Facade(門(mén)面模式),

Adapter(適配器模式), Bridge(橋梁模式), Composite(合成模式),

Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),

Command(命令模式), Interpreter(解釋器模式), Visitor(訪問(wèn)者模式),

Iterator(迭代子模式), Mediator(調(diào)停者模式), Memento(備忘錄模式),

Observer(觀察者模式), State(狀態(tài)模式), Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibility(責(zé)任鏈模式)

工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實(shí)現(xiàn)的類(lèi)可以根據(jù)提供的數(shù)據(jù)生成一組類(lèi)中某一個(gè)類(lèi)的實(shí)例,

通常這一組類(lèi)有一個(gè)公共的抽象父類(lèi)并且實(shí)現(xiàn)了相同的方法,但是這些方法針對(duì)不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要

定義一個(gè)基類(lèi),該類(lèi)的子類(lèi)通過(guò)不同的方法實(shí)現(xiàn)了基類(lèi)中的方法。然后需要定義一個(gè)工廠類(lèi),工廠類(lèi)可以根據(jù)條件生成不同

的子類(lèi)實(shí)例。當(dāng)?shù)玫阶宇?lèi)的實(shí)例后,開(kāi)發(fā)人員可以調(diào)用基類(lèi)中的方法而不必考慮到底返回的是哪一個(gè)子類(lèi)的實(shí)例。

HTTP協(xié)議的提交方式:

1、GET——用URL傳遞數(shù)據(jù)

2、POST——用流的方式傳遞數(shù)據(jù)

Servlet是一個(gè)java程序,是在服務(wù)器端運(yùn)行的以處理客戶(hù)端請(qǐng)求并做出響應(yīng)的程序。

Servlet類(lèi)一定要繼承HttpServlet,Servlet必須和Servlet容器配合運(yùn)行,Servlet要嵌入容器才能運(yùn)行。

Web應(yīng)用程序的結(jié)構(gòu):

tomcat—webapps—appName:

http://ip:port/appName/index.jsp

1、頁(yè)面和圖片(可以自己組織結(jié)構(gòu),可以從客戶(hù)端直接訪問(wèn),jsp、html、js、jpg.....)

2、WEB-INF 目錄(必須有的 其中的東西不能從客戶(hù)端直接訪問(wèn) )

a、web.xml (必須有 Web程序的總體配置,是一個(gè)核心)

b、classes文件夾(必須的 Servlet和JavaBean編譯成Class后存放于該文件夾)

c、lib文件夾(存放該程序用的類(lèi)庫(kù)jar包)

Web .xml中要對(duì)Servlet進(jìn)行一些配置

 <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在運(yùn)行時(shí)需要翻譯成一個(gè)Servlet程序,然后再編譯成Class文件,然后才可以運(yùn)行。

Servlet的生命周期由Servlet容器來(lái)管理

Servlet的聲明周期:

1、加載和實(shí)例化(構(gòu)造方法): 在Web容器中查找用戶(hù)請(qǐng)求的Servlet,如果沒(méi)有找到,則實(shí)例化,如果找到,則加載。

2、初始化(init):在實(shí)例化后調(diào)用的方法,可以初始化一些資源。

3、服務(wù)(service): 接受請(qǐng)求并做出響應(yīng)。根據(jù)請(qǐng)求的方式不同,調(diào)用doXXX方法。

4、銷(xiāo)毀(destory): 主要用來(lái)銷(xiāo)毀初始化時(shí)創(chuàng)建的資源,在destory方法中我們標(biāo)識(shí)哪些資源可以回收,并不能馬上回收。

如何獲得請(qǐng)求參數(shù)?

1. request。getParameter(“name”);

2. 如果一個(gè)請(qǐng)求參數(shù)有多個(gè)值,需要返回一個(gè)數(shù)組!

  String []size=request.getParameter(“name”);

  For(int i=0;i<size.length;i++){

     out.print(size[0]);

}

除了參數(shù),還可以獲得其他

1與請(qǐng)求相關(guān)的cookie Cookie [] cookies=request.getCookies();

2與會(huì)話相關(guān)的session Session session=request.getSession();

3請(qǐng)求的HTTP方法 String methed=request.getMethed();

初始化參數(shù):

在web.xml中設(shè)置servlet初始化參數(shù)

 <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>

解釋?zhuān)喝萜鞒跏蓟粋€(gè)servlet時(shí),會(huì)為這個(gè)servlet創(chuàng)建一個(gè)唯一的ServletConfig, 容器從DD讀出servlet初始化參數(shù),交給ServletConfig然后轉(zhuǎn)遞給servlet的init()方法

在servlet 代碼中獲得初始化參數(shù)的值:

getServletConfig(),getInitParameter(“param-name”);

上下文初始化參數(shù)

          <context-param>
                  <param-name>name</param-name>
                  <param-value>John</param-value>
              </context-param>

在servlet 代碼中獲得上下文初始化參數(shù)的值:

getServletContext().getInitParameter(“name”);

ServletContext

用于在Web應(yīng)用范圍內(nèi)存取共享數(shù)據(jù)的方法。

注:web應(yīng)用范圍具有以下兩層含義:

(1) 表示有web應(yīng)用的生命周期構(gòu)成的時(shí)間段.

(2) 表示在web應(yīng)用的生命周期內(nèi)所有web組件的集合。

* setAttribute(String name,java.lang.Object object):把一個(gè)java對(duì)象和一個(gè)屬性名綁定,并存放到ServletContext中,參數(shù)name指定屬性名,參數(shù)Object表示共享數(shù)據(jù)。

* getAttribute(String name):根據(jù)參數(shù)給定的屬性名,返回一個(gè)Object類(lèi)型的對(duì)象。

* getAttributeNames():返回一個(gè)Enumeration對(duì)象,該對(duì)象包含了所有存放在ServletContext中的屬性名。

* removeAttribute(String name):根據(jù)參數(shù)指定的屬性名,從servletContext對(duì)象中刪除匹配的屬性。

訪問(wèn)當(dāng)前Web應(yīng)用的資源

* getContextpath():返回當(dāng)前web應(yīng)用的URL入口。

* getInitParameter(String ame):返回web應(yīng)用方位內(nèi)的匹配的初始化參數(shù)值。在web.xml中元素中元素表示應(yīng)用范圍內(nèi)的初始化參數(shù)。

* getInitParameterNames():返回一個(gè)Enumeration對(duì)象。

* getServletContextName():返回web應(yīng)用的名字。即元素中元素的值。

* getRequestDispatcher(String path):返回一個(gè)用于向其他web組件轉(zhuǎn)發(fā)請(qǐng)求的RequestDispatcher對(duì)象。

web.xml文件

web.xml文件是用來(lái)初始化配置信息:比如Welcome頁(yè)面、servlet、servlet-mapping、filter、listener、啟動(dòng)加載級(jí)別等

1、指定歡迎頁(yè)面,例如:

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>index1.jsp</welcome-file> 
  </welcome-file-list> 

PS:指定了2個(gè)歡迎頁(yè)面,顯示時(shí)按順序從第一個(gè)找起,如果第一個(gè)存在,就顯示第一個(gè),后面的不起作用。如果第一個(gè)不存在,就找第二個(gè),以此類(lèi)推。

2、命名與定制URL。我們可以為Servlet和JSP文件命名并定制URL,其中定制URL是依賴(lài)命名的,命名必須在定制URL前。下面拿serlet來(lái)舉例:

(1)、為Servlet命名:

<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>org.whatisjava.TestServlet</servlet-class> 
</servlet> 

(2)、為Servlet定制URL、

<servlet-mapping> 
    <servlet-name>servlet1</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping>

3、定制初始化參數(shù):可以定制servlet、JSP、Context的初始化參數(shù),然后可以再servlet、JSP、Context中獲取這些參數(shù)值。

下面用servlet來(lái)舉例:

<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> 

經(jīng)過(guò)上面的配置,在servlet中能夠調(diào)用getServletConfig().getInitParameter("param1")獲得參數(shù)名對(duì)應(yīng)的值。

4、指定錯(cuò)誤處理頁(yè)面,可以通過(guò)“異常類(lèi)型”或“錯(cuò)誤碼”來(lái)指定錯(cuò)誤處理頁(yè)面。

<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、設(shè)置過(guò)濾器:比如設(shè)置一個(gè)編碼過(guò)濾器,過(guò)濾所有資源

<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、設(shè)置監(jiān)聽(tīng)器:

<listener> 
<listener-class>net.test.XXXLisenet</listener-class> 
</listener> 

7、設(shè)置會(huì)話(Session)過(guò)期時(shí)間,其中時(shí)間以分鐘為單位,假如設(shè)置60分鐘超時(shí):

<session-config> 
<session-timeout>60</session-timeout> 
</session-config>

8.設(shè)置上下文初始化參數(shù)(對(duì)于整個(gè)web應(yīng)用都適用)

  <context-param>

  
   <param-name>foo</param-name>

   <param-value>bar</param-value>

</context-param>

在servlet中獲取上下文參數(shù)初始化

String s=getContex().getInitParameter("foo");

3.重定向和請(qǐng)求分派的比較

<1>請(qǐng)求分派只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)web應(yīng)用中的其他組件,而重定向不僅可以定向到當(dāng)前應(yīng)用程序中的其他資源,也可重定向到其他站點(diǎn)的資源上

<2>重定向的訪問(wèn)過(guò)程結(jié)束后,瀏覽器的地址欄顯示的URL會(huì)發(fā)生改變,變成重定向的目標(biāo)URL,而請(qǐng)求分派的瀏覽器地址欄保持初始的URL

<3>請(qǐng)求分派的發(fā)起者和被調(diào)者之間共享相同的request實(shí)例和response實(shí)例,屬于同一個(gè)“請(qǐng)求/響應(yīng)”而重定向的發(fā)起者和被調(diào)用者使用各自的request實(shí)例和response實(shí)例,各自屬于獨(dú)立的“請(qǐng)求/響應(yīng)”過(guò)程。

請(qǐng)求轉(zhuǎn)發(fā) RequestDispatcher dis=request.getRequestDispatcher("Servlet2");

dis.forward(request, response);

重定向 response.sendRedirect("Servlet2"); //重定向到指定路徑的資源

get 和post 比較

1. get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。

2. get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過(guò)HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶(hù)看不到這個(gè)過(guò)程。

3. 對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。

4. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

5. get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。

Tomcat服務(wù)器

運(yùn)行Java Web程序必須有相應(yīng)Web容器支持,所有的動(dòng)態(tài)程序代碼都在Web容器中執(zhí)行,Tomcat是一個(gè)web容器;

靜態(tài)請(qǐng)求的所有代碼操作都是固定的,動(dòng)態(tài)請(qǐng)求操作的所有代碼都是拼湊的;

Tomcat是有Apache軟件基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,有Apache、sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成;

使用Tomcat必須有JDK的支持

Tomcat中主要文件夾:bin/conf/lib/logs/webapps/work

任何服務(wù)器都是依靠端口號(hào)進(jìn)行監(jiān)聽(tīng)的

服務(wù)器配置

(1)修改端口號(hào)——conf/server.xml

(2)配置虛擬目錄——磁盤(pán)下建立文件夾、建立WEB-INF文件、復(fù)制web.xml文件,服務(wù)器端配置<Context path="/sjwin" docBase="url"/>

修改conf/web.xml文件listings中false為true,重啟Apache服務(wù)

(3)配置首頁(yè)——index.xxx;<welcome-file-list><welcome-file>main.htm</welcome-file></welcome-file-list>

【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!

相關(guān)推薦
最新資訊
免費(fèi)試聽(tīng)課程
  • 全部課程
  • IT課程
  • 設(shè)計(jì)課程
  • 運(yùn)營(yíng)課程
Free courses
最新開(kāi)班時(shí)間
  • 北京
  • 上海
  • 廣州
  • 深圳
  • 南京
  • 成都
  • 武漢
  • 西安
  • 青島
  • 天津
  • 杭州
  • 重慶
  • 哈爾濱
  • 濟(jì)南
  • 沈陽(yáng)
  • 合肥
  • 鄭州
  • 長(zhǎng)春
  • 蘇州
  • 長(zhǎng)沙
  • 昆明
  • 太原
  • 無(wú)錫
  • 石家莊
  • 南寧
  • 佛山
  • 珠海
  • 寧波
  • 保定
  • 呼和浩特
  • 洛陽(yáng)
  • 煙臺(tái)
  • 運(yùn)城
  • 濰坊
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
預(yù)約申請(qǐng)?jiān)嚶?tīng)課
收起