热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

spring项目中target项目是什么‘’_手把手教你搭建一个SSM项目

SSM(SpringSpringMVCMyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的




SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。



下面手把手教你使用IDEA搭建一个SSM项目:


新建project


File—》新建project,使用maven作为包管理工具,因为我这里使用了父项目,所以我是新建一个module,都一样的。



025437aea97b852a47fc8791caef96f9.png


设置名称:



8653256b9a14c684f7c58d104663254f.png


我们打开发现,项目没有java目录,没关系我们可以自己创建,打开文件结构(快捷键 Ctrl+Shift+Alt+S)



b859f4a35f22b8b228037172e4d45570.png


然后把这个java文件夹设置为source目录:



8187af7ac84ab3cfd08b744124e7f1bc.png


如果application.xml表头的xml报错,可以把链接复制过来:


该图片来源见水印



425dc913f1cb96e905ab8abb1c5fc821.png

错误例子



e278622b12808a2f69978c81bd58540d.png


1  引入spring核心组件


修改pom.xml , 注意标签


    
        1.8maven.compiler.source>
        1.8maven.compiler.target>
        UTF-8project.build.sourceEncoding>
        UTF-8project.reporting.outputEncoding>
        
        4.3.5.RELEASEspring.version>
        
        3.4.1mybatis.version>
    properties>

    
          
          
              
              
              
              
          
          
          
              javax.servletgroupId>
              jstlartifactId>
              1.2version>
          dependency>

        
        
            org.mybatisgroupId>
            mybatisartifactId>
            ${mybatis.version}version>
        dependency>
        
            org.mybatisgroupId>
            mybatis-springartifactId>
            
            1.3.3version>
        dependency>
        


        
        
            org.springframeworkgroupId>
            spring-webmvcartifactId>
            ${spring.version}version>
        dependency>
        
        
            org.springframeworkgroupId>
            spring-coreartifactId>
            ${spring.version}version>
        dependency>
        
        
            org.springframeworkgroupId>
            spring-beansartifactId>
            ${spring.version}version>
        dependency>
        
        
            org.springframeworkgroupId>
            spring-contextartifactId>
            ${spring.version}version>
        dependency>
        
        
            org.springframeworkgroupId>
            spring-jdbcartifactId>
            ${spring.version}version>
        dependency>
        
        
            org.springframeworkgroupId>
            spring-webartifactId>
            ${spring.version}version>
        dependency>

        
        
            log4jgroupId>
            log4jartifactId>
            1.2.17version>
        dependency>
        
        
            com.alibabagroupId>
            druidartifactId>
            1.0.9version>
        dependency>

        
        
            mysqlgroupId>
            mysql-connector-javaartifactId>
            5.1.35version>
        dependency>
    dependencies>

    
    
        SSM_projectfinalName>
        
            
                
                org.apache.maven.pluginsgroupId>
                maven-compiler-pluginartifactId>
                3.6.1version>
                
                    ${maven.compiler.source}source>
                    ${maven.compiler.target}target>
                    UTF8encoding>
                configuration>
            plugin>
        plugins>
    build>

2 配置web.xml


这里引入了两个文件 applicationContext.xmlspring-mvc.xml




  mvcDemodisplay-name>
  
  
    index.jspwelcome-file>
  welcome-file-list>

  
  
    org.springframework.web.context.ContextLoaderListenerlistener-class>
  listener>

  
  
    contextConfigLocationparam-name>
    classpath:applicationContext.xmlparam-value>
  context-param>

  
  
    CharacterEncodingFilterfilter-name>
    org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    
      encodingparam-name>
      utf-8param-value>
    init-param>

    
      forceEncodingparam-name>
      trueparam-value>
    init-param>
  filter>
  
    CharacterEncodingFilterfilter-name>
    /*url-pattern>
  filter-mapping>

  
  
    springmvcservlet-name>
    org.springframework.web.servlet.DispatcherServletservlet-class>
    
    
      contextConfigLocationparam-name>
      classpath:spring-mvc.xmlparam-value>
    init-param>
    1load-on-startup>
    trueasync-supported>
  servlet>

  
    springmvcservlet-name>
    /url-pattern>
  servlet-mapping>

web-app>

注意:以下配置文件均在resources 目录下


3 新建`log4j.properties`


配置:


#日志输出级别
log4j.rootLogger=debug,stdout,D,E

#设置stdout的日志输出控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#输出日志到控制台的方式,默认为System.out
log4j.appender.stdout.Target = System.out
#设置使用灵活布局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p]  method:[%c (%rms)] - %m%n

如果不需要日志管理,可以不配置,类似于log4j的日志管理工具还有logback,


logback可以参考:https://blog.csdn.net/yudianxiaoxiao/article/details/86664616


4 新建 `jdbc.properties`


本地数据库配置:


jdbc.driver=com.mysql.jdbc.Driver
#数据库地址
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
#用户名
jdbc.username=root
#密码
jdbc.password=root
#最大连接数
c3p0.maxPoolSize=30
#最小连接数
c3p0.minPoolSize=10
#关闭连接后不自动commit
c3p0.autoCommitOnClose=false
#获取连接超时时间
c3p0.checkoutTimeout=10000
#当获取连接失败重试次数
c3p0.acquireRetryAttempts=2

初始化一个表:


DROP TABLE IF EXISTS t_user_hellocoder;
CREATE TABLE `t_user_hellocoder` (
  `id` int(11) NOT NULL,
  `name` VARCHAR(11) DEFAULT NULL,
  `description` VARCHAR(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8  ;

INSERT INTO `test`.`t_user_hellocoder`(`id`, `name`, `description`) VALUES (1, ''我是HaC'', ''一枚混迹于互联网的程序猿'');

5 配置 `applicati onContext.xml` 和 `spring-mvc.xml`


新建 spring-mvc.xml:



       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    
    

    
    

    
    

    
    
        
        
        
        
        
    bean>
beans>

applicationContext.xml:


我新建的项目applicationContext.xmlWEB-INF目录下,需要把它移动到resources目录下,如果本来就在就不用管,没有就新建。



                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    
    
        
    bean>

    
    
        
        
        
        
    bean>

    
    
        
        
        
        
        
    bean>

    
    
        
        
        
        
    bean>

    
    
        
        
    bean>
beans>

6 新建controller、service、dao、entity、xml、jsp


先上目录结构,大家不懂的可以仿照一下:



fb7eda0819c652a9fd0be7730d00722f.png


TUserHellocoder.java


package com.ssm.hellocoder.entity;

import java.io.Serializable;

/**
 * (TUserHellocoder)实体类
 *
 * @author HaC
 * @since 2020-05-29 01:28:27
 */
public class TUserHellocoder implements Serializable {
    private static final long serialVersionUID = 417502814533585676L;

    private Integer id;

    private String name;

    private String description;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

}

TUserHellocoderController.java


package com.ssm.hellocoder.controller;

import com.ssm.hellocoder.service.TUserHellocoderService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

/**
 * (TUserHellocoder)表控制层
 *
 * @author HaC
 * @since 2020-05-29 00:47:08
 */
@Controller
@RequestMapping("/HelloCoder")
public class TUserHellocoderController {
    /**
     * 服务对象
     */
    @Resource
    private TUserHellocoderService tUserHellocoderService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/selectUser")
    public ModelAndView selectOne(@RequestParam(value = "id") Integer id) {
        ModelAndView md = new ModelAndView("index");
        //把数据存到ModelAndView,给前端
        md.addObject("user",this.tUserHellocoderService.queryById(id));
        return md;
    }
}

TUserHellocoderService.java


package com.ssm.hellocoder.service;

import com.ssm.hellocoder.entity.TUserHellocoder;

/**
 * (TUserHellocoder)表服务接口
 *
 * @author HaC
 * @since 2020-05-29 01:28:29
 */
public interface TUserHellocoderService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    TUserHellocoder queryById(Integer id);

}

