刚学习springmvc不久,各种配置我怕记不住,就写个随笔记录一下。

我的项目是springmvc+hibernate4。环境是windows+myeclipse(或eclipse)+jdk7+tomcat7+mysql

项目文件层级关系如图所示:

配置springmvc+hibernate4步骤:(如果使用hibernate3会有一些差别)

第一步:引入jar包。第一次为了方便,我将很多jar包和依赖包全部直接拷进去了,实际上只需要一部分。具体需要什么,就加什么,可以在网上查到。

注意:把jar包导入后需要对所有包Add to Build Path;然后对工程名右键Build Path——>configure Build Path——>Add External JARS选择tomcat路径,添加"servlet-api.jar"  "el-api.jar"  "jsp-api.jar" 这三个jar包。

第二步:配置数据源,注解扫描包。spring-context.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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><!-- 注解扫描包 --><context:component-scan base-package="main.java.lms" /><!-- 开启注解 --><context:annotation-config /><!--数据源-mysql --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/laboratory" /><property name="username" value="root" /><property name="password" value="root" /></bean><!--数据源-sqlserver --><!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=laboratory"/> <property name="username" value="root" /> <property name="password" value="root" /> </bean> --><!--数据源-oracle --><!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="root" /> <property name="password" value="root" /> </bean> --><!-- Hibernate SessionFactory,hibernate3为class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" --><!--设置属性说明  --><!--hibernate.dialect设置方言  --><!--hibernate.format_sql输出格式化的sql  --><!--hibernate.show_sql控制台输出sql  --><!--hibernate.hbm2ddl.auto 自动创建|更新|验证数据库表结构。有以下几个参数: create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。 --><!--current_session_context_class使用缓存机制。(hibernate3:Thread或jta);(hibernate4:org.springframework.orm.hibernate4.SpringSessionContext)  --><!--hibernate.cache.provider_class 使用Ehcache缓存;hibernate3是org.hibernate.cache.HashtableCacheProvider;hibernate4是net.sf.ehcache.hibernate.EhCacheProvider  --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop><!-- <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> --><!-- <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> --><prop key="hibernate.show_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.format_sql">true</prop></props></property><!--自动扫描(实体类)注解包 --><property name="packagesToScan" value="main.java.lms"></property></bean>
</beans>

第三步:配置试图解析器等,springmvc-context.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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><!-- 注解扫描包 --><context:component-scan base-package="main.java.lms" /><mvc:annotation-driven /><mvc:default-servlet-handler /><!-- spring mvc 视图解析器 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix"><value>/WEB-INF/pages/</value></property><property name="suffix"><value>.jsp</value></property></bean><!--spring对hibernate的事务管理  --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 自动扫描事务注解 --><tx:annotation-driven transaction-manager="transactionManager" /><!-- <bean id="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="defaultErrorView"><value>error</value></property><property name="exceptionMappings"><props><prop key="java.lang.RuntimeException">error</prop></props></property></bean> --><import resource="spring-context.xml" />
</beans>

第四步:配置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_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>LaboratorySystemSpringmvc</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><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/log4j.properties</param-value></context-param><context-param><param-name>log4jRefreshInterval</param-name><param-value>3000</param-value></context-param><listener><listener-class>  org.springframework.web.util.Log4jConfigListener  </listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-context.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener><servlet><servlet-name>Spring MVC Dispatcher Servlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Spring MVC Dispatcher Servlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--getCurrentSession()事务会自动关闭,所以在所有jsp页面查询数据都会关闭session。要想在jsp查询数据库需要加入下面这个  --><filter><filter-name>SpringOpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>SpringOpenSessionInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

第五步:新建实例

