JAVAEE——SpringMVC第一天:介紹、入門程式、架構講解、SpringMVC整合MyBatis、參數綁定、SpringMVC和Struts2的區別

来源:https://www.cnblogs.com/xieyupeng/archive/2018/05/26/9093661.html
-Advertisement-
Play Games

1. 學習計劃 第一天 1、SpringMVC介紹 2、入門程式 3、SpringMVC架構講解 a) 框架結構 b) 組件說明 4、SpringMVC整合MyBatis 5、參數綁定 a) SpringMVC預設支持的類型 b) 簡單數據類型 c) Pojo類型 d) Pojo包裝類型 e) 自定 ...


1. 學習計劃

  第一天

1、SpringMVC介紹

2、入門程式

3、SpringMVC架構講解

a) 框架結構

b) 組件說明

4、SpringMVC整合MyBatis

5、參數綁定

a) SpringMVC預設支持的類型

b) 簡單數據類型

c) Pojo類型

d) Pojo包裝類型

e) 自定義參數綁定

6、SpringMVCStruts2的區別

 

  第二天

1、高級參數綁定

a) 數組類型的參數綁定

b) List類型的綁定

2、@RequestMapping註解的使用

3、Controller方法返回值

4、SpringMVC中異常處理

5、圖片上傳處理

6、Json數據交互

7、SpringMVC實現RESTful

8、攔截器

 

 

2. Spring入門

2.1. Springmvc是什麼

Spring web mvcStruts2屬於表現層的框架,它是Spring框架的一部分,我們可以從Spring的整體結構中看得出來,如下圖:

 

 

2.2. Springmvc處理流程

如下圖所示:

 

 

2.3. 入門程式

需求:使用瀏覽器顯示商品列表

2.3.1. 創建web工程

springMVC是表現層框架,需要搭建web工程開發。

如下圖創建動態web工程:

 

 

輸入工程名,選擇配置Tomcat(如果已有,則直接使用),如下圖:

 

 

配置Tomcat,如下圖:

 

 

 

選擇準備好的Tomcat,這裡用的是Tomcat7,如下圖:

 

 

選擇成功,點擊Finish,如下圖:

 

 

選擇剛剛設置成功的Tomcat,如下圖:

 

 

如下圖選擇web的版本是2.5,可以自動生成web.xml配置文件,

 

 

創建效果如下圖:

 

 

 

2.3.2. 導入jar

從課前資料中導入springMVCjar包,位置如下圖:

 

 

 

 

複製jarlib目錄,工程直接載入jar包,如下圖:

 

 

 

2.3.3. 加入配置文件

創建config資源文件夾,存放配置文件,如下圖:

 

 

 

2.3.3.1. 創建springmvc.xml

創建SpringMVC的核心配置文件

SpringMVC本身就是Spring的子項目,對Spring相容性很好,不需要做很多配置。

這裡只配置一個Controller掃描就可以了,讓Spring對頁面控制層Controller進行管理。

 

創建springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 配置controller掃描包 -->
    <context:component-scan base-package="cn.itcast.springmvc.controller" />

</beans>

 

 

配置文件需要的約束文件,位置如下圖:

 

 

 

創建包cn.itcast.springmvc.controller

效果如下圖:

 

 

 

2.3.3.2. 配置前端控制器

配置SpringMVC的前端控制器DispatcherServlet

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>springmvc-first</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!-- 配置SpringMVC前端控制器 -->
    <servlet>
        <servlet-name>springmvc-first</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定SpringMVC配置文件 -->
        <!-- SpringMVC的配置文件的預設路徑是/WEB-INF/${servlet-name}-servlet.xml -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc-first</servlet-name>
        <!-- 設置所有以action結尾的請求進入SpringMVC -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

 

 

2.3.4. 加入jsp頁面

把參考資料中的itemList.jsp複製到工程的/WEB-INF/jsp目錄下,如下圖:

 

 

 

2.3.5. 實現顯示商品列表頁

2.3.5.1. 創建pojo

分析頁面,查看頁面需要的數據,如下圖:

 

 

 

創建商品pojo

public class Item {
    // 商品id
    private int id;
    // 商品名稱
    private String name;
    // 商品價格
    private double price;
    // 商品創建時間
    private Date createtime;
    // 商品描述
    private String detail;

創建帶參數的構造器
set/get。。。
}

 

 

2.3.5.2. 創建ItemController

ItemController是一個普通的java類,不需要實現任何介面。

