JavaEE

一.Servlet介紹

Servlet 是一些遵從Java Servlet API的Java類,這些Java類可以響應(yīng)請求。盡管Servlet可以響應(yīng)任意類型的請求,但是它們使用最廣泛的是響應(yīng)web方面的請求。 Servlet必須部署在Java servlet容器才能使用。雖然很多開發(fā)者都使用Java Server Pages(JSP)等Servlet框架,但是這些技術(shù)都要在幕后通過Servlet容器把頁面編譯為Java Servlet。也就是說,了解Java Servlet技術(shù)的基礎(chǔ)知識(shí)對任何Java web開發(fā)者來說是很有用的。
編寫第一個(gè)Servlet

public class MyFirstServlet extends HttpServlet {
 
    private static final long serialVersionUID = -1915463532411657451L;
 
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException 
    {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            // Write some content
            out.println("<html>");
            out.println("<head>");
            out.println("<title>MyFirstServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>Servlet MyFirstServlet at " + request.getContextPath() + "</h2>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
 
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        //Do some other work
    }
}

為了在web容器里注冊上面的Servlet,你要為你的應(yīng)用建一個(gè)web.xml入口文件。

<?xml version="1.0"?>
<web-app     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_0.xsd"
 
            version="3.0">
 
    <welcome-file-list>
        <welcome-file>/MyFirstServlet</welcome-file>
    </welcome-file-list>
 
    <servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>com.howtodoinjava.servlets.MyFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyFirstServlet</servlet-name>
        <url-pattern>/MyFirstServlet</url-pattern>
    </servlet-mapping>
 
</web-app>
  1. MyFirstServlet類繼承了HttpServlet。這個(gè)繼承是必須的,因?yàn)樗械腟ervlet必須是要么繼承了 javax.servlet.GenericServlet 的普通Servlet,要么是繼承了 javax.servlet.http.HttpServlet 的HTTP Servlet。
  2. 重新 doGet() 和 doPost() 方法。這兩個(gè)方法都已在 HttpServlet 類里定義了。當(dāng)一個(gè)GET或POST請求到來時(shí),它就會(huì)被映射到相應(yīng)的方法里。例如,如果你向這個(gè)servlet發(fā)送一個(gè)HTTP GET請求,doGet()方法就會(huì)被調(diào)用。

Servlet可以簡單地理解成一個(gè)請求,簡稱Action。

二.JSP的概念

JSP全名為Java Server Pages,中文名叫java服務(wù)器頁面,其根本是一個(gè)簡化的Servlet是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML標(biāo)準(zhǔn)通用標(biāo)記語言的子集文件中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件,后綴名為(*.jsp)。 用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。
它實(shí)現(xiàn)了Html語法中的java擴(kuò)展(以 <%, %>形式)。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。通常返回給客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)的顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 JSP(JavaServer Pages)是一種動(dòng)態(tài)頁面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來。

Java Servlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺(tái)無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。

三. Java Web中的MVC模式

概念:

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)數(shù)據(jù)、邏輯、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。

最典型的MVC就是Jsp + Servlet + JavaBean的模式


圖3-1.png

四.SSH框架

我們可以很快地發(fā)現(xiàn)Servlet問題,比如現(xiàn)在有一個(gè)需求,CRUD某個(gè)表,那么這四種操作需要4個(gè)Servlet來實(shí)現(xiàn),這樣未免太過麻煩,于是框架的出現(xiàn)很好地解決了這一點(diǎn)。

struts2:通俗的講就是為了完成MVC模型中的C的功能,也就是編寫具體的業(yè)務(wù)邏輯的地方。從他的設(shè)計(jì)上來看就是請求到了web容器,然后經(jīng)過了一系列的過濾器,再通過請求FilterDispatcher詢問ActionMapper是否需要調(diào)用某個(gè)Action,如果要調(diào)用的話, 然后執(zhí)行先前配置好的攔截器,就到了我們的具體邏輯,執(zhí)行完之后,還會(huì)繼續(xù)執(zhí)行對應(yīng)的攔截器和過濾器邏輯,最后返回給調(diào)用方。

Spring: 通俗的講只是通過它的核心IOC來管理我們編寫邏輯中間的一些bean。我們通過IOC來減少耦合和簡化對象的操作。

Hibernate: 是對象關(guān)系映射框架,簡單的說,它就是對JDBC進(jìn)行了非常輕量級的對象封裝,目的是讓操作數(shù)據(jù)庫像操作對象一樣簡單。

圖4-1.png

SSH是 struts+spring+hibernate的一個(gè)集成框架
集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層,數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向?qū)ο蠓治龇椒ǜ鶕?jù)需求提出一些模型,將這些模型實(shí)現(xiàn)為基本的Java對象,然后編寫基本的DAO接口,并給出Hibernate的DAO實(shí)現(xiàn),采用Hibernate架構(gòu)實(shí)現(xiàn)的DAO類來實(shí)現(xiàn)Java類與數(shù)據(jù)庫之間的轉(zhuǎn)換和訪問,最后由Spring管理struts和hibernate。

五.SSM介紹

因?yàn)镽estful風(fēng)格的流行,SSH框架逐漸過時(shí),出現(xiàn)了SSM框架,其中spring是一個(gè)輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。SpringMVC分離了控制器、模型對象、分派器以及處理程序?qū)ο蟮慕巧@種分離讓它們更容易進(jìn)行定制。MyBatis是一個(gè)支持普通SQL查詢,存儲(chǔ)過程和高級映射的優(yōu)秀持久層框架。
Spring:
Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來實(shí)例化對象。
Spring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地new一個(gè)對象,而是讓Spring框架幫你來完成這一切。

SpringMVC:
SpringMVC在項(xiàng)目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺(tái)這樣的職責(zé),將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應(yīng)請求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。

mybatis:
mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開的。mybatis通過配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對數(shù)據(jù)庫所需進(jìn)行的sql語句映射。在每次與數(shù)據(jù)庫交互時(shí),通過sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。

圖5-1.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容