SSM框架的搭建完整步骤
SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
基于SSM框架的B2C网上商城系统的设计与实现

基于SSM框架的B2C网上商城系统的设计与实现一、引言随着互联网的快速进步,电子商务成为了现代商业领域中不行或缺的一部分。
B2C(Business-to-Customer)网上商城系统在这一背景下应运而生,为消费者提供了便捷、高效、安全的在线购物体验。
本文将介绍一种基于SSM(Spring+SpringMVC+MyBatis)框架的B2C网上商城系统的设计与实现,旨在通过探讨系统架构、功能模块、数据库设计以及系统实现等方面的内容,为开发者提供参考和指导。
二、系统架构设计1. 总体架构基于SSM框架的B2C网上商城系统接受三层架构,包括表示层(Presentation Layer)、业务层(Business Logic Layer)和数据访问层(Data Access Layer)。
表示层负责与用户进行交互,接收用户的请求,并将结果展示给用户。
接受SpringMVC框架实现,通过Controller来接受用户请求,调用业务层进行相应处理,最终返回结果给前端页面。
业务层负责处理业务逻辑,包括商品管理、订单管理、用户管理等功能模块。
接受Spring框架实现,通过业务层接口和实现类来完成详尽的业务逻辑,同时调用数据访问层来实现对数据库的操作。
数据访问层负责与数据库进行交互,包括数据库毗连、数据操作等操作。
接受MyBatis框架实现,通过Mapper映射文件将SQL语句与Java代码进行映射,实现数据库操作。
2. 功能模块划分基于SSM框架的B2C网上商城系统主要包括以下功能模块:用户模块、商品模块、购物车模块、订单模块和支付模块。
用户模块:实现用户的注册、登录、个人信息管理等功能,包括用户注册、用户登录、密码找回、个人信息查看与修改等。
商品模块:实现商品的分类、查找、浏览、采购等功能,包括商品分类管理、商品列表展示、商品查找、商品详情展示等。
购物车模块:实现用户对商品的保藏、添加、删除、结算等功能,包括购物车添加、购物车删除、购物车结算等。
《2024年基于SSM框架的网上商城系统的设计与实现》范文

《基于SSM框架的网上商城系统的设计与实现》篇一一、引言随着互联网技术的快速发展,电子商务已成为人们购物的主要方式之一。
为了满足用户多样化的购物需求,基于SSM (Spring、SpringMVC、MyBatis)框架的网上商城系统应运而生。
本文将详细介绍该系统的设计思路与实现过程,以期为相关开发人员提供参考。
二、系统需求分析在系统需求分析阶段,我们首先明确了系统的目标用户、业务需求及功能需求。
目标用户主要包括普通消费者、商家及管理员。
业务需求涉及商品管理、购物车管理、订单管理、支付管理、用户管理等模块。
功能需求则根据业务需求细化,如商品展示、商品搜索、购物车添加/删除商品、下单、支付、评价等。
三、系统设计1. 技术架构设计本系统采用SSM框架进行开发,技术架构包括表现层、业务逻辑层及数据访问层。
表现层负责与用户进行交互,业务逻辑层负责处理业务逻辑,数据访问层负责与数据库进行交互。
系统采用B/S架构,支持多终端访问。
2. 数据库设计数据库设计是系统设计的关键环节。
根据系统需求分析,我们设计了商品表、用户表、订单表、购物车表等核心数据表。
同时,为了确保数据的一致性和完整性,我们还设计了相应的约束条件和索引。
四、系统实现1. 开发环境搭建系统开发环境包括JDK、Tomcat服务器、MySQL数据库及开发工具等。
在搭建过程中,我们需要注意版本兼容性和配置的正确性。
2. 模块实现根据系统设计,我们将系统分为商品管理、购物车管理、订单管理、支付管理、用户管理等模块。
每个模块都包含了相应的业务逻辑和操作界面。
在实现过程中,我们采用了SSM框架的优点,将业务逻辑与数据访问分离,提高了系统的可维护性和可扩展性。
五、关键技术实现1. Spring框架的应用Spring框架在系统中扮演了核心角色。
我们通过Spring的依赖注入功能实现了业务逻辑与数据访问的解耦,提高了系统的可维护性。
同时,Spring还提供了事务管理功能,确保了数据的完整性和一致性。
VueSSM搭建一个简单的Demo前后端分离含增删改查(CRUD)、分页、批量功能

