最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC MVC架構(gòu)與Servlet使用詳解

 更新時(shí)間:2022年10月10日 10:49:32   作者:Decade0712  
MVC設(shè)計(jì)模式一般指 MVC 框架,M(Model)指數(shù)據(jù)模型層,V(View)指視圖層,C(Controller)指控制層。使用 MVC 的目的是將 M 和 V 的實(shí)現(xiàn)代碼分離,使同一個(gè)程序可以有不同的表現(xiàn)形式。其中,View 的定義比較清晰,就是用戶界面

一、MVC架構(gòu)

1、MVC是什么

  • MVC是模型Model、視圖View和控制器Controller的簡稱,是一種架構(gòu)規(guī)范
  • 降低了業(yè)務(wù)邏輯與視圖之間的雙向耦合

2、MVC三層的主要構(gòu)成

  • Model(模型):包括數(shù)據(jù)和業(yè)務(wù),主要是Service和Dao
  • View(視圖):負(fù)責(zé)模型的展示,即用戶看到的界面,例如JSP
  • Controller(控制器):接收請求,委托給model進(jìn)行處理,等到處理完畢之后,將數(shù)據(jù)模型返回給視圖,由視圖負(fù)責(zé)展示,也就是說他起到一個(gè)中間人的作用,例如Servlet

3、MVC框架的作用

  • 將url映射到j(luò)ava類或java類的方法
  • 封裝用戶提交的數(shù)據(jù)
  • 處理請求–調(diào)用相關(guān)的業(yè)務(wù)處理–封裝響應(yīng)數(shù)據(jù)
  • 將響應(yīng)的數(shù)據(jù)進(jìn)行渲染 . jsp / html 等表示層數(shù)據(jù)

二、回顧Servlet

1、什么是servlet

Servlet 是指任何實(shí)現(xiàn)了這個(gè) Servlet 接口的類,它解決了當(dāng)瀏覽器發(fā)送請求到服務(wù)器時(shí),服務(wù)器按照請求尋找哪個(gè)Servlet類下的代碼,怎么執(zhí)行的問題

了解一下重定向和轉(zhuǎn)發(fā)的異同點(diǎn):

相同點(diǎn):頁面都會實(shí)現(xiàn)跳轉(zhuǎn)

不同點(diǎn):轉(zhuǎn)發(fā)的地址欄url不會變,重定向會變

2、簡單的servlet實(shí)例

首先我們需要在父工程的maven依賴中導(dǎo)入

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.18</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>

接著我們建立一個(gè)Moudle:springmvc-01-servlet , 右鍵添加Web app的支持

然后我們新建一個(gè)MyServlet,繼承HttpServlet (實(shí)際上還是實(shí)現(xiàn)了Servlet這個(gè)接口 )

package com.decade.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 實(shí)現(xiàn)servlet接口
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 獲取請求參數(shù)
        String method = req.getParameter("method");
        if ("add".equals(method)) {
            req.getSession().setAttribute("msg", "執(zhí)行了add方法");
        } else if ("delete".equals(method)) {
            req.getSession().setAttribute("msg", "執(zhí)行了delete方法");
        }
        // 視圖跳轉(zhuǎn)
        req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
		// 重定向使用rsp.sendRedirect("/index.jsp");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

然后編寫test.jsp,在WEB-INF目錄下新建一個(gè)jsp的文件夾,新建test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  ${msg}
</body>
</html>

接著我們需要在web.xml中注冊一下servlet,指定服務(wù)啟動(dòng)展示的首頁以及session過期時(shí)間

<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
         version="4.0">
    <!-- 配置servlet -->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.decade.servlet.MyServlet</servlet-class>
    </servlet>
    <!-- 配置指定url將請求轉(zhuǎn)發(fā)到對應(yīng)的servlet
      此處就是為什么后面的http://localhost:8080/servlet/hello能將請求轉(zhuǎn)發(fā)到MyServlet中進(jìn)行處理
     -->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <!-- session過期時(shí)間,以分鐘為單位 -->
    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>
    <!-- 默認(rèn)歡迎頁 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

