首页 > 其他分享 >SSM框架总结

SSM框架总结

时间:2022-12-30 11:37:07浏览次数:35  
标签:总结 xml http 框架 spring springframework SSM org id


直接以json方式返回服务器对象

案例:在welcome页面增加图书查询的功能!

1.生成数据库表,添加数据

DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`ID` int(4) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) DEFAULT NULL,
`Author` varchar(50) DEFAULT NULL,
`Price` decimal(10,0) DEFAULT NULL,
`Publisher` varchar(100) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('1', '明朝那些事儿图文增订版', '当年明月', '82', '北京联合出版公司');
INSERT INTO `book` VALUES ('2', '战争从未如此热血4:二战美日太平洋大对决:西方视角下的晚清图景', '关河五十州', '29', '民主与建设出版社');
INSERT INTO `book` VALUES ('3', '我们的征途是星辰大海', '花千芳', '20', '作家出版社');
INSERT INTO `book` VALUES ('4', '松下幸之助经营智慧书', '松下幸之助', '54', '人民文学出版社');
INSERT INTO `book` VALUES ('5', '大数据时代', '(英)迈尔-舍恩伯格', '31', '浙江人民出版社');
INSERT INTO `book` VALUES ('6', '销售就是要搞定人—一个销售总经理十六年的抢单笔记', '倪建伟', '21', '时代文艺出版社');
INSERT INTO `book` VALUES ('7', '这个男生不太冷:告诉你一个真实的陈楚生', '万俊人', '24', '海南出版社');

2.welcome.jsp 页面设计

<body>
欢迎${name}登录!<br/>
<br/>
<br/>
请输入书名进行模糊查询:<input type="text" id="pattern" >
<input type="button" id="get" value="获取图书"><br>
<table id="books">
</table>
</body>

3.引入JQuery库

拷贝jquery库文件到jslib目录下

<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script>
<script type="text/javascript">
$(function(){
})
</script>

4.编写Book实体

5.编写BookMapper接口和BookMapper映射文件
  
   添加通过图书名称模糊查询的方法

6.编写dao方法

7.编写controller方法

8.引入jackson包(core,annotations,databind)

​    http://pan.baidu.com/s/1i3GoYsl​

9.修改配置文件(第一个bean可以省略)

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>

2,    前端接收到json后的处理
    jquery的append方法

 

1.新建Java项目,引入jar包,mybatis的jar包和mysql的jar包src

    mybatis的jar包下载
​​​     https://github.com/mybatis/mybatis-3/releases​​​  
2.建立数据库users,建立表user(id,userName,userPwd)

3.引入mybatis的主配置文件mybatis-config.xml(名字在代码中要用到)

​    http://mybatis.github.io/mybatis-3/getting-started.html​

   

<?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>

    
    <!-- 对事务的管理和连接池的配置 -->  
    

<environments default="development">  
<environment id="mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/users" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>

      
    <!-- mapping 文件路径配置 -->  
   

<mappers>  
<!-- <mapper class="javastudy.UserMapper" /> -->
<!-- <mapper resource="userMapper.xml"/> -->
</mappers>
</configuration>

4.将数据库连接信息写入单独的properties文件

    (1)主配置文件中将连接参数修改为变量
   

<property name="driver" value="${db.driver}" />  
<property name="url" value="${db.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />

    (2)引入db.properties文件
        

<properties resource="db.properties"></properties>

    (3)在src目录下添加db.properties文件

    

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/users
db.username=root
db.password=

5.编写实体类User
  User(id,userName,userPwd)

6.在实体类所在包下,编写userMapper.xml文件
  描述针对这个实体类执行的所有方法

  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="javastudy.userMapper">
<select id="selectUser" parameterType="int" resultType="javastudy.User">
select * from User where id = #{id}
</select>
</mapper>

7.编写测试程序

(1)编写MyBatis的工具类

  

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtils {
public static SqlSession openSession() throws IOException
{
String resource = "mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in,"mysql");
return sessionFactory.openSession();
}
}

8,
    准备工作:
  1.建立项目Student&Contact,拷贝mybatis主配置文件,properties文件,MyBatisUtils工具类
  2.建立实体类Student和Contact
  3.建立StudentMapper.xml和ContactMapper.xml映射文件模板
  4.建立StudentMapper和ContactMapper接口
  5.建表student和contact,设定其一对一的对应关系
9,
    mybatis日志
(1)mybatis.properties

   

# Global logging configuration  
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.javastudy=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    注意这行代码
    log4j.logger.javastudy=DEBUG  
10,
    多对多需要建立中间表
    student_course(sid,cid)

11,
    primary key , 复合主键,联合主键(composite key)
    让sid和cid都做主键(复合主键)
    提取学生的时候,要把学生选择的所有课程也提取出来。(三个表的左连接查询,相对比较复杂)

    left jion :学生即使没有选择课程,也能把学生的信息提取出来。

    from student,course where (=内连接:inner join) 
    ... 如果学生没有选择课程,学生的信息也提取不出来