VueSSM搭建⼀个简单的Demo前后端分离含增删改查(CRUD)、分页、批量功能前⾔最近想复习⼀下SSM,所以就搭建了这个⼩DEMO,轻车熟路,个⼈认为在只⽤到SSM框架的前提下,这样做是最简洁的搭建⽅式了。
写这篇博客也是复习的⼀部分,也想收获些意料之外的XXXX。
⽤到的技术和开发⼯具前端开发⼯具:WebStorm开发框架:vue + axios + elementUI包管理⼯具: npm打包⼯具:webpack后端开发⼯具:IDEA开发框架:springMVC + spring + mybatis打包⼯具:maven数据库: MySQL需求及功能增删改查(CRUD)分页批量删除前后端分离后台开发环境搭建File->New->Project…->maven->.......百度后台代码ssm_project/src/main/resources/applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xmlns:p="/schema/p"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context-4.3.xsd/schema/aop/schema/aop/spring-aop-4.3.xsd/schema/tx/schema/tx/spring-tx-4.3.xsd"><!-- @Component, @Repository, @Service, @Controller, @Autowired, @Resources --><!-- ⽤注解进⾏开发 --><context:annotation-config></context:annotation-config><!-- 注解扫描包 --><context:component-scan base-package="com.example"><!-- 这⾥不加载Controller的bean --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 1. 数据源 --><!-- 读取db.properties⽂件. 读取到数据库信息 --><context:property-placeholder location="classpath:db.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${ername}"></property><property name="password" value="${jdbc.password}"></property></bean><!-- 2. 创建sqlSessionFactory ==> mybatis核⼼配置⽂件的读取 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis-config.xml"></property><property name="mapperLocations" value="classpath:mapper/*.xml"/></bean><!-- 3.扫描mybatis的mapper接⼝路径 --><!-- 这个bean可以把我们的mapper接⼝直接扫描到. 直接把接⼝扫描完. 注册到spring的bean中 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property><!-- 会在提供的base包下寻找interface .根据interface的名字. 将⾸字母⼩写⽣成这个接⼝所对应的bean --><property name="basePackage" value="com.example.mapper"></property></bean><!-- 4.事务处理 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><tx:advice id="txManager" transaction-manager="transactionManager"><tx:attributes><tx:method name="get*" read-only="true"/><tx:method name="query*" read-only="true"/><tx:method name="search*" read-only="true"/><tx:method name="select*" read-only="true"/><tx:method name="find*" read-only="true"/><tx:method name="*" isolation="DEFAULT" propagation="REQUIRED"/></tx:attributes></tx:advice><aop:config><aop:pointcut expression="execution(* com.example.service.*.*.*(..))" id="cut"/><aop:advisor advice-ref="txManager" pointcut-ref="cut"/></aop:config><!-- ⽤注解处理事务<tx:annotation-driven transaction-manager="transactionManager"/>--></beans>ssm_project/src/main/resources/applicationContext-mvc.xml<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:mvc="/schema/mvc"xmlns:context="/schema/context"xmlns:p="/schema/p"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-4.3.xsd/schema/mvc/schema/mvc/spring-mvc-4.3.xsd/schema/context/schema/context/spring-context-4.3.xsd"><!-- 开启注解. 扫描 --><context:annotation-config></context:annotation-config><context:component-scan base-package="com.example.controller"></context:component-scan><!-- 过滤掉js, jpg, png, css, 静态⽂件 --><mvc:default-servlet-handler/><!-- 开启mvc --><mvc:annotation-driven /><!-- 地址解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean></beans>ssm_project/src/main/resources/mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- mybatis的核⼼配置 --><!-- mybatis的运⾏配置 --><settings><!-- 开启⼆级缓存 --><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><!-- 打印查询语句 --><setting name="logImpl" value="STDOUT_LOGGING"/><!-- 如果这个属性是true,那么你的类中, 任何⼀个⽅法被执⾏.都要去加载属性,这个时候懒加载是没有效果的.--><setting name="aggressiveLazyLoading" value="false"/></settings></configuration>ssm_project/src/main/resources/db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm_example?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true ername=rootjdbc.password=123ssm_project/src/main/resources/log4j.properties# Global logging configurationlog4j.rootLogger=DEBUG,Console# Console output...log4j.appender.Console=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d [%t] %-5p [%c] - %m%n.apache=INFOssm_project/src/main/webapp/WEB-INF/web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!-- 读取除了mvc外的配置⽂件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:/applicationContext.xml</param-value></context-param><!-- 整个web容器的动向由这个监听器进⾏监听. 这个监听器可以监听项⽬的启动. 从⽽直接加载核⼼配置⽂件 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><filter-name>characterEncodingFilter</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><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 给出spring的路径 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><!-- 当web容器加载的时候, 初始化spring --></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern><!-- 所有 --></servlet-mapping><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener></web-app>ssm_project/pom.xml<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>ssm_project</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.1</version><scope>provided</scope></dependency><!--实现slf4j接⼝并整合--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.1</version><scope>provided</scope></dependency><!--druid==>阿⾥巴巴数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.25</version></dependency><!--2.dao框架:MyBatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><!--mybatis⾃⾝实现的spring整合依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency><!--3.Servlet web相关依赖--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.4</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--4:spring依赖--><!--1)spring核⼼依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.14.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.14.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.14.RELEASE</version></dependency><!--2)spring dao层依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.14.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.14.RELEASE</version></dependency><!--3)springweb相关依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.14.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.14.RELEASE</version></dependency><!--4)spring test相关依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.14.RELEASE</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version><scope>runtime</scope></dependency><!--Aop要导⼊的包--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version></dependency><!-- https:///artifact/org.json/json --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20170516</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>ssm_project/src/main/java/com/example/pojo/User.java package com.example.pojo;public class User {private String userId;//⽤户idprivate String cardType;//证件类型private String cardNo;//证件号码private String userName;//⽤户姓名private String userSex;//⽤户性别private String userAge;//⽤户年龄private String userRole;//⽤户⾓⾊public String getUserId() {return userId;}public void setUserId(String userId) {erId = userId;}public String getCardType() {return cardType;}public void setCardType(String cardType) {this.cardType = cardType;}public String getCardNo() {return cardNo;}public void setCardNo(String cardNo) {this.cardNo = cardNo;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getUserSex() {return userSex;}public void setUserSex(String userSex) {erSex = userSex;}public String getUserAge() {return userAge;}public void setUserAge(String userAge) {erAge = userAge;}public String getUserRole() {return userRole;}public void setUserRole(String userRole) {erRole = userRole;}}ssm_project/src/main/resources/mapper/UserMapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd" > <mapper namespace="erMapper" ><resultMap id="BaseResultMap" type="er" ><id property="userId" column="user_id" jdbcType="VARCHAR" /><!--⽤户id--><result property="cardType" column="card_type" jdbcType="VARCHAR" /><!--证件类型--><result property="cardNo" column="card_no" jdbcType="VARCHAR" /><!--证件号码--><result property="userName" column="user_name" jdbcType="VARCHAR" /><!--⽤户姓名--><result property="userSex" column="user_sex" jdbcType="VARCHAR" /><!--⽤户性别--><result property="userAge" column="user_age" jdbcType="VARCHAR" /><!--⽤户年龄--><result property="userRole" column="user_role" jdbcType="VARCHAR" /><!--⽤户⾓⾊--></resultMap><sql id="Base_Column_List" >user_id, card_type, card_no, user_name, user_sex, user_age, user_role</sql><!--分页查询⽤户--><select id="queryUserPage" resultMap="BaseResultMap" parameterType="ng.Integer">select<include refid="Base_Column_List" />from userorder by user_id desclimit #{startRows,jdbcType=INTEGER},5</select><!--分页查询⽤户--><select id="selectUserPage" resultMap="BaseResultMap">select<include refid="Base_Column_List" />from user<where><if test="userName != null and userName !=''">and user_name like concat('%', #{userName}, '%')</if><if test="userSex != null and userSex !=''">and user_sex = #{userSex}</if></where>order by user_id desclimit #{startRows,jdbcType=INTEGER},5</select><!--查询⽤户个数--><select id="getRowCount" resultType="ng.Integer">select count(*) from user<where><if test="userName != null and userName !=''">and user_name like concat('%', #{userName}, '%')</if><if test="userSex != null and userSex !=''">and user_sex = #{userSex}</if></where></select><!--添加⽤户信息--><insert id="createUser" parameterType="er" >insert into User(<include refid="Base_Column_List" />)values(#{userId}, #{cardType}, #{cardNo}, #{userName}, #{userSex}, #{userAge}, #{userRole})</insert><!--根据 user_id 删除⽤户--><delete id="deleteUserById" parameterType="String" >delete from userwhere user_id = #{userId,jdbcType=VARCHAR}</delete><!--根据 user_id 批量删除⽤户--><delete id="deleteUserByIdList" parameterType="java.util.List">delete from user where user_id in <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">#{item,jdbcType=VARCHAR}</foreach> </delete><!--根据 user_id 更新⽤户信息--><update id="updateUserById" parameterType="er" >update user<set ><if test="cardNo != null" >card_no = #{cardNo,jdbcType=VARCHAR},</if><if test="cardType != null" >card_type = #{cardType,jdbcType=VARCHAR},</if><if test="userName != null" >user_name = #{userName,jdbcType=VARCHAR},</if><if test="userSex != null" >user_sex = #{userSex,jdbcType=VARCHAR},</if><if test="userAge != null" >user_age = #{userAge,jdbcType=VARCHAR},</if><if test="userRole != null" >user_role = #{userRole,jdbcType=VARCHAR}</if></set>where 1 = 1and user_id = #{userId,jdbcType=VARCHAR}</update></mapper>ssm_project/src/main/java/com/example/mapper/UserMapper.javapackage com.example.mapper;import java.util.List;import er;import org.apache.ibatis.annotations.Param;public interface UserMapper {/*** 分页查询 User* @param startRows 起始页* @return List<User>*/List<User> queryUserPage(Integer startRows);/*** 分页查询 User 带条件* @param userName* @param userSex* @param startRows* @return*/List<User> selectUserPage(@Param("userName")String userName, @Param("userSex")String userSex, @Param("startRows")Integer startRows);/*** 查询 User 个数* @param userName* @param userSex* @return*/Integer getRowCount(@Param("userName")String userName, @Param("userSex")String userSex);/*** 添加 User* @param user* @return 返回码*/Integer createUser(User user);/*** 根据 userId 删除⽤户* @return 返回码*/Integer deleteUserById(String userId);/*** 根据 userId 批量删除⽤户* @param userIds* @return*/Integer deleteUserByIdList(@Param("list") List userIds);/*** 根据 userId 更新⽤户* @return 返回码*/Integer updateUserById(User user);}ssm_project/src/main/java/com/example/service/UserService.javapackage com.example.service;import java.util.List;import er;import org.apache.ibatis.annotations.Param;public interface UserService {/*** 分页查询 User* @param startRows 起始页* @return List<User>*/List<User> queryUserPage(Integer startRows);/*** 分页查询 User 带条件* @param userName* @param userSex* @param startRows* @return*/List<User> selectUserPage(@Param("userName")String userName, @Param("userSex")String userSex, @Param("startRows")Integer startRows); /*** 查询 User 个数* @param userName* @param userSex* @return*/Integer getRowCount(@Param("userName")String userName, @Param("userSex")String userSex);/*** 添加 User* @param user* @return 返回码*/Integer createUser(User user);/*** 根据 userId 删除⽤户* @return 返回码*/Integer deleteUserById(String userId);/*** 根据 userId 批量删除⽤户* @param userIds* @return*/Integer deleteUserByIdList(@Param("list") List userIds);/*** 根据 userId 更新⽤户* @return 返回码*/Integer updateUserById(User user);}ssm_project/src/main/java/com/example/service/impl/UserServiceImpl.javapackage com.example.service.impl;import java.util.List;import er;import org.apache.ibatis.annotations.Param;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import erMapper;import erService;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> queryUserPage(Integer startRows) {return userMapper.queryUserPage(startRows);}@Overridepublic List<User> selectUserPage(String userName, String userSex, Integer startRows) {return userMapper.selectUserPage(userName, userSex, startRows);}@Overridepublic Integer getRowCount(String userName, String userSex) {return userMapper.getRowCount(userName, userSex);}@Overridepublic Integer createUser(User user) {return userMapper.createUser(user);}@Overridepublic Integer deleteUserById(String userId) {return userMapper.deleteUserById(userId);}@Overridepublic Integer deleteUserByIdList(@Param("list") List userIds) {return userMapper.deleteUserByIdList(userIds);}@Overridepublic Integer updateUserById(User user) {return userMapper.updateUserById(user);}}ssm_project/src/main/java/com/example/controller/UserController.javapackage com.example.controller;import java.util.ArrayList;import java.util.List;import java.util.Random;import er;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import erService;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("user")public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/queryUserPage")@ResponseBodypublic List<User> queryUserPage(Integer page) {int pageNow = page == null ? 1 : page;int pageSize = 5;int startRows = pageSize*(pageNow-1);return userService.queryUserPage(startRows);}@RequestMapping("/selectUserPage")@ResponseBodypublic List<User> selectUserPage(String userName, String userSex, Integer page) {int pageNow = page == null ? 1 : page;int pageSize = 5;int startRows = pageSize*(pageNow-1);return userService.selectUserPage(userName, userSex, startRows);}@RequestMapping("/getRowCount")@ResponseBodypublic Integer getRowCount(String userName, String userSex) {return userService.getRowCount(userName, userSex);}@RequestMapping("/createUser")@ResponseBodypublic Integer createUser(User user) {Random random = new Random();Integer number = random.nextInt(9000) + 1000;user.setUserId(System.currentTimeMillis() + String.valueOf(number));return userService.createUser(user);}@RequestMapping("/deleteUserById")@ResponseBodypublic Integer deleteUserById(String userId) {return userService.deleteUserById(userId);}@RequestMapping(value = "/deleteUserByIdList")@ResponseBodypublic Integer deleteUserByIdList(String userIdList) {String userIdListSub = userIdList.substring(0, userIdList.length()-1);// String[] userIds = userIdList.split(",");List userIds = new ArrayList();for (String userIdStr: userIdListSub.split(",")){userIds.add(userIdStr.trim());}return userService.deleteUserByIdList(userIds);}@RequestMapping("/updateUserById")@ResponseBodypublic Integer updateUserById(User user) {return userService.updateUserById(user);}}SQL-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',`card_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`card_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `user_sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`user_age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`user_role` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`user_id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ----------------------------INSERT INTO `user` VALUES ('15968162087363060', '⾝份证', '4264465547656467', '过突然', '男', '30', '办事⼈员和有关⼈员');INSERT INTO `user` VALUES ('15968162346981977', '护照', '432532654364654', '规划图', '男', '29', '不便分类的其他从业⼈员');INSERT INTO `user` VALUES ('15968162893439470', '⾝份证', '4354324534532', '具体办1', '男', '31', '农、林、牧、渔、⽔利业⽣产⼈员');INSERT INTO `user` VALUES ('15968163245457143', '⾝份证', '43564546576687', '回各家', '男', '34', '未知');INSERT INTO `user` VALUES ('15968163514764733', '军官证', '7657868', '缺⼝v4', '⼥', '23', '不便分类的其他从业⼈员');INSERT INTO `user` VALUES ('15968165113694372', '台湾往来⼤陆通⾏证', '343214321412433214', '遗体ioy', '⼥', '48', '⽣产、运输设备操作⼈员及有关⼈员'); INSERT INTO `user` VALUES ('15968165371931786', '港澳居民通⾏证', '65765887989090909', '垂直发射的', '⼥', '35', '不便分类的其他从业⼈员');INSERT INTO `user` VALUES ('15968941217553030', '⾝份证', '34354657665768768', '撒撒到', '男', '22', '军⼈');INSERT INTO `user` VALUES ('15968943937844616', '⾝份证', '4454534436565756', '出⼿⼤', '⼥', '31', '不便分类的其他从业⼈员');INSERT INTO `user` VALUES ('15968944123869023', '护照', '43225465457657', 'VCD法国', '⼥', '39', '农、林、牧、渔、⽔利业⽣产⼈员');INSERT INTO `user` VALUES ('15968953962316864', '⾝份证', '342354325', '房东是个⼤帅哥', '⼥', '33', '商业、服务业⼈员');INSERT INTO `user` VALUES ('15968954638794962', '⾝份证', '343343554654', '撒撒旦', '⼥', '29', '⽣产、运输设备操作⼈员及有关⼈员');SET FOREIGN_KEY_CHECKS = 1;后台到这⾥就写完了,结构如下:前台开发环境搭建前台代码vue_project/src/App.vue<template><el-row type="flex" justify="center"><el-col :xs="24" :sm="22" :md="20" :lg="20" :xl="18"><router-view/></el-col></el-row></template><script>export default {name: 'App'}</script><style>#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}.el-table th.gutter {display: table-cell !important;}</style>vue_project/src/main.js// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue';import App from './App';import router from './router';import ElementUI from 'element-ui';import 'element-ui/lib/theme-chalk/index.css';import qs from 'qs';import axios from "axios";Vue.config.productionTip = false;e(ElementUI);Vue.prototype.axios = axios;Vue.prototype.qs = qs;/* eslint-disable no-new */new Vue({el: '#app',router,components: { App },template: '<App/>'})vue_project/src/components/UserHome.vue<template><div><el-form :inline="true" class="demo-form-inline"><el-form-item><el-inputv-model="search1"size="mini"placeholder="输⼊姓名查询" v-on:input="handleSearch()"></el-input></el-form-item><el-form-item><el-select size="mini" v-model="search2" v-on:change="handleSearch()"><el-option label="请选择性别" value=""></el-option><el-option label="男" value="男"></el-option><el-option label="⼥" value="⼥"></el-option></el-select></el-form-item><el-form-item><el-buttonclass="el-icon-circle-plus-outline"type="text"@click="dialogAdd = true">添加。
SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6编号:SSI-SMVC3-S3-I3版本:V1.0级别:公开编写时间:2016-02-17目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建SpringMVC (2)2.1 搭建所需jar包 (2)2.2 其他依赖包 (3)2.3 搭建步骤 (4)2.3.1 创建项目 (4)2.3.2 导入jar包 (6)2.3.3 配置web.xml (7)2.3.4 配置spring-servlet.xml (9)2.3.5 配置applicationContext.xml (10)2.3.6 配置log4j.properties (10)3 整合mybatis (11)3.1 整合所需jar包 (11)3.2 其他依赖包 (11)3.3 整合步骤 (11)3.3.1 导入jar包 (11)3.3.2 配置config.properties (12)3.3.3 配置spring-dataSource.xml (12)3.3.4 配置applicationContext.xml (15)3.3.5 配置mybatis-config.xml (16)3.3.6 创建实体model (17)3.3.7 创建实例化dao (19)3.3.8 创建业务服务service (21)3.3.9 创建控制层controller (23)3.3.10 页面代码 (28)3.3.11 启动项目 (37)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。
1.2 范围本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。
SSM+Maven框架搭建及报错错误解决方案