需要在類上添加@Controller註解,把Controller交由Spring管理

在方法上面添加@RequestMapping註解,裡面指定請求的url。其中“.action”可以加也可以不加。

@Controller
public class ItemController {

    // @RequestMapping:裡面放的是請求的url,和用戶請求的url進行匹配
    // action可以寫也可以不寫
    @RequestMapping("/itemList.action")
    public ModelAndView queryItemList() {
        // 創建頁面需要顯示的商品數據
        List<Item> list = new ArrayList<>();
        list.add(new Item(1, "1華為 榮耀8", 2399, new Date(), "質量好!1"));
        list.add(new Item(2, "2華為 榮耀8", 2399, new Date(), "質量好!2"));
        list.add(new Item(3, "3華為 榮耀8", 2399, new Date(), "質量好!3"));
        list.add(new Item(4, "4華為 榮耀8", 2399, new Date(), "質量好!4"));
        list.add(new Item(5, "5華為 榮耀8", 2399, new Date(), "質量好!5"));
        list.add(new Item(6, "6華為 榮耀8", 2399, new Date(), "質量好!6"));

        // 創建ModelAndView,用來存放數據和視圖
        ModelAndView modelAndView = new ModelAndView();
        // 設置數據到模型中
        modelAndView.addObject("list", list);
        // 設置視圖jsp,需要設置視圖的物理地址
        modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");

        return modelAndView;
    }
}

 

 

2.3.6. 啟動項目測試

啟動項目,瀏覽器訪問地址

http://127.0.0.1:8080/springmvc-first/itemList.action

 

效果如下圖:

 

 

為什麼可以用呢?我們需要分析一下springMVC的架構圖。

 

3. Springmvc架構

3.1. 框架結構

框架結構如下圖:

 

3.2. 架構流程

1、 用戶發送請求至前端控制器DispatcherServlet

2、 DispatcherServlet收到請求調用HandlerMapping處理器映射器。

3、 處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。

4、 DispatcherServlet通過HandlerAdapter處理器適配器調用處理器

5、 執行處理器(Controller,也叫後端控制器)。

6、 Controller執行完成返回ModelAndView

7、 HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet

8、 DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器

9、 ViewReslover解析後返回具體View

10、 DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)。

11、 DispatcherServlet響應用戶

3.3. 組件說明(一個中心三個基本點)

以下組件通常使用框架提供實現:

黃色是三大組件,綠色是我們要寫的,白色部分是中心

u DispatcherServlet:前端控制器

用戶請求到達前端控制器,它就相當於mvc模式中的c,dispatcherServlet是整個流程式控制制的中心,由它調用其它組件處理用戶的請求,dispatcherServlet的存在降低了組件之間的耦合性。

u HandlerMapping:處理器映射器

HandlerMapping負責根據用戶請求url找到Handler即處理器,springmvc提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現介面方式,註解方式等。

u Handler:處理器

Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。

由於Handler涉及到具體的用戶業務請求,所以一般情況需要程式員根據業務需求開發Handler。

 

u HandlAdapter:處理器適配器

通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。

下圖是許多不同的適配器,最終都可以使用usb介面連接

       

 

u ViewResolver:視圖解析器

View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。

u View:視圖

springmvc框架提供了很多的View視圖類型的支持,包括:jstlView、freemarkerView、pdfView等。我們最常用的視圖就是jsp。

一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由程式員根據業務需求開發具體的頁面。

 

說明:在springmvc的各個組件中,處理器映射器、處理器適配器、視圖解析器稱為springmvc的三大組件。

需要用戶開發的組件有handlerview

 

3.4. 預設載入的組件

我們沒有做任何配置,就可以使用這些組件

因為框架已經預設載入這些組件了,配置文件位置如下圖:

 

# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.

org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

 

 

3.5. 組件掃描器

使用組件掃描器省去在spring容器配置每個Controller類的繁瑣。

使用<context:component-scan>自動掃描標記@Controller的控制器類,

springmvc.xml配置文件中配置如下:

<!-- 配置controller掃描包,多個包之間用,分隔 -->
<context:component-scan base-package="cn.itcast.springmvc.controller" />

 

3.6. 註解映射器和適配器

3.6.1. 配置處理器映射器

註解式處理器映射器,對類中標記了@ResquestMapping的方法進行映射。根據@ResquestMapping定義的url匹配@ResquestMapping標記的方法,匹配成功返回HandlerMethod對象給前端控制器。