package main.java.lms.entities;import java.io.Serializable;import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;/*** 用户表* */
@Entity
@Table(name="lms_user")
public class User implements Serializable {/*** */private static final long serialVersionUID = -1461373625778051299L;private int userId;private String loginNumber;// 登陆名,即学号或工号private String loginPassword;private String userName;private String userIdentity;// 身份:学生,老师管理员:3,2,1// 用户扩展表(与用户一对一级联关系)private UserExtends userExtends;public User(String loginNumber, String loginPassword) {this.loginNumber = loginNumber;this.loginPassword = loginPassword;}public User() {}@ManyToOne(cascade=CascadeType.ALL)@JoinColumn(name="user_ex_loginName",unique=true,referencedColumnName="user_ex_loginName")public UserExtends getUserExtends() {return userExtends;}public void setUserExtends(UserExtends userExtends) {this.userExtends = userExtends;}@Id@Column(name = "user_id", unique = true, nullable = false)public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}@Column(name = "user_loginName", unique = true, nullable = false)public String getLoginNumber() {return loginNumber;}public void setLoginNumber(String loginNumber) {this.loginNumber = loginNumber;}@Column(name = "user_loginPassword", nullable = false)public String getLoginPassword() {return loginPassword;}public void setLoginPassword(String loginPassword) {this.loginPassword = loginPassword;}@Column(name = "user_name", nullable = false)public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}@Column(name = "user_identity", nullable = false)public String getUserIdentity() {return userIdentity;}public void setUserIdentity(String userIdentity) {this.userIdentity = userIdentity;}}

package main.java.lms.entities;import java.io.Serializable;import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;/*** 用户扩展表* */
@Entity
@Table(name = "lms_userextends")
public class UserExtends implements Serializable {/*** */private static final long serialVersionUID = 8046904045928469438L;// 用户(与用户扩展表一对一级联关系)private User user;private String userExLoginNumber;private int sex;private String idCard;private String national;// 民族private String politicalLandscape;// 政治面貌private String placeOfOrigin;// 籍贯private String studyType;// 学生类别,本科专科:1本2专private String studentDepartment;// 所在系别private String studentProfessional;// 专业private String studentProfessionalDirection;// 专业方向private int stduentClass;// 班级private int grade;// 年级private String workDepartment;// 工作部门单位private String workPosition;// 工作职位private String workTitle;// 职称private String phoneNumber;private String email;private String address;private int postalCode;@OneToOne(mappedBy="userExtends",cascade=CascadeType.ALL)public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Id@Column(name = "user_ex_loginName", unique = true, nullable = false)public String getUserExLoginNumber() {return userExLoginNumber;}public void setUserExLoginNumber(String userExLoginNumber) {this.userExLoginNumber = userExLoginNumber;}@Column(name = "user_sex")public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}@Column(name = "user_idCard")public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}@Column(name = "user_national")public String getNational() {return national;}public void setNational(String national) {this.national = national;}@Column(name = "user_politicalLandscape")public String getPoliticalLandscape() {return politicalLandscape;}public void setPoliticalLandscape(String politicalLandscape) {this.politicalLandscape = politicalLandscape;}@Column(name = "user_placeOfOrigin")public String getPlaceOfOrigin() {return placeOfOrigin;}public void setPlaceOfOrigin(String placeOfOrigin) {this.placeOfOrigin = placeOfOrigin;}@Column(name = "user_studyType")public String getStudyType() {return studyType;}public void setStudyType(String studyType) {this.studyType = studyType;}@Column(name = "user_studentDepartment")public String getStudentDepartment() {return studentDepartment;}public void setStudentDepartment(String studentDepartment) {this.studentDepartment = studentDepartment;}@Column(name = "user_studentProfessional")public String getStudentProfessional() {return studentProfessional;}public void setStudentProfessional(String studentProfessional) {this.studentProfessional = studentProfessional;}@Column(name = "user_studentProfessionalDirection")public String getStudentProfessionalDirection() {return studentProfessionalDirection;}public void setStudentProfessionalDirection(String studentProfessionalDirection) {this.studentProfessionalDirection = studentProfessionalDirection;}@Column(name = "user_studentClass")public int getStduentClass() {return stduentClass;}public void setStduentClass(int stduentClass) {this.stduentClass = stduentClass;}@Column(name = "user_grade")public int getGrade() {return grade;}public void setGrade(int grade) {this.grade = grade;}@Column(name = "user_workDepartment")public String getWorkDepartment() {return workDepartment;}public void setWorkDepartment(String workDepartment) {this.workDepartment = workDepartment;}@Column(name = "user_workPosition")public String getWorkPosition() {return workPosition;}public void setWorkPosition(String workPosition) {this.workPosition = workPosition;}@Column(name = "user_workTitle")public String getWorkTitle() {return workTitle;}public void setWorkTitle(String workTitle) {this.workTitle = workTitle;}@Column(name = "user_phoneNumber")public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}@Column(name = "user_email")public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Column(name = "user_address")public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Column(name = "user_postalCode")public int getPostalCode() {return postalCode;}public void setPostalCode(int postalCode) {this.postalCode = postalCode;}}

第六步:controller层

@Controller
public class UserController {@Autowiredprivate UserServices userServices;/*** 映射首页的地址,如果已登录跳转到首页,未登录跳转到登录界面* @param request* @param response* @return*/@RequestMapping(value="/index.html",method=RequestMethod.GET)public String toIndex(HttpServletRequest request,HttpServletResponse response){HttpSession session=request.getSession();if(session.getAttribute("user")!=null){return "user/index";}else {try {response.sendRedirect(request.getContextPath()+"/login.html");} catch (IOException e) {e.printStackTrace();}return "user/login";}}/*** 执行登录操作* @param request* @param response* @throws IOException*/@RequestMapping(value="/login.action",method=RequestMethod.POST)public void Login(HttpServletRequest request,HttpServletResponse response) throws IOException{HttpSession session=request.getSession();String userName=request.getParameter("loginName");String userPassword=request.getParameter("loginPassword");String yanzhengma=request.getParameter("yanzhengma");String randNum=(String) request.getSession().getAttribute("random");System.out.println("系统生成的验证码:"+randNum);System.out.println("登陆界面传过来的验证码:"+yanzhengma);//不区分大小写比较相等if(!randNum.equalsIgnoreCase(yanzhengma)){response.setContentType("text/html;charset=UTF-8");response.getWriter().print("yanzhengmaError");return;}User user=new User();user.setLoginNumber(userName);user.setLoginPassword(userPassword);user=this.userServices.userLogin(user);response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");try {if(user!=null){session.setAttribute("user", user);response.getWriter().print("true");}else {response.getWriter().print("false");}} catch (Exception e) {}}
}

第七步:service层

@Transactional
@Service("userService")
public class UserServicesImpl implements UserServices{@Autowiredprivate UserDao userDao;@Overridepublic User userLogin(User user) {System.out.println("call service");User user2=this.userDao.userLogin(user);return user2;}
}

第八步:dao层

(1)使用hql

@Repository("userDao")
public class UserDaoImpl implements UserDao {@Autowiredprivate SessionFactory sessionFactory;@Overridepublic User userLogin(User user) {System.out.println("call dao");User user2 = (User) this.sessionFactory.getCurrentSession().createQuery("FROM User u where u.loginNumber=:loginName and u.loginPassword=:password").setString("loginName", user.getLoginNumber()).setString("password", user.getLoginPassword()).uniqueResult();return user2;}
}

(2)使用原生sql

@Repository("deviceDao")
@SuppressWarnings("unchecked")
public class DeviceDaoImpl implements DeviceDao {@Autowiredprivate SessionFactory sessionFactory;/*** 查询所有仓库设备* */@Overridepublic List<Device> getDevice() {// isdelete = 2199-12-31 23:59:59,表示有效String sql = "SELECT id AS deviceId,name,info,avaiNum,damageNum FROM lms_device WHERE isDelete = '2199-12-31 23:59:59'";SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);query.addScalar("deviceId", StandardBasicTypes.INTEGER);query.addScalar("name", StandardBasicTypes.STRING);query.addScalar("info", StandardBasicTypes.STRING);query.addScalar("avaiNum", StandardBasicTypes.INTEGER);query.addScalar("damageNum", StandardBasicTypes.INTEGER);query.setResultTransformer(Transformers.aliasToBean(Device.class));return query.list();}
}

最后补充:为了方便在控制台看见后台操作的结果,能够输出后台执行情况,再加一个文件log4j.properties