12,
    三)修改
    关联字段一般不需要修改!!一定要修改的话,需要处理好关联关系

13,
    IOC控制反转,AOP面向切面编程

14,
    什么是spring mvc? spring框架中的一个产品中提供的mvc框架,实现类似 struts的功能。

    主要功能:收集表单信息,处理数据,完成处理后的跳转

    1.先准备mybatis环境

    2.准备springmvc环境

    spring mvc 基于 servlet ,需要在web.xml中配置 DispatcherServlet
    相比之下,struts2基于过滤器filter,struts1基于servlet,

    搭建步骤
    1)spring jar下载地址

​     http://maven.springframework.org/release/org/springframework/spring/​

     7个jar包的下载地址:http://pan.baidu.com/s/1c02lQla

     beans,context,aop,core,web,webmvc,expression + comms-logging

     ClassNotFoundException:类找不到异常

    2)配置web.xml,引入前端控制器DispatcherServlet

    <!-- Spring MVC配置 -->

    

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

    特别注意servlet-name,这个名字要用于创建springmvc的配置文件。!!!!!!!!!!

    3) WEB-INF下创建配置文件
    spring-servlet.xml.(spring这个名字要求和web.xml中配置servlet-name的名字一样)

    格式和spring的基础配置文件(applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

</beans>

    4)springmvc可以采用xml配置或者注解配置,xml配置很少用,也比较麻烦,我们只讲解注解配置。

    a)引入相关的命名空间mvc和context

    xmlns:mvc="http://www.springframework.org/schema/mvc"  

​    http://www.springframework.org/schema/mvc  ​​         http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd

    xmlns:context="http://www.springframework.org/schema/context"  

​        http://www.springframework.org/schema/context  ​​         http://www.springframework.org/schema/context/spring-context-4.1.xsd 

    b)设置注解驱动

    <mvc:annotation-driven/>

    c)设置controller扫描路径的包名,spring mvc会自动的实例化该包下的controller。
      controller相当于struts中的action,用于处理数据,完成转发。
            <context:component-scan base-package="javastudy"/>

15,
    新建controller接收页面数据
    redirect:
    1)RequestMapping的设置
    2) 如何接受表单数据:通过HttpServletRequest接收数据,像servlet那样操作springmvc。
    3)通过对象接收数据
    4)通过ModelAndView处理数据和转发

