手动搭建ssm框架(适宜新手)

2024-01-09 17:20

本文主要是介绍手动搭建ssm框架(适宜新手),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在公司一直做分布式的项目,项目基本拿过来的时候架构师把整体框架,所用技术全都选择好了,我们只要按照约束去写代码就好了,没事,我就想看自己是否还能搭建出ssm框架,说实话,还是耗费力气的,不过总算弄出来了,适合显新手。

我的jdk是1.7版本的

首先我们新建一个maven项目如图所示:我勾选这个是因为之前用提供的模板最后项目总是目录结构不太对,各种原因导致,索性我就不用模板,这样绝对可以,当然大家根据自己喜好来。

点击next,选择war包,finish

finish之后我们的项目会报错,那是因为我们没有web.xml导致的,所以我们鼠标右键项目会出现如图:

然后我们点击下箭头所指的那个 生成web.xml就不会报错了。

   先提出整体项目的结构图:

数据库脚本:

CREATE DATABASE maven;
USE maven;CREATE TABLE `user` (`id` INT(12) NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) NOT NULL,`password` VARCHAR(50) NOT NULL,`age` INT(9) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;INSERT  INTO `user`(`id`,`name`,`password`,`age`) VALUES (1,'admin','admin',22);

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.csq.study</groupId><artifactId>ssm-test</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>Maven_Project Maven Webapp</name><url>http://maven.apache.org</url><!-- 用来设置版本号 --><properties><spring.version>4.0.2.RELEASE</spring.version><mybatis.version>3.2.8</mybatis.version><slf4j.version>1.7.12</slf4j.version><log4j.version>1.2.17</log4j.version></properties><!-- 用到的jar包 --><dependencies><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><!-- 表示开发的时候引入,发布的时候不会加载此包 --><scope>test</scope></dependency><!-- java ee包 --><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version></dependency><!-- spring框架包 start --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><!-- spring框架包 end --><!-- mybatis框架包 start --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- mybatis框架包 end --><!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!-- jstl标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log END --><!-- Json --><!-- 格式化对象,方便输出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- 上传组件包 start --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><!-- 上传组件包 end --><!-- AL相关添加 --><dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.8</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency><!-- AL相关添加 --></dependencies><build><finalName>ssm-test</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build>
</project>

2.在src/main/resources下添加如下配置文件 

  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: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-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!--表示 使用注解式注入 --><context:annotation-config /><!-- 自动扫描 controller所在的包--><context:component-scan base-package="com.csq" /><import resource="spring-dao.xml"/><import resource="spring-db.xml"/><import resource="spring-tx.xml"/></beans>

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/maven
username=root
password=root
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000

log4j.properties

#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

spring-dao.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-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.csq.study.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>                       </beans>