 1 ##OFF->FATAL->ERROR->WARN->INFO->DEBUG->ALL
 2 ##ERROR->WARN->INFO->DEBUG
 3 # define a logger named CONSOLE
 4 log4j.rootLogger=INFO, CONSOLE
 5 # CONSOLE logger - console
 6 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 7 # COSOLE Layout
 8 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 9 # CONSOLE format Layout
10 log4j.appender.CONSOLE.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c:(%F:%L) - %m%n 

所有的配置文件就是下面这几个。

到这里,再写好jsp页面就可以运行一个springmvc的网站了。

第一次写博客,谨记。

转载于:https://www.cnblogs.com/liuqinc/p/5764448.html

SpringMVC项目配置全过程详解相关推荐

  1. idea直连服务器工具RemoteHost配置全过程详解,idea执行ssh命令神器

    项目开发运维过程中不可避免用到ssh命令连接远服务器进行远程部署或者一些配置操作,之前一直用的Xshell,更新了一次电脑之后打不开了,重新安装又没找到安装包,于是直接用git窗口ssh命令行操作服务 ...

  2. 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解

    用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...

  3. java常量配置_java项目动态配置常量和peiconfig.properties配置使用详解

    java项目动态配置常量和peiconfig.properties配置使用详解 点击:2 Java工程中配置信息一般都写在 properties文件中,下面这篇文章是对java基础配置的一点学习心得整 ...