HandlerMethod對象中封裝url對應的方法Method

 

spring3.1版本開始,廢除了DefaultAnnotationHandlerMapping的使用,推薦使用RequestMappingHandlerMapping完成註解式處理器映射。

 

springmvc.xml配置文件中配置如下:

<!-- 配置處理器映射器 -->
<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

 

註解描述:

@RequestMapping定義請求url到處理器功能方法的映射

 

3.6.2. 配置處理器適配器

註解式處理器適配器,對標記@ResquestMapping的方法進行適配。

 

spring3.1版本開始,廢除了AnnotationMethodHandlerAdapter的使用,推薦使用RequestMappingHandlerAdapter完成註解式處理器適配。

 

springmvc.xml配置文件中配置如下:

<!-- 配置處理器適配器 -->
<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

 

3.6.3. 註解驅動

直接配置處理器映射器和處理器適配器比較麻煩,可以使用註解驅動來載入。

SpringMVC使用<mvc:annotation-driven>自動載入RequestMappingHandlerMappingRequestMappingHandlerAdapter

可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代註解處理器和適配器的配置。

<!-- 註解驅動 -->
<mvc:annotation-driven />

 

3.7. 視圖解析器

視圖解析器使用SpringMVC框架預設的InternalResourceViewResolver,這個視圖解析器支持JSP視圖解析

springmvc.xml配置文件中配置如下:

    <!-- Example: prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" -> 
        "/WEB-INF/jsp/test.jsp" -->
    <!-- 配置視圖解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置邏輯視圖的首碼 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 配置邏輯視圖的尾碼 -->
        <property name="suffix" value=".jsp" />
    </bean>

 

邏輯視圖名需要在controller中返回ModelAndView指定,比如邏輯視圖名為ItemList,則最終返回的jsp視圖地址:

“WEB-INF/jsp/itemList.jsp”

 

最終jsp物理地址:首碼+邏輯視圖名+尾碼

3.7.1. 修改ItemController

修改ItemController中設置視圖的代碼

// @RequestMapping:裡面放的是請求的url,和用戶請求的url進行匹配
// action可以寫也可以不寫
@RequestMapping("/itemList.action")
public ModelAndView queryItemList() {
    // 創建頁面需要顯示的商品數據
    List<Item> list = new ArrayList<>();
    list.add(new Item(1, "1華為 榮耀8", 2399, new Date(), "質量好!1"));
    list.add(new Item(2, "2華為 榮耀8", 2399, new Date(), "質量好!2"));
    list.add(new Item(3, "3華為 榮耀8", 2399, new Date(), "質量好!3"));
    list.add(new Item(4, "4華為 榮耀8", 2399, new Date(), "質量好!4"));
    list.add(new Item(5, "5華為 榮耀8", 2399, new Date(), "質量好!5"));
    list.add(new Item(6, "6華為 榮耀8", 2399, new Date(), "質量好!6"));

    // 創建ModelAndView,用來存放數據和視圖
    ModelAndView modelAndView = new ModelAndView();
    // 設置數據到模型中
    modelAndView.addObject("itemList", list);
    // 設置視圖jsp,需要設置視圖的物理地址
    // modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");
    // 配置好視圖解析器首碼和尾碼,這裡只需要設置邏輯視圖就可以了。
    // 視圖解析器根據首碼+邏輯視圖名+尾碼拼接出來物理路徑
    modelAndView.setViewName("itemList");

    return modelAndView;
}

 

 

3.7.2. 效果

效果和之前一樣,如下圖:

 

 

4. 整合mybatis

為了更好的學習 springmvcmybatis整合開發的方法,需要將springmvcmybatis進行整合。

 

整合目標:控制層採用springmvc、持久層使用mybatis實現。

4.1. 創建資料庫表

sql腳本,位置如下圖:

 

 

 

創建資料庫表springmvc,導入到資料庫中,如下圖:

 

 

 

4.2. 需要的jar

  1. spring(包括springmvc
  2. mybatis
  3. mybatis-spring整合包
  4. 資料庫驅動
  5. 第三方連接池。

 

jar包位置如下圖:

 

 

 

4.3. 整合思路

Dao層:

1、SqlMapConfig.xml,空文件即可,但是需要文件頭。

2、applicationContext-dao.xml

a) 資料庫連接池

b) SqlSessionFactory對象,需要springmybatis整合包下的。

c) 配置mapper文件掃描器。

 

Service層:

