Skip to content
Rain Hu's Workspace
Go back

[Java] 淺談 Java MVC

Rain Hu

前言

MVC

SSH

SSM

SSH v.s. SSM

Spring-MVC v.s. Struts

  1. Struts 和 Spring-MVC 都負責取轉發,但兩者針對 request 的請求上區別很大,
    • Struts 是針對一個 Action class 來進行 request,即一個 Action 對應一個 request,屬於類攔截,請求的數據類共享。
    • Spring-MVC 則是針對 method 級別的 request,即一個 method 對應一個 request,屬於方法攔截,請求的數據方法不共享。
  2. Spring-MVC 的配置文件相對較少,容易上手,方便開發。
  3. Spring-MVC 的入口是 Servlet 級別的而 Struts 的級別是 Filter 級別的。

Hibernate v.s. MyBatis

  1. Hibernate 是一種 O/R 關係型,即完成資料庫和持久化類別之間的映射;而 MyBatis 是針對的 SQL-Mapping。猶如 Hibernate 是對資料庫封裝完成後,調用相對應的語句(HQL)來控制資料庫;而 MyBatis 是用原生的資料庫語法。
  2. 基於以上原因,Hibernate 的優化較 MyBatis 難,MyBatis 不需要額外學習新的語法,入門較快。
  3. 對於更高級的 Queuy,MyBatis 需要編寫 SQL 語句與 ResultMap。而 Hibernate 有因應的映射機制,無需關心 SQL 的生成與結果映射,可以專注於開發流程。
  4. Hibernate 的資料庫移植性很好,MyBatis 的資料庫移植性不好,不同的資料庫需要寫不同的 SQL。

Spring

Spring、Spring MVC、Spring Boot

Spring 的核心基礎

DI

// 1
System.out.println("This is Spring");

// 2
String str = "This is Spring";
System.out.println(str);

IoC

public class User{
    Family family = new Family("Jason", "Jocelyn", "Mark", "Eva");
    public void showAll(){
        family.showFamily();
    }
}

public class Family{
    String dad;
    String mom;
    String son;
    String dau;

    public Family(String dad, String mom, String son, String dau){
        this.dad = dad;
        this.mom = mom;
        this.son = son;
        this.dau = dau;
    }

    public void showFamily(){
        System.out.println(dad + " " + mom + " " + son + " " + dau);
    }
}
<?xml version="1.0" encoding="UTF-8"?>

<beans>
    <bean id="family" class="Family">
        <property name="dad" value="Jason" />
        <property name="mom" value="Jocelyn" />
        <property name="son" value="Mike" />
        <property name="dau" value="Eva" />
    </bean>
    <bean id="user" class="User">
        <property name="allFamily" value="family" />
    </bean>
</beans>

實例 DI + IoC

public class Diner{
    Food food;
    public void getDinner(){
        food.getFood();
    }
}
<?xml version="1.0" encoding="UTF-8"?>

<beans>
    <bean id="pork" class="Pork"/>
    <bean id="chicken" class="Chicken"/>
    <bean id="food" class="Food">
        <property name="food" value="chicken" />
    </bean>
</beans>
public interface Food{
    public void getFood();
}
public class Chicken implements Food{
    @override
    public void getFood(){
        System.out.println("Eat chicken");
    }
}
public class Pork implements Food{
    @override
    public void getFood(){
        System.out.println("Eat pork");
    }
}

Spring Boot

Spring Boot makes it easy to create stand-alone, production-grade Spring baesd Applications that you can “just run”. We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

特色

  1. 創建獨立的 Spring 應用程式
  2. 嵌入式 Tomcat、Jetty; Undertow(不用部署 WAR 包)
  3. 提出自主的 starter 來簡化配置
  4. 隨時自動地配置 Spring 及相關的第三方庫
  5. 提供已隨時就緒的功能如 Metrics,程式的健檢及外部化配置
  6. 不會生成任何代碼及無任何 XML 配置的前設要求

Share this post on:

Previous
[VHDL] Verilog Hardware Description Language
Next
[IT] Introduction to Microservices, Docker and Kubernetes