  4. vue项目结构php写哪里,vuex项目结构目录与配置使用详解

    这次给大家带来vuex项目结构目录与配置使用详解,使用vuex项目结构目录与配置的注意事项有哪些,下面就是实战案例,一起来看一下. 首先先正经的来一段官网的"忠告": vuex需要 ...

  5. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  6. WSO2安装使用的全过程详解

    WSO2安装使用的全过程详解 1. Wso2 Install 1.0 Port 1.1 Docker Install 1.2 Uninstall 2. Git Install 2.0 Port 2.1 ...

  7. 视频教程-javascript/jquery全过程详解-Java

    javascript/jquery全过程详解 资深大数据.java讲师,十年开发经验,曾经任职于北大青鸟.讯腾软件等多家知名教育机构,精通javaweb, 前端技术,J2EE技术体系,熟练使用Spri ...

  8. WSUS MITM远程攻击实战全过程详解

    本文讲的是 WSUS MITM远程攻击实战全过程详解, 网络攻击(WPAD注入,HTTP / WSUS 中间人攻击,SMBRelay攻击等)是一个非常有用的攻击向量,攻击者可以使用此类攻击尝试以半定向 ...

  9. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

最新文章

  1. 交换机与集线器的区别
  2. [转] 三层开发中的层次划分
  3. eclipse项目迁移到Android Studio
  4. Method Area(方法区)
  5. 设计一代码,逆置带头结点的动态单链表L
  6. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(九、卷积神经网络)
  7. 滴滴章文嵩:一个人的 20 年开源热情和国内互联网开源运动
  8. ARM-linux的启动流程
  9. SharePoint开发错误—列表自定义表单出现“未将对象引用设置到对象的实例”
  10. awvs 与 xray联动
  11. C语言二维数组定义、赋值、按要求遍历操作、输出以及函数调用
  12. vue脚手架根据需要进行配置
  13. 简单基于tun实现的用户态NAT64
  14. 流媒体播放器EasyPlayer.js如何实现动态设置解码H.265音频?
  15. Vmware、Virtuozoo、Virtual Server 、Xen四款虚拟机的性能比较
  16. 性价比高一点的蓝牙耳机有哪几款?高性价比蓝牙耳机推荐
  17. spot卫星介绍与数据下载
  18. 多开分身苹果版_苹果手机最新微信分身怎么下载?微信多开地址分享
  19. 液晶电视英文linux使用教程,液晶电视如何使用 液晶电视正确使用方法介绍【详解】...
  20. Java项目:教师资格证报名系统(java+SpringBoot+vue+maven+mysql+elementui)

热门文章

  1. c远程连接mysql数据库_MySQL数据库远程连接开启方法
  2. linux7自带haprox版本,CentOS7.4—构建最新版haproxy高可用群集
  3. Z字形变换(LeetCode第6题)
  4. JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解
  5. java环境变量立即生效_win7批处理环境变量立即生效
  6. oracle的操作大全,Oracle数据库操作大全(六)Oracle中操作数据
  7. python的raw函数_Python内建函数之raw_input()与input()代码解析
  8. python怎么连接数据库_python3.x怎么连接mysql数据库
  9. 天线的起源与发展历史
  10. 嗨,你选择自学成才还是参加培训?