16,
        springMVC
    @Controller   实例化类
    public class UserController {

    @RequestMapping("/checke.do")  配置路径
    public String check()
    {

17,
    设置容器外跳转return "redirect:welcome.jsp";去掉redirect编程容器内跳转,

 

1,引入jar包,放到src,在选中点右键Buildpath
2,
 

<select id="selectUser" resultType="javastudy.User">
select * from User where id = #{id}
</select>
<select id="selectall" resultType="javastudy.User">
select * from User
</select>
<insert id="insertuser" parameterType="javastudy.User" >
insert into user (userName,userPwd) values (#{userName},#{userPwd})
</insert>
<update id="updateuser" parameterType="javastudy.User">
update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}
</update>
<delete id="deleuser" >
delete from user where id=#{id}
</delete>

3,sql语句可以写在
    1,映射文件里也可以通过
    2,注解写在接口里    
    3.写在专门的类中

4,
    保存联系人信息的时候,指定该联系人对应的学生。

    返回插入后生成的自增长属性值的办法
    useGeneratedKeys="true" keyProperty="id"
    加在student的映射文件里 
    (在有主键,主表一方加)<insert id="add"parameterType="javastudy.Student" useGeneratedKeys="true" keyProperty="id">
    
5, 

insert into student
(
name,
sex,
pwd,
phone,
grade,
photo
)
values
(
#{name},
#{sex},
#{pwd},
#{phone},
#{grade},
#{photo}
)

   sql语句最后一句不用加逗号
   
 6,测试类
        

public void test() throws IOException {
SqlSession session= MybatisUtils.openSession();
StudentMapper mapper= session.getMapper(StudentMapper.class);
Student student =new Student();
student.setName("张三");
student.setSex("男");
student.setPhone("123456");
student.setGrade("二年级");
student.setPwd("1234566");
mapper.add(student);

ContactMapper mapp= session.getMapper(ContactMapper.class);
Contact contact =new Contact();
contact.setName("张三");
contact.setSex("男");
contact.setPhone("123456");
contact.setRelation("cc");
contact.setStudent(student);//添加学生
mapp.add(contact);

session.commit();
session.close();

    
7,
    特别注意,要在主配置文件中引入Mapper接口!!
        mybatis-config.xml里的<mappers>  
        <mappers>  
            <mapper class="javastudy.ContactMapper"/>
            <mapper class="javastudy.StudentMapper"/>
        </mappers> 
        
8,有外键的要在映射文件配置sid,values;#{student.id}

9,resultMap="student" 必须为小写 

10,

<resultMap type="javastudy.Student" id="student">
<id property="id" column="sid" />
<result property="name" column="sname"/>
<result property="sex" column="ssex"/>
<result property="pwd" column="spwd"/>
<result property="phone" column="sphone"/>
<result property="grade" column="sgrade"/>
<result property="photo" column="sphoto"/>
<association property="contact" javaType="javastudy.Contact">//关联的Contact
<id property="id" column="cid" />
<result property="name" column="cname"/>
<result property="sex" column="csex"/>
<result property="relation" column="crelation"/>
<result property="phone" column="cphone"/>
</association>
</resultMap>

   (property必须用name,sex,)
   
11,左连接 left join: 左边表中数据必须出来

  

select 
s.id sid,
s.name sname,
s.sex ssex,
s.pwd spwd,
s.phone sphone,
s.grade sgrade,
s.photo sphoto,
c.id cid,
c.name cname,
c.sex csex,
c.relation crelation,
c.phone cphone
from
student s(student的数据是一定会出来,这就是使用左连接的好处)
left join
contact c (然后是右表)
ON
c.sid=s.id
WHERE
s.id=16

1.修改从表数据
    非关联字段可以随便修改,关联字段sid必须修改为student表中存在的(而且没有联系人的)
    学生的id或者修改为null(前提是contact表的sid已经设置为可空)。

2.修改主表数据,非主键字段可以随便修改,
    !!!!!!!主键字段不能随便修改,一般也不需要修改!!!!!!!

3,  老师单独添加
    添加课程的时候,把课程对应的老师添加进去
    返回插入后生成的自增长属性值的办法
    useGeneratedKeys="true" keyProperty="id"
    
4.一对多在一方加,多对多两方都加(<collection property="courses" ofType="javastudy.Course">);

    

<resultMap type="javastudy.Teacher" id="teacher">
<id property="id" column="tid"/>
<result property="name" column="tname"/>
<result property="sex" column="tsex"/>
<result property="phone" column="tphone"/>
<collection property="courses" ofType="javastudy.Course">
<id property="id" column="cid"/>
<result property="name" column="cname"/>
<result property="type" column="ctype"/>
<result property="hours" column="chours"/>
</collection>

       
5. 学生  学生课程表  课程, 老师(四表)
   (A)      (B)       (C)   (D)
    (A - B) - (C - D)
   

select
cid,cname,ctype,chours,
tid,tname,tsex,tphone,
sid,sname,ssex,spwd,sphone,sgrade,sphoto
from
(
select
c.id cid,
c.name cname,
c.type ctype,
c.hours chours,
t.id tid,
t.name tname,
t.sex tsex,
t.phone tphone
from
course c
left JOIN
teacher t
on c.tid=t.id
) t1
left join
(
select
s.id sid,
s.name sname,
s.sex ssex,
s.pwd spwd,
s.phone sphone,
s.grade sgrade,
s.photo sphoto,
sc.cid sccid
from
student_course sc
left join
student s
on sc.sid=s.id
) t2
on t1.cid=t2.sccid
where t1.cid=#{id}

    !!(此sql语句放在course里面)!!
1,
    设置controller扫描路径的包名,spring mvc会自动的实例化该包下的controller。
    controller相当于struts中的action,用于处理数据,完成转发。    
 

1,
    springMVC

public class UserController {

//第一种方式(优先选用)
@RequestMapping("/checke.do")
public String check(HttpSession session,User user)
{
System.out.println("提交成功!");
String path="login.jsp";
if("zhang".equals(user.getName()))
{
session.setAttribute("name", user.getName());
path="welcome.jsp";
}
return "redirect:"+path;
}

    //两种方式实现跳转
    

@RequestMapping("/checke1.do")
public ModelAndView checke1(User user,HttpSession session)
{
String path="login.jsp";
if("zhang".equals(user.getName()))
{
session.setAttribute("name", user.getName());
path="welcome.jsp";
}
ModelAndView mav =new ModelAndView(new RedirectView(path));
// mav.addObject("name", user.getName());
return mav;
}
}

2,
    视图,简单说就是JSP文件!

    视图解析器的作用:通过视图名称,找到视图!

    视图解析器有很多,常用的只有以下这种

  

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value= ""/>
<property name="suffix" value= ".jsp"/>
</bean>

    redirect跳转的方式,视图解析器不起作用。

 

SSM整合参考文章(直接百度“SSM整合”)

1.需要哪些配置文件? (3个配置文件)
 
 web.xml,springmvc的配置文件,spring和mybatis整合的配置文件

 与ssh整合进行对比

1.web.xml中的配置

(1)spring的配置(加载spring的相关配置),其实就是spring和mybatis整合的配置文件

  第一步:加载listener

  

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  第二步:指定spring配置文件的位置和名字(默认的方式和非默认的方式)。(一般采用默认的)!!!!

  contextConfigLocation

  总结:可以默认将applicationContext.xml放在web-inf目录下,也可以指定配置文件的名称和位置。

  从之前的项目中复制配置文件

   

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>

  省略以后,相当于

   

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

(2)spring mvc的配置

 (a)默认的方式:在web.xml中配置springmvc的servlet的名字xxx,默认的springmvc配置文件名为xx-servlet.xml

 (b)非默认的方式:直接在web.xml中配置springmvc的servlet的时候,指定springmvc配置文件的位置和名字。

<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

============================================================================
ssh整合applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">
<context:annotation-config/>
<context:component-scan base-package="net.xinqushi.dao.impl,net.xinqushi.service.impl,net.xinqushi.aop"/>
<aop:aspectj-autoproxy/>

<context:property-placeholder location="classpath:dataSource.properties" />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- 初始化连接数量; -->
<property name="initialSize" value="0" />
<!-- 最大并发连接数 -->
<property name="maxActive" value="20" />

<!-- 最大空闲连接数 -->
<property name="maxIdle" value="20" />
<!-- 最小空闲连接数 -->
<property name="minIdle" value="0" />
<!-- 最大等待时长 -->
<property name="maxWait" value="60000" />
<!-- 超过时间限制是否回收 -->
<property name="removeAbandoned" value="true" />
<!-- 超过时间限制多长; -->
<property name="removeAbandonedTimeout" value="180"/>


<!-- 数据源连接参数配置; -->
<property name="username" value="${db.username}"/>
<property name="url" value="${db.url}"/>
<property name="password" value="${db.password}"/>
<property name="driverClassName" value="${db.driverClassName}"/>

</bean>

<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="net.xinqushi.model"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
</props>
</property>
</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 定义切面 -->
<aop:config>
<aop:pointcut expression="execution(* net.xinqushi.service.impl.*.* (..))" id="txPointCut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>

<!-- 声明式事务 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="get*" read-only="true" propagation="REQUIRED"/>
<tx:method name="check*" read-only="true" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
</beans>

 

标签:总结,xml,http,框架,spring,springframework,SSM,org,id
From: https://blog.51cto.com/u_13363083/5979325

相关文章

  • python的web应用程序开发(Django框架)
    python的web应用程序开发(Django框架)1.安装Django并开启网页服务器pipinstalldjango#安装Django包django-adminstartprojectmysite#在指定路径下新建一个mysite文件......
  • Flutter异常监控 - 贰 | 框架Catcher原理分析
    前言在给Flutter应用做异常监控的时候,一开始我是拒绝滴,如果不考虑FlutterEngine和native侧的监控,用我另一篇文章中不得不知道的Flutter异常捕获知识点提到的方......
  • Selenium44-自动化测试框架
    什么是自动化测试框架可以把自动化测试的各个功能称作模块,需要的模块分为基础模块,主要是怎么实现脚本编写,包括测试用例、测试套件、网页对象设计实现等管理模块,主要包......
  • 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建
    本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单。###1.新建项目首先,打开eclipse,新建一个web项目。......
  • Maven搭建SpringMvc+Spring+Hibernate框架
    假设你已经在Myeclipse上面创建好啦一个Maven项目,现在我们开始往pom.xml里面新增jar的配置。1.<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://ww......
  • 接口测试自动化框架选型
    1、fiddlerfiddler是一个HTTP协议调试代理工具,Web和手机测试都会用到,同时也支持接口测试。它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查......
  • 年终总结2022
    年初搞了Vue3+ts的项目,从刚接触vue3时的vue-cli转为vite,体验非常不错。做了一套后台管理系统模板,elementPlus/TDesign两个UI框架都有做。菜单和路由的关系配置,优雅切换......
  • UML基础总结
    UML(UnifiedModelingLanguage)统一建模语言官方网站:​​http://www.uml.org/​​建模是在编码之前进行的设计工作,一般常用于需求分析中,而且在软件功能设计方面也能起到很大......
  • HarmonyOS多媒体框架介绍
     随着科技进步,我们的生活发生了翻天覆地的变化。过去几年音视频技术发展迅速,直播行业异军突起,在社交、娱乐、教育、医疗等领域高歌猛进。当前,对音视频技术的需求又将到达......
  • 2022年终总结
    前言今年是我在生活中成长最迅速的一年,也是我在大人的眼中逐渐变得懂事的一年,不再沉迷于游戏,在工作中敢于承担责任,和同事和朋友相处更加自然,这一切的改变都源自于戒游戏......