搭建SSM+Maven环境一、配置环境1、配置jdk:下载jdk,一路next到底,配置环境变量,新建变量名:JAVA_HOME 变量值:E:\Java\jdk1.6.0_43(这是我的jdk安装路径)编辑变量名:Path 在后面加上:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin新建变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar设置完成后测试,win+R——》cmd——》打开命令窗口——》输入java 出现下面则说明安装成功。
2、配置maven解压maven到任意路径——》配置环境变量——》在Path中添加D:\apache-maven-3.3.9\bin;测试maven环境,出现下面内容说明配置成功3、Maven数据仓库的配置MAVEN中还有一个重要的配置就是数据仓库的路径配置,我们找到MAVEN的安装路径,进入conf-->打开settings.xml,找到localRepository标签,此时是被注释掉的,我们解除注释,然后配置一个路径,例如:d:/server/MavenRepository/maven_jar,这样以后MAVEN管理下载的jar包都会在这个路径下。
当然我们需要建这样一个目录结构,然后还要讲settings.xml复制一份到d:/server/MavenRepository下,这个在与MyEclipse集成时会用到。
此时,点击File-->new-->other-->Eclipse-->Maven-->Maven Project,如果可以看到这些,证明配置成功,已经可以建立Maven项目了。
二、创建maven项目设置项目编码设置项目运行jdk环境三、自动下载pom.xml中配置的jar包工程的根目录执行mvn eclipse:eclipse 然后刷新workspace,新依赖的jar包就会加到该工程的构建路径中了。
ssm框架流程

