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





推荐阅读
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • Hibernate全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架1)、基础概念DAO(DataAccessorOb ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • Vue CLI 基础入门指南
    本文详细介绍了 Vue CLI 的基础使用方法,包括环境搭建、项目创建、常见配置及路由管理等内容,适合初学者快速掌握 Vue 开发环境。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 问题概述:在本地环境中代码运行正常,但部署到服务器后出现错误。具体表现为NCManager和SAXBuilder无法解析为类型。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
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社区 版权所有