最后我們配置一下tomcat,進(jìn)行測試

最后我們使用http://localhost:8080/servlet/hello?method=add這個(gè)鏈接進(jìn)行測試

結(jié)果如下,符合我們的預(yù)期

到此這篇關(guān)于SpringMVC MVC架構(gòu)與Servlet使用詳解的文章就介紹到這了,更多相關(guān)SpringMVC MVC架構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中日期時(shí)間的用法總結(jié)

    Java中日期時(shí)間的用法總結(jié)

    在日常開發(fā)中,我們經(jīng)常需要處理日期和時(shí)間,所以這篇文章小編為大家總結(jié)了下?Java?中日期與時(shí)間的基本概念與一些常用的用法,希望對大家有所幫助
    2023-09-09
  • mybatis利用association或collection傳遞多參數(shù)子查詢

    mybatis利用association或collection傳遞多參數(shù)子查詢

    今天小編就為大家分享一篇關(guān)于mybatis利用association或collection傳遞多參數(shù)子查詢,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Mybatis中collection和association的使用區(qū)別詳解

    Mybatis中collection和association的使用區(qū)別詳解

    這篇文章主要介紹了Mybatis中collection和association的使用區(qū)別詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • IDEA啟動(dòng)報(bào)錯(cuò)Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法

    IDEA啟動(dòng)報(bào)錯(cuò)Internal?error.?Please?refer?to?https://jb.gg/i

    這篇文章主要介紹了IDEA啟動(dòng)報(bào)錯(cuò)Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    這篇文章主要介紹了SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置,我們可以通過自定義配置數(shù)據(jù)庫配置類來解決這個(gè)問題,方式有很多,不同的業(yè)務(wù)采用的方式也不同,下面我簡單的介紹我們項(xiàng)目的使用的方法
    2022-06-06
  • 徹底搞懂java并發(fā)ThreadPoolExecutor使用

    徹底搞懂java并發(fā)ThreadPoolExecutor使用

    這篇文章主要為大家介紹了徹底搞懂java并發(fā)ThreadPoolExecutor使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 在Spring?Boot中啟用HTTPS的方法

    在Spring?Boot中啟用HTTPS的方法

    本文介紹了在Spring Boot項(xiàng)目中啟用HTTPS的步驟,從生成SSL證書開始,到配置Spring Boot。HTTPS是保護(hù)Web應(yīng)用程序安全的基石之一,而Spring Boot則提供了相對簡易的途徑來配置它,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Java結(jié)構(gòu)型設(shè)計(jì)模式中的適配器模式與橋接模式解析

    Java結(jié)構(gòu)型設(shè)計(jì)模式中的適配器模式與橋接模式解析

    這篇文章主要介紹了Java結(jié)構(gòu)型設(shè)計(jì)模式中的適配器模式與橋接模式,結(jié)構(gòu)型設(shè)計(jì)模式是從程序的結(jié)構(gòu)上解決模塊之間的耦合問題,需要的朋友可以參考下
    2016-02-02
  • 為什么Java中只有值傳遞

    為什么Java中只有值傳遞

    這篇文章主要介紹了為什么Java中只有值傳遞,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • SpringCloud @FeignClient參數(shù)的用法解析

    SpringCloud @FeignClient參數(shù)的用法解析

    這篇文章主要介紹了SpringCloud @FeignClient參數(shù)的用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

运城市| 扎囊县| 云安县| 松潘县| 南川市| 和田市| 江油市| 淅川县| 团风县| 濉溪县| 凭祥市| 裕民县| 府谷县| 乌拉特后旗| 焦作市| 潍坊市| 百色市| 安龙县| 湟源县| 玛曲县| 呼玛县| 永嘉县| 信丰县| 益阳市| 宁乡县| 灵川县| 长岭县| 孟村| 云南省| 青海省| 贵阳市| 马尔康县| 女性| 景谷| 雅安市| 鲁山县| 台南县| 普定县| 抚顺县| 浑源县| 乐安县|