热门标签 | 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





推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
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社区 版权所有