spring-db.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-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 引入配置文件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:com/csq/study/dao/*.xml""></property></bean></beans>

spring-tx.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!--  配置参与事务的类 --><aop:config><aop:pointcut id="allServiceMethod" expression="execution(* com.csq.study.service.*.*(..))"/><aop:advisor pointcut-ref="allServiceMethod" advice-ref="TxAdvice" /></aop:config><!-- 使用声明方式配置事务 --><tx:advice id="TxAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception"/></tx:attributes></tx:advice></beans>

 

spring-mvc.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-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 添加注解驱动 -->  <mvc:annotation-driven /><mvc:default-servlet-handler/><!-- 设置使用注解的类所在的包 --><context:component-scan base-package="com.csq.study.controller" /><!-- 定义跳转的文件的前后缀 ,视图模式配置--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 自动给后面action的方法return的字符串加上前缀和后缀,可跳到对应的jsp。方便我们代码的书写 --><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- SpringMVC上传文件时,需要配置MultipartResolver处理器--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  <!-- 默认编码 --><property name="defaultEncoding" value="utf-8" />  <!-- 文件大小最大值 --><property name="maxUploadSize" value="10485760000" />  <!-- 内存中的最大值 --><property name="maxInMemorySize" value="40960" />  </bean> </beans>

controller层:

package com.csq.study.controller;import java.util.List;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.csq.study.service.UserService;
import com.csq.study.vo.User;@Controller
@RequestMapping("/user")
public class UserController {@Resourceprivate UserService userService;@RequestMapping("/userListInfo")public String userList(HttpServletRequest request,Model model){List<User> list = userService.getAllUser();model.addAttribute("list", list);return "userListInfo";}@RequestMapping("/showUser")public String showUser(HttpServletRequest request,Model model){System.out.println(request.getParameter("id"));int userId = Integer.parseInt(request.getParameter("id"));User user = userService.getUserById(userId);model.addAttribute("user", user);return "showUserPage";}@RequestMapping("/addUserUI")public String addUserUI(){return "addUserUI";}@RequestMapping("/addUser")public String addUser(HttpServletRequest request,Model model){User user = new User();user.setName(String.valueOf(request.getParameter("name")));user.setPassword(String.valueOf(request.getParameter("password")));user.setAge(Integer.parseInt(String.valueOf(request.getParameter("age"))));userService.addUser(user);return "redirect:/user/userListInfo";}
}

service接口:

package com.csq.study.service;import java.util.List;import com.csq.study.vo.User;public interface UserService {public User getUserById(int userId);public void insertUser(User user);public void addUser(User user);public List<User> getAllUser();
}

serviceImpl:

package com.csq.study.serviceImpl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.csq.study.dao.UserDao;
import com.csq.study.service.UserService;
import com.csq.study.vo.User;@Service("userService")
public class UserServiceImpl implements UserService {@Resourceprivate UserDao userDao;public User getUserById(int userId) {return userDao.queryById(userId);}public void insertUser(User user) {userDao.insertUser(user);}public void addUser(User user) {userDao.insertUser(user);}@Overridepublic List<User> getAllUser() {return userDao.getAllUser();}}

dao:

package com.csq.study.dao;import java.util.List;import com.csq.study.vo.User;public interface UserDao {public User queryById(Integer id);public List<User> getAllUser();public void insertUser(User user);public void updateUser(User user);}

mapper.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="com.csq.study.dao.UserDao" >  <resultMap id="BaseResultMap" type="com.csq.study.vo.User"><result column="id" property="id" jdbcType="INTEGER" /><result column="name" property="name" jdbcType="VARCHAR" /><result column="password" property="password" jdbcType="VARCHAR" /><result column="age" property="age" jdbcType="INTEGER" /></resultMap><sql id="Base_Column_List">id, name, password, age</sql><!-- 查询用户--><select id="queryById" resultMap="BaseResultMap"parameterType="java.lang.Integer">select<include refid="Base_Column_List" />from userwhere id = #{id,jdbcType=INTEGER}</select><!-- 查询用户--><select id="getAllUser" resultMap="BaseResultMap">select<include refid="Base_Column_List" />from user</select><!-- 插入用户 --><insert id="insertUser" parameterType="com.csq.study.vo.User">insert into user  <trim prefix="(" suffix=")" suffixOverrides="," >  <if test="id != null" >  id,  </if>  <if test="name != null" >  name,  </if>  <if test="password != null" >  password,  </if>  <if test="age != null" >  age,  </if>  </trim>  <trim prefix="values (" suffix=")" suffixOverrides="," >  <if test="id != null" >  #{id,jdbcType=INTEGER},  </if>  <if test="name != null" >  #{name,jdbcType=VARCHAR},  </if>  <if test="password != null" >  #{password,jdbcType=VARCHAR},  </if>  <if test="age != null" >  #{age,jdbcType=INTEGER},  </if>  </trim>   </insert><!-- 删除用户 --><delete id="deleteById" parameterType="java.lang.Integer">delete from userwhere id = #{id,jdbcType=INTEGER}  </delete><!-- 更新用户 --><update id="updateUser" parameterType="com.csq.study.vo.User" >  update user  <set >  <if test="name != null" >  name = #{name,jdbcType=VARCHAR},  </if>  <if test="password != null" >  password = #{password,jdbcType=VARCHAR},  </if>  <if test="age != null" >  age = #{age,jdbcType=INTEGER},  </if>  </set>  where id = #{id,jdbcType=INTEGER} </update></mapper>

实体类User:

package com.csq.study.vo;public class User {private int id;private String name;private String password;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

在WEB-INF下新建一个文件夹jsp,里面放如下的jsp

addUserUI.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'addUser.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form id="addUser" action="user/addUser" method="post"> userName: <input id="name" name="name" /><br/> password: <input id="password" name="password" /><br/> age: <input id="age" name="age"/><br/> <input type="submit" value="添加新用户"/> </form></body>
</html>

 showUserPage.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'showUser.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>${user.name }<br></body>
</html>

userListInfo.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'showUser.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><c:forEach items="${list }" var="u">名称:${u.name}年龄:${u.age }<br/></c:forEach></body>
</html>

ok。项目写完 我们放在tomcat上运行,然后输入:

本项目中容易出现的错误:

我们访问http://localhost:8080/ssm-test/user/showUser会出现如下图:

这是访问路径写的不对,正确的访问是:

tomcat启动报错:大部分是配置文件和web.xml中扫描的路径又出错,自己根据报错逐一检查就可以了。

 

转载注明出处:https://blog.csdn.net/FindHuni/article/details/83862445 

这篇关于手动搭建ssm框架(适宜新手)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587863

相关文章

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.