ssm框架流程SSM框架(Spring+SpringMVC+MyBatis)是目前非常流行的Java Web开发框架,它结合了Spring框架、SpringMVC框架和MyBatis框架的优势,使得开发者可以更加高效地进行Web应用开发。
SSM框架的流程分为前端请求处理、后端分发处理和数据库操作三个步骤。
第一步是前端请求处理,当用户在浏览器中输入URL或者点击页面的链接时,请求会发送到服务器端。
SpringMVC框架的核心是DispatcherServlet,它是前端控制器,负责接收所有请求,并进行第一步的处理。
DispatcherServlet会根据请求的URL找到对应的处理器(Controller),并将请求数据封装成一个包含请求信息的对象。
Controller中的处理方法会处理该请求,并将处理结果封装成一个Model对象,并返回视图名。
第二步是后端分发处理,DispatcherServlet会将Model对象传递给ViewResolver(视图解析器),ViewResolver根据视图名找到对应的视图模板(JSP、HTML等),并将Model对象中的数据填充到视图模板中。
最终,服务器会将填充好数据的视图返回给用户的浏览器。
第三步是数据库操作,MyBatis框架是SSM框架中负责数据库操作的核心组件。
在Controller中,可以通过@Autowired注解注入MyBatis的Mapper接口,并调用接口中定义的方法来实现对数据库的操作。
Mapper接口中定义了增删改查等操作数据库的方法,而对应的SQL语句则是在MyBatis的XML文件中配置的。
MyBatis会读取XML文件,并根据接口方法的名称和参数类型来执行对应的SQL语句,最终将结果返回给Controller。
在整个流程中,Spring框架扮演了框架的骨架角色,它负责依赖注入、事务管理等底层功能。
SpringMVC框架实现了前端请求处理和后端分发处理的功能,它通过DispatcherServlet来接收和分发请求,并将处理结果返回给浏览器。
ssm整合框架遇到的问题(会更新)