TUserHellocoderServiceImpl.java


package com.ssm.hellocoder.service.impl;

import com.ssm.hellocoder.dao.TUserHellocoderDao;
import com.ssm.hellocoder.entity.TUserHellocoder;
import com.ssm.hellocoder.service.TUserHellocoderService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * (TUserHellocoder)表服务实现类
 *
 * @author HaC
 * @since 2020-05-29 01:28:29
 */
@Service("tUserHellocoderService")
public class TUserHellocoderServiceImpl implements TUserHellocoderService {
    @Resource
    private TUserHellocoderDao tUserHellocoderDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public TUserHellocoder queryById(Integer id) {
        return this.tUserHellocoderDao.queryById(id);
    }
}

TUserHellocoderDao.java


package com.ssm.hellocoder.dao;

import com.ssm.hellocoder.entity.TUserHellocoder;

/**
 * (TUserHellocoder)表数据库访问层
 *
 * @author HaC
 * @since 2020-05-29 01:28:28
 */
public interface TUserHellocoderDao {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    TUserHellocoder queryById(Integer id);

}

resources目录下新建一个文件夹mapper,新建文件 TUserHellocoderDao.xml



mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


    
        
        
        
    resultMap>

    
    
        select
          id, name, description
        from test.t_user_hellocoder
        where id = #{id}
    select>

mapper>

WEB-INF目录下新建一个文件夹jsp,新建文件 index.jsp





Hello World!




${user.name}




${user.description}






以上就是SSM项目的配置了。


7 运行


配置服务器运行:


加上 -Dfile.encoding=UTF-8 解决日志乱码



85c29429437578fe78a1af615eaab880.png


选择war包:



155e3796dd8b27c8bdc3af404507db76.png


运行


浏览器输入 http://localhost:8081/HelloCoder/selectUser?id=1



a23aaa81a1ec594926d18f8868fd9616.png


大功告成!


源码在Github:https://github.com/DogerRain/DemoFamily



--end--


7e6ac97614dbca7daf0105d94c46c53e.png

长按关注噢!

万水千山总是情,点个在看行不行

4a88fa9182fb75198dbf9123cba98ebe.gif


d6d7a72f5cdf7c76fa62254a30904d61.png





推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • java日志框架详解
    Java日志框架详解1.常用日志框架1.1Java常用日志框架类别1.2Java常用日志框架历史1.3两大日志接口阵营1.3.1基于CommonsLogging接口实现的常用日志框 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
author-avatar
书友58612107_778
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有