• 基础SSM框架搭建



    完整的框架

    在这里插入图片描述

    • config:放置配置相关的信息类

    • constant:放置常量接口类

    • controller:放置前端控制器,主要是提供出去的跟前端交互的接口(有的人也习惯叫web/action层等)

    • dao:放置数据访问层(里面的都是操作数据库相关的类)

    • entity:实体类,就是和数据库表一一对应的类

    • service:数据服务层,主要写各种实现功能的接口

    • service.impl:数据服务的实现类,一般service里是interface名称和结构,在service.impl中implements - service中的interface,内部有所有具体的实现内容

    • utils:放置各种公共的方法和类

    一、注入依赖

    		 <dependency>
          <groupId>junitgroupId>
          <artifactId>junitartifactId>
          <version>3.8.1version>
          <scope>testscope>
        dependency>
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>javax.servlet-apiartifactId>
          <version>4.0.1version>
          <scope>providedscope>
        dependency>
        
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-webmvcartifactId>
          <version>4.3.23.RELEASEversion>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-jdbcartifactId>
          <version>4.3.23.RELEASEversion>
        dependency>
    
        
        <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <version>8.0.26version>
        dependency>
    
        
        
        <dependency>
          <groupId>com.mchangegroupId>
          <artifactId>c3p0artifactId>
          <version>0.9.5.5version>
        dependency>
    
        
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>jstlartifactId>
          <version>1.2version>
        dependency>
    
        
        <dependency>
          <groupId>com.alibabagroupId>
          <artifactId>fastjsonartifactId>
          <version>1.2.47version>
        dependency>
        
        <dependency>
          <groupId>log4jgroupId>
          <artifactId>log4jartifactId>
          <version>1.2.17version>
        dependency>
    
        
        
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatisartifactId>
          <version>3.5.7version>
        dependency>
    
    
    
        
        
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatis-springartifactId>
          <version>2.0.6version>
        dependency>
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    二、配置web.xml

    
    <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>spring-springMVC20221121display-name>
    
      
      <welcome-file-list>
        <welcome-file>login.jspwelcome-file>
      welcome-file-list>
    
      
      <filter>
        <filter-name>characterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
          <param-name>encodingparam-name>
          <param-value>UTF-8param-value>
        init-param>
      filter>
      <filter-mapping>
        <filter-name>characterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
      filter-mapping>
    
      
      <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:applicationContext.xmlparam-value>
      context-param>
    
      
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
      listener>
    
      
      <servlet>
        <servlet-name>springmvcservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
          <param-name>contextConfigLocationparam-name>
          <param-value>classpath:springmvc-common.xmlparam-value>
        init-param>
      servlet>
    
      <servlet-mapping>
        <servlet-name>springmvcservlet-name>
        <url-pattern>/url-pattern>
      servlet-mapping>
    
    
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    三、springmvc-common.xml配置

    
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context-4.3.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop-4.3.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
            ">
    	
    	<context:component-scan
    		base-package="com.wk">context:component-scan>
    
    
    	<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
    		<property name="converters">
    			<set>
    				<bean class="com.wk.convert.MyConverter">bean>
    			set>
    		property>
    	bean>
    
    	
    	<mvc:annotation-driven conversion-service="conversionServiceFactoryBean">
    
    	mvc:annotation-driven>
    
    	
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		
    		<property name="prefix" value="/">property>
    		
    		<property name="suffix" value=".jsp">property>
    	bean>
    
    	
    
    
    
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    四、mybatis-config.xml配置

    
    DOCTYPE configuration
     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     "https://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    	<mappers>
    		
    		
    		<mapper resource="com/wk/dao/UserDao.xml" />
    	mappers>
    configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    五、log4j.properties日志文件配置

    #LOG_DIR:/usr/local/.../logs\
    LOG_DIR = E:\\logs
    #Level:ERROR,WARN,INFO,DEBUG
    log4j.rootLogger = INFO,Console,File
    log4j.appender.Console = org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Threshold = DEBUG
    log4j.appender.Console.ImmediateFlush = true
    log4j.appender.Console.Target = System.out
    log4j.appender.Console.layout = org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.File.Threshold = INFO
    log4j.appender.File.ImmediateFlush = true
    log4j.appender.File.Append = true
    log4j.appender.File.DatePattern = '_'yyyy-MM-dd'.log'
    log4j.appender.File.encoding=UTF-8
    log4j.appender.File.File = ${LOG_DIR}/info
    log4j.appender.File.layout = org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern = [%-5p][%d{ISO8601}]%m%n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    六、jdbc.properties连接信息

    根据个人连接数据库信息更改

    a=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
    b=root
    c=123
    d=com.mysql.cj.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4

    七、applicationContext.xml配置

    
    <beans xmlns="http://www.springframework.org/schema/beans"
    	   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:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context-4.3.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop-4.3.xsd
            http://www.springframework.org/schema/tx
            https://www.springframework.org/schema/tx/spring-tx-4.3.xsd
            "
           >
    		
    		<context:component-scan base-package="com.wk">context:component-scan>
    
    		
    		
    		
    		
    		<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		
    			<property name="locations">
    				<list>
    					<value>classpath:jdbc.propertiesvalue>
    				list>
    			
    			
    			property>
    		bean>
    		
    		
    		
    		<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    			
    			<property name="user" value="${b}">property>
    			
    			<property name="password" value="${c}">property>
    			
    			<property name="driverClass" value="${d}">property>
    			
    			<property name="jdbcUrl" value="${a}">property>
    		
    		bean>
    		
    		
    		<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    			<property name="dataSource" ref="dataSource">property>
    			<property name="configLocation" value="classpath:mybatis-config.xml">property>
    		
    		bean>
    		
    		
    		<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    			<property name="basePackage" value="com.wk.dao">property>
    			<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean">property>
    		bean>
    
    		
    		<bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    			<property name="dataSource" ref="dataSource">property>
    		bean>
    		<tx:annotation-driven transaction-manager="tx"/>				
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    八、UserDao.xml案例

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    
    
    <mapper namespace="com.wk.dao.UserDao">
    
        <insert id="addUser" parameterType="com.wk.entity.User">
            insert into tb_user (uname,upwd,email,phone,addr,birth)
            values(#{uname},#{upwd},#{email},#{phone},#{addr},#{birth})
        insert>
    
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    九、UserService接口

    public interface UserService {
        void insertUser(User user);
    }
    
    • 1
    • 2
    • 3

    十、UserServiceImpl实现

    @Service
    public class UserServiceImpl implements UserService {
    	
    	@Autowired
    	private UserDao userDao;
    	
    	@Override
    	public void insertUser(User user) {
    		userDao.addUser(user);
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    十一、MyConverter

    public class MyConverter implements Converter<String, Date>{
    
    	@Override
    	public Date convert(String source) {
    		
    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    		
    		try {
    			Date d=sdf.parse(source);
    			return d;
    		} catch (ParseException e) {
    			
    			e.printStackTrace();
    			return null;
    		}
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    十二、UserController

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
    	@Autowired
    	private UserService userService;
    	
    	@RequestMapping("/reg")
    	public String reg(User user) {
    		
    		userService.insertUser(user);
    		
    		return "login";
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    配置公网和私网用户通过非公网口的IP地址访问内部服务器和Internet示例
    Error:KafkaStorageException打开的文件过多
    《ANCHOR:区分 “湖仓一体” 和 “湖仓分体” 的锚》
    学习ASP.NET Core Blazor编程系列五——列表页面
    Java主流分布式解决方案多场景设计与实战
    图论01-【无权无向】-图的基本表示-邻接矩阵/邻接表
    vscode编写markdown
    14数据结构与算法刷题之【深搜&宽搜递归&分治&剪枝回溯】篇
    Kotlin语法学习(一)
    【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能
  • 原文地址:https://blog.csdn.net/qq_54351538/article/details/127982083