ssm整合框架遇到的问题(会更新)简介 我的项⽬是在eclipse中编译运⾏的,已经使⽤maven搭建好了项⽬整体结构,使⽤ssm框架进⾏项⽬整合(项⽬不是固定的),此次博客主要是把在调试框架过程中遇到的问题⼀⼀展现出来,当然这只是开始,后续会慢慢更新。
第⼀个问题 报错代码信息七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Server version: Apache Tomcat/8.5.28七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Server built: Feb 6 2018 23:10:25 UTC七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Server number: 8.5.28.0七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: OS Name: Windows 7七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: OS Version: 6.1七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Architecture: amd64七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Java Home: C:\Program Files\Java\jre1.8.0_102七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: JVM Version: 1.8.0_102-b14七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: JVM Vendor: Oracle Corporation七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: CATALINA_BASE: D:\eclipse2\eclipse fold\.metadata\.plugins\org.eclipse.wst.server.core\tmp0七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: CATALINA_HOME: G:\Tomcat\Tmcat8.5七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Command line argument: -Dcatalina.base=D:\eclipse2\eclipse fold\.metadata\.plugins\org.eclipse.wst.server.core\tmp0七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Command line argument: -Dcatalina.home=G:\Tomcat\Tmcat8.5七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Command line argument: -Dwtp.deploy=D:\eclipse2\eclipse fold\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Command line argument: -Djava.endorsed.dirs=G:\Tomcat\Tmcat8.5\endorsed七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.VersionLoggerListener log信息: Command line argument: -Dfile.encoding=GBK七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_102\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C 七⽉ 19, 2018 10:21:50 下午 org.apache.coyote.AbstractProtocol init信息: Initializing ProtocolHandler ["http-nio-8080"]七⽉ 19, 2018 10:21:50 下午 .NioSelectorPool getSharedSelector信息: Using a shared selector for servlet write/read七⽉ 19, 2018 10:21:50 下午 org.apache.coyote.AbstractProtocol init信息: Initializing ProtocolHandler ["ajp-nio-8009"]七⽉ 19, 2018 10:21:50 下午 .NioSelectorPool getSharedSelector信息: Using a shared selector for servlet write/read七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.startup.Catalina load信息: Initialization processed in 1047 ms七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.core.StandardService startInternal信息: Starting service [Catalina]七⽉ 19, 2018 10:21:50 下午 org.apache.catalina.core.StandardEngine startInternal信息: Starting Servlet Engine: Apache Tomcat/8.5.28七⽉ 19, 2018 10:21:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor信息: Deploying configuration descriptor [D:\eclipse2\eclipse fold\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\ssm_template01.xml]七⽉ 19, 2018 10:21:51 下午 org.apache.catalina.startup.SetContextPropertiesRule begin警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ssm_template01' did not find a matching property.七⽉ 19, 2018 10:21:53 下午 org.apache.jasper.servlet.TldScanner scanJars信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve st 七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.ApplicationContext log信息: No Spring WebApplicationInitializer types detected on classpath七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.ApplicationContext log信息: Initializing Spring root WebApplicationContext[org.springframework.web.context.ContextLoader]Root WebApplicationContext: initialization started[org.springframework.web.context.support.StandardServletEnvironment]Adding PropertySource 'servletConfigInitParams' with lowest search precedence[org.springframework.web.context.support.StandardServletEnvironment]Adding PropertySource 'servletContextInitParams' with lowest search precedence[org.springframework.web.context.support.StandardServletEnvironment]Adding PropertySource 'jndiProperties' with lowest search precedence[org.springframework.web.context.support.StandardServletEnvironment]Adding PropertySource 'systemProperties' with lowest search precedence[org.springframework.web.context.support.StandardServletEnvironment]Adding PropertySource 'systemEnvironment' with lowest search precedence[org.springframework.web.context.support.StandardServletEnvironment]Initialized StandardServletEnvironment with PropertySources [StubPropertySource@307187458 {name='servletConfigInitParams', properties=ng.Object@5a08d95f}, S , java.vm.specification.vendor=Oracle Corporation, java.naming.factory.url.pkgs=org.apache.naming, user.variant=, =Windows 7, sun.jnu.encoding=GBK, java.library.path=C:\Program Files\Java\jre1.8.0_102\bin;C:\Windows\Sun\Java\bi [org.springframework.web.context.support.StandardServletEnvironment]Replacing PropertySource 'servletContextInitParams' with 'servletContextInitParams'[org.springframework.web.context.support.XmlWebApplicationContext]Refreshing Root WebApplicationContext: startup date [Thu Jul 19 22:21:53 CST 2018]; root of context hierarchy[org.springframework.core.env.StandardEnvironment]Adding PropertySource 'systemProperties' with lowest search precedence[org.springframework.core.env.StandardEnvironment]Adding PropertySource 'systemEnvironment' with lowest search precedence[org.springframework.core.env.StandardEnvironment]Initialized StandardEnvironment with PropertySources [MapPropertySource@828827675 {name='systemProperties', properties={=Java(TM) SE Runtime Environment, sun.bo , java.vm.specification.vendor=Oracle Corporation, java.naming.factory.url.pkgs=org.apache.naming, user.variant=, =Windows 7, sun.jnu.encoding=GBK, java.library.path=C:\Program Files\Java\jre1.8.0_102\bin;C:\Windows\Sun\Java\bi 七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.StandardContext listenerStart严重: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open Servle at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:194)at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133)at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4753)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)at java.util.concurrent.FutureTask.run(Unknown Source)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at ng.Thread.run(Unknown Source)Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:329)... 25 more七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.StandardContext startInternal严重: One or more listeners failed to start. Full details will be found in the appropriate container log file七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.StandardContext startInternal严重: Context [/ssm_template01] startup failed due to previous errors七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.ApplicationContext log信息: Closing Spring root WebApplicationContext七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.core.StandardContext listenerStop严重: Exception sending context destroyed event to listener instance of class [org.springframework.web.context.ContextLoaderListener]ng.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContextat org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:176)at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1041)at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1017)at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:967)at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:525)at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:112)at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4800)at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5437)at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)at java.util.concurrent.FutureTask.run(Unknown Source)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at ng.Thread.run(Unknown Source)七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.startup.HostConfig deployDescriptor信息: Deployment of configuration descriptor [D:\eclipse2\eclipse fold\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\ssm_template01.xml] has finished in [2,708] ms七⽉ 19, 2018 10:21:53 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-nio-8080"]七⽉ 19, 2018 10:21:53 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["ajp-nio-8009"]七⽉ 19, 2018 10:21:53 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 3096 ms[org.springframework.beans.factory.xml.XmlBeanDefinitionReader]Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml][org.springframework.web.context.ContextLoader]Context initialization failedorg.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open Servle at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:194)at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133)at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4753)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)at java.util.concurrent.FutureTask.run(Unknown Source)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at ng.Thread.run(Unknown Source)Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:329)... 25 more[org.springframework.web.context.support.XmlWebApplicationContext]Closing Root WebApplicationContext: startup date [Thu Jul 19 22:21:53 CST 2018]; root of context hierarchyView Code 我从中截取了部分错误 根据错误提⽰,我来到applicationContext.xml配置⽂件中,发现好像并没有什么错误,弄了好久,才发现⼀个不起眼的⼩错误,先贴上代码 发现前: 发现后: 没错,就是⼤⼩写错误!哎,以前从没发现过这个错误,⼀直以为是取的⼀个名字⽽已,很受伤...... 第⼆个问题 错误关键信息 纠结了好久,才解决 原因,依赖关系不正确 将 <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.10.Final</version> </dependency> 改为 <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.0.CR3</version> </dependency> 问题解决,要是有类似的问题的朋友希望可以帮助你们!第三个问题 错误代码信息ng.Exception: No tests found matching [{ExactMatcher:fDisplayName=testfindUserById], {ExactMatcher:fDisplayName=testfindUserById(com.lxc.ssm.test.testSpringAndMybatis)], {LeadingIdentifierMatcher:fClassName=com.lxc.ssm.test at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)View Code 出现以上错误从两点查找,这个⼀般很少出现错误 ⼀. 查看Test的函数有没有加static,加了会出错 ⼆. 查看Test的函数有没有返回值,有会出错,Test函数,据我⽬前观察返回类型都是void 另外看见⽹上有⼈说是spring-test版本问题,这个我没遇到过,就不知道了,如果上⾯两种检查过了,还没找到问题所在,可能就是spring-test版本问题了 就我的报错信息结合代码,发现是犯了第⼀个错误,在⽅法上添加了static 这⾥我在说⼀下,因为我的项⽬是⽤maven搭建的结构,⽽且我的spring的jar包是兼容的,所以不存在spring-test jar错误的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SSM框架的搭建一、新建javaweb项目,并建好相应的包结构
二、添加项目jar到lib目录下
三、在config包中新建配置文件
四、配置web.xml,内容如下:
五、在mysql中创建数据库test,并新建表user_info,字段如下
向user_info中添加几条数据,如下
六、用mybatis生成工具,生成实体类、映射文件实体类UserInfo.java代码如下
注意:UserInfoMapper.java和UserInfoMapper.xml的文件名需要一样,并放入包com.hyg.im.mapper中,UserInfo.java放入包com.hyg.im.model中
七、添加业务层方法,查询所有用户信息
接口UserInfoService.java代码如下
接口实现类UserInfoServiceImpl.java代码如下
八、添加Dao层方法
UserInfoMapper.java中同样加入findUserInfoList()接口代码如下
九、添加controller层代码
十、添加view视图层代码
十一、发布项目到Tomcat
项目右键/Run As/Run On Server,将项目发布到Tomcat 十二、浏览器访问,查看效果
访问地址:http://localhost:8080/ssm/findUserInfoList
到此,springmvc+spring+mybatis框架搭建成功。
项目最终的目录结构如下图:。