1、applicationContext-service.xml包掃描器,掃描@service註解的類。

2、applicationContext-trans.xml配置事務。

 

Controller層:

1、Springmvc.xml

a) 包掃描器,掃描@Controller註解的類。

b) 配置註解驅動

c) 配置視圖解析器

 

Web.xml文件:

1、配置spring

2、配置前端控制器。

4.4. 創建工程

創建動態web工程springmvc-web,如下圖:

 

 

 

 

4.5. 加入jar

複製jar包到/WEB-INF/lib

工程自動載入jar

4.6. 加入配置文件

創建資源文件夾config

在其下創建mybatisspring文件夾,用來存放配置文件,如下圖:

 

 

4.6.1. sqlMapConfig.xml

使用逆向工程來生成Mapper相關代碼,不需要配置別名。

config/mybatis下創建SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

 

 

4.6.2. applicationContext-dao.xml

配置數據源、配置SqlSessionFactorymapper掃描器。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 載入配置文件 -->
    <context:property-placeholder location="classpath:db.properties" />

    <!-- 資料庫連接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="maxActive" value="10" />
        <property name="maxIdle" value="5" />
    </bean>

    <!-- 配置SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 資料庫連接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 載入mybatis的全局配置文件 -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
    </bean>

    <!-- 配置Mapper掃描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 配置Mapper掃描包 -->
        <property name="basePackage" value="cn.itcast.ssm.mapper" />
    </bean>

</beans>

 

4.6.3. db.properties

配置資料庫相關信息

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springmvc?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

 

 

4.6.4. applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 配置service掃描 -->
    <context:component-scan base-package="cn.itcast.ssm.service" />

</beans>

 

 

4.6.5. applicationContext-trans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 事務管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.上篇遺留及習題 1.下麵請看 我們來輸入一下結果 為什麼會是這樣呢?b不是等於a嗎,為什麼不是5而是3. 2.習題解答 (1.)區分下麵哪些是變數 name,name1,1name,na me,print,name_1 變數:name,name1,name_1 不是變數:1name,na me, ...
  • 以User為操作對象 原始JDBC 這個註意ResultSet 是一個帶指針的結果集,指針開始指向第一個元素的前一個(首元素),不同於iterator 有hasNext() 和next() ,他只有next() 整合c3p0的DBUtils c3p0整合了連接資料庫的Connection ,提供更快 ...
  • 1 URL含義 URL的格式由三部分組成: ①第一部分是協議(或稱為服務方式)。 ②第二部分是存有該資源的主機IP地址(有時也包括埠號)。 ③第三部分是主機資源的具體地址,如目錄和文件名等。 2 分析扒網頁的方法 首先調用的是urllib2庫裡面的urlopen方法,傳入一個URL,這個網址是百度 ...
  • 盲維 我總愛重覆一句芒格愛說的話: To the one with a hammer, everything looks like a nail. (手中有錘,看什麼都像釘) 這句話是什麼意思呢? 就是你不能只掌握數量很少的方法、工具。 否則你的認知會被自己能力框住。不只是存在盲點,而是存在“盲維” ...
  • JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法,對於任意一個對象,都能夠調用它的任意一個方法。這種動態獲取的以及動態調用對象的方法的功能稱為java語言的反射機制。 簡單來說, 就可以把.class文件比做動物的屍體, 而反射技術就是對屍體的一種解剖.通過反射技術, ...
  • 需要先增加一個自定義的Filter去繼承 UsernamePasswordAuthenticationFilter 或者 AbstractAuthenticationProcessingFilter 然後在自定義的Filter裡面指定登錄的Url . 設置過濾器的時候,必須為過濾器指定一個 auth ...
  • GIL(全局解釋器鎖) 每個線程在執行的過程都需要先獲取GIL 作用:在單核的情況下實現多任務(多線程),保證同一時刻只有一個線程可以執行代碼,因此造成了我們使用多線程的時候無法實現並行 多核的情況下產生gil問題 因為一個進程中有一個gil鎖,在這進程裡面的線程去搶這把鎖,在同一時刻只有一個線程能 ...
  • 內建的 datetime 模塊 讓我們看看其他庫是如何處理這種轉換的。 Dateutil 通過 Arrow datetime 類的實例,你可以訪問 Arrow 的其他有用方法。例如,它的humanize()方法將日期時間翻譯成人類可讀的短語,就像這樣: 由於 Maya 與 datetime 庫中很多 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...