Maven+SSM框架實現簡單的增刪改查

来源:http://www.cnblogs.com/yaohong/archive/2016/10/16/5967270.html
-Advertisement-
Play Games

Spring介紹: spring 使用基本的 JavaBean 來完成以前只可能由 EJB 完成的事情。然而, Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java 應用都可以從 Spring 中受益。 簡單來說, Spring 是一個輕量級的控制反轉(IoC ...


Spring介紹:

spring 使用基本的 JavaBean 來完成以前只可能由 EJB 完成的事情。然而, Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java 應用都可以從 Spring 中受益。 簡單來說, Spring 是一個輕量級的控制反轉(IoC )和麵向切麵( AOP )的容器框架。

SpringMVC介紹

Spring MVC 屬於 SpringFrameWork 的後續產品,已經融合在Spring Web Flow 裡面。 Spring MVC  分離了 控制器 、模型 對象 、分派器以及處理程式對象的角色,這種分離讓它們更容易進行定製。

MyBatis介紹

  MyBatis  本是 apache 的一個開源項目 iBatis , 2010 年這個項目由apache software foundation  遷移到了 google code ,並且改名為 MyBatis  。MyBatis 是一個基於 Java 的 持久層 框架。 iBATIS 提供的 持久層 框架包括SQL Maps 和 Data Access Objects ( DAO ) MyBatis  消除了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。 MyBatis  使用簡單的  XML 或註解用於配置和原始映射,將介面和  Java  的 POJOs ( Plain Old Java Objects ,普通的  Java 對象)映射成資料庫中的記錄。 首先不是maven架構整合的  SSM 框架

 

創建資料庫、表db_zsl   t_user   user_t【最下麵有sql語句】

1.項目整體結構

2.添加相關jar 包

3.項目整體結構出來了

4.創建model【User】

 

[java] view plain copy  在CODE上查看代碼片派生到我的代碼片
  1. package com.lyt.model;  
  2.   
  3. /**  
  4.  * 用戶  
  5.  * @author 
  6.  *  
  7.  */    
  8. public class User {    
  9.     
  10.     private int id;    
  11.     private String userName;   
  12.     private String age;    
  13.       
  14.     @Override  
  15.     public String toString() {  
  16.         return "User [id=" + id + ", age=" + age + ", userName=" + userName  
  17.                 + "]";  
  18.     }  
  19.     public User(){    
  20.         super();    
  21.     }    
  22.     public int getId() {    
  23.         return id;    
  24.     }    
  25.     public void setId(int id) {    
  26.         this.id = id;    
  27.     }    
  28.     public String getAge() {    
  29.         return age;    
  30.     }    
  31.     public void setAge(String age) {    
  32.         this.age = age;    
  33.     }    
  34.     public String getUserName() {    
  35.         return userName;    
  36.     }    
  37.     public void setUserName(String userName) {    
  38.         this.userName = userName;    
  39.     }    
  40.     public User(int id, String age, String userName) {    
  41.         super();    
  42.         this.id = id;    
  43.         this.age = age;    
  44.         this.userName = userName;    
  45.     }    
  46. }    

5.創建DAO介面【在mybatis中 mapper就相當於dao】

 

 

[java] view plain copy  在CODE上查看代碼片派生到我的代碼片
  1. package com.lyt.mapper;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.lyt.model.User;  
  6. /** 
  7.  * 做為 DAO的介面 
  8.  * @author 
  9.  */  
  10. public interface UserMapper {    
  11.     void save(User user);    
  12.     boolean update(User user);    
  13.     boolean delete(int id);    
  14.     User findById(int id);    
  15.     List<User> findAll();    
  16. }    
  17. 5.創建DAO介面【在mybatis中 mapper就相當於dao】

     

     

    [java] view plain copy  在CODE上查看代碼片派生到我的代碼片
    1. package com.lyt.mapper;  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.lyt.model.User;  
    6. /** 
    7.  * 做為 DAO的介面 
    8.  * @author */  
    9. public interface UserMapper {    
    10.     void save(User user);    
    11.     boolean update(User user);    
    12.     boolean delete(int id);    
    13.     User findById(int id);    
    14.     List<User> findAll();    
    15. }    

    6.實現dao介面【mybatis中就是UserMapper.xml文件】
    [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"     
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">    
    4. <!--     
    5.     namespace:必須與對應的介面全類名一致  UserMapper.java  
    6.     id :必須與對應介面的某個對應的方法名一致即必須要和UserMapper.java介面中的方法同名。  
    7.  -->    
    8.  <mapper namespace="com.lyt.mapper.UserMapper">  
    9.    
    10.     <insert id="save" parameterType="User">  
    11.         insert into t_user(user_name,user_age) values(#{userName},#{age})  
    12.     </insert>  
    13.       
    14.     <update id="update" parameterType="User">    
    15.         update t_user set user_name=#{userName},user_age=#{age} where user_id=#{id}    
    16.     </update>   
    17.       
    18.     <delete id="delete" parameterType="int">    
    19.         delete from t_user where user_id=#{id}    
    20.     </delete>    
    21.         
    22.      <!-- mybsits_config中配置的alias類別名,也可直接配置resultType為類路徑 -->      
    23.     <select id="findById" parameterType="int" resultType="User">    
    24.         select user_id id,user_name userName,user_age age from t_user where user_id=#{id}    
    25.     </select>    
    26.         
    27.     <select id="findAll" resultType="User">    
    28.         select user_id id,user_name userName,user_age age from t_user    
    29.     </select>   
    30.       
    31.  </mapper>  

    這裡對這個xml文件作幾點說明: 
    1、namespace必須與對應的介面全類名一致。 
    2、id必須與對應介面的某個對應的方法名一致即必須要和UserMapper.java介面中的方法同名。 

     

     

    ---------------------------------------------------

    7.mybatis與Spring整合【spring-common.xml】放在src的根目錄下

     對於Mybatis和Spring的整合是這篇博文的重點,需要配置的內容在下麵有詳細的解釋。

     

    [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
    4.     xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"  
    5.     xsi:schemaLocation="  
    6.         http://www.springframework.org/schema/beans  
    7.         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
    8.         http://www.springframework.org/schema/context  
    9.         http://www.springframework.org/schema/context/spring-context-4.0.xsd  
    10.         http://www.springframework.org/schema/tx  
    11.         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">  
    12.   
    13. <!-- Mybatis和Spring的整合 -->  
    14.     <!-- 1. 數據源 : DriverManagerDataSource -->  
    15.     <bean id="dataSource"  
    16.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    17.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
    18.         <property name="url" value="jdbc:mysql://localhost:3306/db_zsl" />  
    19.         <property name="username" value="root" />  
    20.         <property name="password" value="root" />  
    21.     </bean>  
    22.   
    23.     <!--  
    24.         2. mybatis的SqlSession的工廠: SqlSessionFactoryBean dataSource:引用數據源  
    25.   
    26.         MyBatis定義數據源,同意載入配置  
    27.     -->  
    28.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    29.         <property name="dataSource" ref="dataSource"></property>  
    30.         <property name="configLocation" value="classpath:mybatis-config.xml" />   
    31.     </bean>  
    32.   
    33.     <!--  
    34.         3. mybatis自動掃描載入Sql映射文件/介面 : MapperScannerConfigurer sqlSessionFactory  
    35.   
    36.         basePackage:指定sql映射文件/介面所在的包(自動掃描)  
    37.     -->  
    38.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    39.         <property name="basePackage" value="com.lyt.mapper"></property>  
    40.         <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>  
    41.     </bean>  
    42.   
    43.     <!--  
    44.         4. 事務管理 : DataSourceTransactionManager dataSource:引用上面定義的數據源  
    45.     -->  
    46.     <bean id="txManager"  
    47.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    48.         <property name="dataSource" ref="dataSource"></property>  
    49.     </bean>  
    50.   
    51.     <!-- 5. 使用聲明式事務  
    52.          transaction-manager:引用上面定義的事務管理器  
    53.      -->  
    54.     <tx:annotation-driven transaction-manager="txManager" />  
    55.   
    56. </beans>  
    57. 8.mybatis配置文件【mybatis-config.xml】放在src目錄下

       

       

      [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
      1. <?xml version="1.0" encoding="UTF-8"?>  
      2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"   
      3. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
      4. <configuration>  
      5.   
      6.     <!-- 實體類,簡稱 -設置別名 -->  
      7.     <typeAliases>  
      8.         <typeAlias alias="User" type="com.lyt.model.User" />  
      9.     </typeAliases>  
      10.     <!-- 實體介面映射資源 -->  
      11.     <!--  
      12.         說明:如果xxMapper.xml配置文件放在和xxMapper.java統一目錄下,mappers也可以省略,因為org.mybatis.spring.mapper.MapperFactoryBean預設會去查找與xxMapper.java相同目錄和名稱的xxMapper.xml  
      13.     -->  
      14.     <mappers>  
      15.         <mapper resource="com/lyt/mapper/userMapper.xml" />  
      16.     </mappers>  
      17.   
      18. </configuration>   
      19. 配置log4j.properties

         

        [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
        1. ### set log levels ###   
        2. log4j.rootLogger = info , Console , D  
        3. #Console  
        4. log4j.appender.Console=org.apache.log4j.ConsoleAppender  
        5. log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
        6. log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
        7. log4j.logger.java.sql.ResultSet=INFO  
        8. log4j.logger.org.apache=INFO  
        9. log4j.logger.java.sql.Connection=INFO  
        10. log4j.logger.java.sql.Statement=INFO  
        11. log4j.logger.java.sql.PreparedStatement=INFO  
        12. #output2file  
        13. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender   
        14. log4j.appender.D.File = D\:/logs/log.log   
        15. log4j.appender.D.Append = true   
        16. log4j.appender.D.Threshold = INFO \#\# \u00E8\u00BE\u0093\u00E5\u0087\u00BAinfo\u00E7\u00BA\u00A7\u00E5\u0088\u00AB\u00E4\u00BB\u00A5\u00E4\u00B8\u008A\u00E7\u009A\u0084\u00E6\u0097\u00A5\u00E5\u00BF\u0097   
        17. log4j.appender.D.layout = org.apache.log4j.PatternLayout   
        18. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n   
        19.    

         

        10.整合Springmvc

        配置【spring-mvc.xml】放在src根目錄下

         

        [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
        1. <?xml version="1.0" encoding="UTF-8"?>  
        2. <beans xmlns="http://www.springframework.org/schema/beans"  
        3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
        4.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
        5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
        6.     http://www.springframework.org/schema/beans/spring-beans.xsd  
        7.     http://www.springframework.org/schema/context  
        8.     http://www.springframework.org/schema/context/spring-context-4.0.xsd  
        9.     http://www.springframework.org/schema/mvc  
        10.     http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
        11.   
        12.     <!-- 註解掃描包 -->  
        13.     <context:component-scan base-package="com.lyt.controller" />  
        14.     <context:component-scan base-package="com.lyt.service" />  
        15.   
        16.     <!-- 開啟註解 -->  
        17.     <mvc:annotation-driven />  
        18.   
        19.     <!--  
        20.         配置靜態資源,直接映射到對應的文件夾,不被DispatcherServlet處理,3.04新增功能,需要重新設置spring-mvc-3.0.xsd  
        21.     -->  
        22.     <mvc:resources mapping="/img/**" location="/img/" />  
        23.     <mvc:resources mapping="/js/**" location="/js/" />  
        24.     <mvc:resources mapping="/css/**" location="/css/" />  
        25.     <mvc:resources mapping="/html/**" location="/html/" />  
        26.   
        27.   
        28.   
        29.     <!-- 定義跳轉的文件的前尾碼 ,視圖模式配置-->  
        30.     <bean id="viewResolver"  
        31.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        32.         <!-- 這裡的配置我的理解是自動給後面action的方法return的字元串加上首碼和尾碼,變成一個 可用的url地址 -->  
        33.         <property name="prefix" value="/WEB-INF/jsp/" />  
        34.         <property name="suffix" value=".jsp" />  
        35.     </bean>  
        36. </beans>  
        37. 11.配置web.xml

           

           

          [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
          1. <?xml version="1.0" encoding="UTF-8"?>  
          2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
          3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
          4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
          5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
          6.   
          7.     <!-- 載入Spring容器配置 -->  
          8.     <listener>  
          9.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
          10.     </listener>  
          11.   
          12.     <!-- 設置Spring容器載入所有的配置文件的路徑 -->  
          13.     <context-param>  
          14.         <param-name>contextConfigLocation</param-name>  
          15.         <!-- <param-value>classpath:config/spring-*.xml</param-value> -->  
          16.         <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>  
          17.           
          18.     </context-param>  
          19.   
          20.     <!-- 配置SpringMVC核心控制器 -->  
          21.     <servlet>  
          22.         <servlet-name>springMVC</servlet-name>  
          23.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
          24.         <!-- 配置初始配置化文件,前面contextConfigLocation看情況二選一 -->    
          25.         <init-param>  
          26.             <param-name>contextConfigLocation</param-name>  
          27.             <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>  
          28.         </init-param>  
          29.         <!-- 啟動載入一次 -->    
          30.         <load-on-startup>1</load-on-startup>  
          31.     </servlet>  
          32.   
          33.     <!--為DispatcherServlet建立映射 -->  
          34.     <servlet-mapping>  
          35.         <servlet-name>springMVC</servlet-name>  
          36.         <!-- 此處可以可以配置成*.do,對應struts的尾碼習慣 -->  
          37.         <url-pattern>/</url-pattern>  
          38.     </servlet-mapping>  
          39.   
          40.     <!-- 防止Spring記憶體溢出監聽器 -->  
          41.     <listener>  
          42.         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
          43.     </listener>  
          44.   
          45.     <!-- 解決工程編碼過濾器 -->  
          46.     <filter>  
          47.         <filter-name>encodingFilter</filter-name>  
          48.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
          49.         <init-param>  
          50.             <param-name>encoding</param-name>  
          51.             <param-value>UTF-8</param-value>  
          52.         </init-param>  
          53.         <init-param>  
          54.             <param-name>forceEncoding</param-name>  
          55.             <param-value>true</param-value>  
          56.         </init-param>  
          57.     </filter>  
          58.       
          59.     <filter-mapping>  
          60.         <filter-name>encodingFilter</filter-name>  
          61.         <url-pattern>/*</url-pattern>  
          62.     </filter-mapping>  
          63.   
          64.     <welcome-file-list>  
          65.         <welcome-file>index.jsp</welcome-file>  
          66.     </welcome-file-list>  
          67. </web-app>  
          68. 12.建立service以及service實現【UserService.java】

             

             

            [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
            1. package com.lyt.service;  
            2.   
            3. import java.util.List;  
            4.   
            5. import com.lyt.model.User;  
            6.   
            7. public interface UserService {  
            8.     void save(User user);  
            9.     boolean update(User user);  
            10.     boolean delete(int id);  
            11.     User findById(int id);  
            12.     List<User> findAll();  
            13. }  


             

            【UserServiceImpl.java】

             

            [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
            1. package com.lyt.service.impl;  
            2.   
            3. import java.util.List;  
            4.   
            5. import javax.annotation.Resource;  
            6.   
            7. import org.springframework.stereotype.Service;  
            8. import org.springframework.transaction.annotation.Transactional;  
            9.   
            10. import com.lyt.mapper.UserMapper;  
            11. import com.lyt.model.User;  
            12. import com.lyt.service.UserService;  
            13.  
            14. @Service  
            15. @Transactional  
            16. // 此處不再進行創建SqlSession和提交事務,都已交由spring去管理了。  
            17. public class UserServiceImpl implements UserService {  
            18.  
            19.     @Resource  
            20.     private UserMapper mapper;  
            21.   
            22.     /**  
            23.      * 根據  id  刪除 數據  
            24.      */  
            25.     public boolean delete(int id) {  
            26.         return mapper.delete(id);  
            27.     }  
            28.     /**  
            29.      * 查詢User的全部數據  
            30.      */  
            31.     public List<User> findAll() {  
            32.         List<User> findAllList = mapper.findAll();  
            33.         return findAllList;  
            34.     }  
            35.     /**  
            36.      * 根據 id 查詢 對應數據  
            37.      */  
            38.     public User findById(int id) {  
            39.         User user = mapper.findById(id);  
            40.         return user;  
            41.     }  
            42.     /**  
            43.      * 新增數據  
            44.      */  
            45.     public void save(User user) {  
            46.         mapper.save(user);  
            47.     }  
            48.     /**  
            49.      * 根據 id 修改對應數據  
            50.      */  
            51.     public boolean update(User user) {  
            52.         return mapper.update(user);  
            53.     }  
            54.   
            55. }  

            13.建立Controller【UserController.java】

             

            [python] view plain copy  在CODE上查看代碼片派生到我的代碼片
            1. <span style="font-size:14px;">package com.lyt.controller;  
            2.   
            3. import java.io.IOException;  
            4. import java.io.PrintWriter;  
            5. import java.util.List;  
            6.   
            7. import javax.servlet.http.HttpServletRequest;  
            8. import javax.servlet.http.HttpServletResponse;  
            9.   
            10. import org.springframework.beans.factory.annotation.Autowired;  
            11. import org.springframework.stereotype.Controller;  
            12. import org.springframework.ui.Model;  
            13. import org.springframework.web.bind.annotation.RequestMapping;  
            14.   
            15. import com.lyt.model.User;  
            16. import com.lyt.service.UserService;  
            17.  
            18. @Controller  
            19. @RequestMapping("/user")  
            20. public class UserController {  
            21.     @Autowired  
            22.     private UserService userService;  
            23.     /**  
            24.      * 獲取所有用戶列表  
            25.      * @param request  
            26.      * @return  
            27.      */  
            28.     @RequestMapping("/getAllUser")  
            29.     public String getAllUser(HttpServletRequest request,Model model){  
            30.         List<User> user = userService.findAll();  
            31.         model.addAttribute("userList", user);  
            32.         request.setAttribute("userList", user);  
            33.         return "/allUser";  
            34.     }  
            35.     /**  
            36.      * 跳轉到添加用戶界面  
            37.      * @param request  
            38.      * @return  
            39.      */  
            40.     @RequestMapping("/toAddUser")  
            41.     public String toAddUser(){  
            42.         return "/addUser";  
            43.     }  
            44.     /**  
            45.      * 添加用戶並重定向  
            46.      * @param user  
            47.      * @param request  
            48.      * @return  
            49.      */  
            50.     @RequestMapping("/addUser")  
            51.     public String addUser(User user,Model model){  
            52.         userService.save(user);  
            53.         return "redirect:/user/getAllUser";  
            54.     }  
            55.     /**  
            56.      *編輯用戶  
            57.      * @param user  
            58.      * @param request  
            59.      * @return  
            60.      */  
            61.     @RequestMapping("/updateUser")  
            62.     pu
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 按鈕圖形化,只需創建一個ImageIcon對象,將圖形路徑賦予ImageIcon對象,然後將該對象傳遞給按鈕即可。在此過程中涉及eclipse中圖形的路徑設置,包括(項目路徑下、非項目路徑下、相對路徑、絕對路徑),相對路徑前不加/,此處相對路徑是相對於eclipse中項目文件夾而言的,絕對路徑為圖形... ...
  • 1、URL重寫,隱藏網址中的Index.php。 ThinkPHP 作為 PHP 框架,是單一入口的,那麼其原始的 URL 便不是那麼友好。但 ThinkPHP提供了各種機制來定製需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定製出人性化的更利於 SEO 的URL 地址 ...
  • 在 servlet 3.0 開始web項目可以完全不需要web.xml配置文件了,所以本文的配置只在支持servlet 3.0及以上的web容器中有效 使用的是spring mvc (4.3.2.RELEASE) + thymeleaf(3.0.2.RELEASE), 持久層使用的 spring的 ...
  • 【Python練習題 017】 兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比。請編程式找出三隊賽手的名單。 這題真真想破我腦袋了,看了好幾份別人的代碼才勉強看懂,真是…… 一開始我只想著先 ...
  • ************************** ...
  • 上周開始試著來用appium,首先開始去官網看,然後下載appium客戶端,下載安裝後,然後筆者開始安裝android sdk ,進官網下載後,筆者下載安裝後,在更新下載SDK Manager的時候一直出錯,下載不下來,翻牆也不行,來到蟲師博客 ,看到方式後,就試著去做,可是按照蟲師的方式還是不行, ...
  • 首先,我們準備文件 jdbc.properties,用於保存連接資料庫的信息,利於我們在配置文件中的使用 一:Spring框架內置的連接池(內置jar包可以使用) 當然,它是使用到 spring-jdbc-4.2.0.RELEASE.jar 在applicationContext.xml(Sprin ...
  • spring 註解多選擇是好事嘛? Spring 經過十多年的快速發展和更新,以其獨特的創新帶來了大量的擁躉者,在選擇方面還帶來了更多選擇!譬如spring bean的裝配(在XML中進行顯式配置、在Java中進行顯式配置、隱式的bean發現機制和自動裝配),註解的多元化(基本註解、jsr250、j ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...