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

基于Maven搭建SSM框架

一、简介所谓SSM,即是SpringSpringMVCMyBatis三个开源框架的整合,是目前流行的作为WEB项目搭建的框架选择。这篇文章是自己动手搭建
一、简介

所谓SSM,即是Spring+SpringMVC+MyBatis三个开源框架的整合,是目前流行的作为WEB项目搭建的框架选择。

这篇文章是自己动手搭建并将过程记录,以便加深印象和方便以后查阅。




二、环境

1.操作系统:windows 10

2.IDE版本:Eclipse Luna Release (4.4.0)

3.JDK版本:jdk1.7.0_60

4.tomcat版本:apache-tomcat-7.0.53

5.maven版本:3.2.1

6.数据库:mysql(事先建好数据库)




三、步骤

(一)创建工程

1.New一个maven工程



2.点击Next,选择默认工作空间位置;如果勾选了create a simple project会自动创建src/main/java,src/test/java,src/test/resources这些maven项目中常见文件夹,但会缺失web项目需要的web.xml等文件;

此处我们不勾选,点击下一步;


3.选择web类型,注意不要选错了,点击Next       


4.填写GroupID、ArtifactID及版本信息,点击Finish


5.工程创建完毕



(二)调整项目结构

1.window-Preferences-Server-Runtime Environment添加tomcat,并注意JRE环境为你的jdk版本



2.这时候看到我们JRE System Library后面显示的还是[J2SE-1.5],并且没有maven项目的src/main/java等文件夹,我们需要调整对应的JRE环境,在工程上右键Build Path-Configure Build Path,在Libraries下选中JRE,右侧edit,选择我们自己的jdk版本



3.这时候我们的项目就变成了这个样子,JRE版本也对了,src/main等文件夹也有了,但还是缺少src/test/resources,需要手动创建


4.右键New一个source folder,名称为src/test/resources



5.结构调整完毕



(三)添加pom依赖,下载SSM框架所需jar包

4.0.0test.java.zxfSSMDemo

war0.0.1-SNAPSHOTSSMDemo Maven Webapphttp://maven.apache.org

4.3.8.RELEASEorg.springframeworkspring-core${spring.version}org.springframeworkspring-aop${spring.version}org.springframeworkspring-web${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-tx${spring.version}org.aspectjaspectjrt1.8.0org.aspectjaspectjweaver1.8.0org.mybatismybatis3.3.0mysqlmysql-connector-java5.1.31com.alibabadruid1.0.20org.mybatismybatis-spring1.2.3javax.servletjstl1.2log4jlog4j1.2.17org.slf4jslf4j-api1.7.21junitjunit3.8.1testSSMDemo


下载之后可以看到maven依赖下的包已经都有了



(四)配置文件

1.修改web.xml

Archetype Created Web Application

contextConfigLocation

classpath:spring-mybatis.xml encodingFilter org.springframework.web.filter.CharacterEncodingFilter true

encoding

UTF-8 encodingFilter /* org.springframework.web.context.ContextLoaderListener org.springframework.web.util.IntrospectorCleanupListener SpringMVC org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring-mvc.xml 1 true SpringMVC / /index.jsp


2.在resources文件夹下创建spring-mybatis.xml



点击finish,创建文件

3.配置spring-mybatis.xml


classpath:jdbc.propertiesclasspath:log4j.properties


4.创建spring-mvc.xml文件




5.创建jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb
jdbc.username=root
jdbc.password=root

6.创建log4j.properties文件

log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.COnsole=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.COnversionPattern=[%c] - %m%n #文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.COnversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n



(五)编写服务端代码

1.利用逆向工程生成dao、实体类和mybatis映射文件,具体参考教程https://blog.csdn.net/qq_33236248/article/details/80091214

2.在src/java/main文件夹下新建包com.java.zxf.dao、com.java.zxf.domain


3.将逆向工程生成的三个文件,分别拷贝到对应的目录下;(习惯上把mapper改为dao,可以不改,但如果改了,记住UserMapper.xml中的namespace也要做对应更改,不然会报Invalid bound statement (not found)的异常)


User.java,代码如下:

package com.java.zxf.domain;public class User {private String id;private String userName;private String userGender;private String userBirthday;public String getId() {return id;}public void setId(String id) {this.id = id == null ? null : id.trim();}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName == null ? null : userName.trim();}public String getUserGender() {return userGender;}public void setUserGender(String userGender) {this.userGender = userGender == null ? null : userGender.trim();}public String getUserBirthday() {return userBirthday;}public void setUserBirthday(String userBirthday) {this.userBirthday = userBirthday == null ? null : userBirthday.trim();}
}

UserDao.java,代码如下 :

package com.java.zxf.dao;import com.java.zxf.domain.User;public interface UserDao {int deleteByPrimaryKey(String id);int insert(User record);int insertSelective(User record);User selectByPrimaryKey(String id);int updateByPrimaryKeySelective(User record);int updateByPrimaryKey(User record);
}

UserMapper.xml,代码如下:



id, user_name, user_gender, user_birthdaydelete from userwhere id = #{id,jdbcType=VARCHAR}insert into user (id, user_name, user_gender, user_birthday)values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{userGender,jdbcType=VARCHAR}, #{userBirthday,jdbcType=VARCHAR})insert into userid,user_name,user_gender,user_birthday,#{id,jdbcType=VARCHAR},#{userName,jdbcType=VARCHAR},#{userGender,jdbcType=VARCHAR},#{userBirthday,jdbcType=VARCHAR},update useruser_name = #{userName,jdbcType=VARCHAR},user_gender = #{userGender,jdbcType=VARCHAR},user_birthday = #{userBirthday,jdbcType=VARCHAR},where id = #{id,jdbcType=VARCHAR}update userset user_name = #{userName,jdbcType=VARCHAR},user_gender = #{userGender,jdbcType=VARCHAR},user_birthday = #{userBirthday,jdbcType=VARCHAR}where id = #{id,jdbcType=VARCHAR}

4.在src/java/main文件夹下新建包com.java.zxf.service,用来存放service层代码;


5.在service包下新建UserService类,定义接口根据ID查询用户信息

package com.java.zxf.service;import com.java.zxf.domain.User;public interface UserService {/*** 根据ID获取用户信息*/public User getUserById(String id);
}

6.在service包下新建com.java.zxf.service.impl包,用来存放service层实现的代码;


7.在impl包下新建UserServiceImpl类,实现UserService

package com.java.zxf.service.impl;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.java.zxf.dao.UserDao;
import com.java.zxf.domain.User;
import com.java.zxf.service.UserService;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public User getUserById(String id) {return userDao.selectByPrimaryKey(id);}}

8.在src/java/main文件夹下新建包com.java.zxf.controller,用来存放控制层代码;


9.在controller下新建UserController类,并编写控制层代码;

package com.java.zxf.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;import com.java.zxf.domain.User;
import com.java.zxf.service.UserService;/*** 用户控制器*/
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/user", method = RequestMethod.GET)public ModelAndView login(@RequestParam(value="id",required=true) String id) {User user = userService.getUserById(id);ModelAndView mav = new ModelAndView();if (user == null) {//跳转至失败页mav.setViewName("fail");return mav;} else {//跳转至成功页mav.addObject("id", user.getId());mav.addObject("name", user.getUserName());mav.addObject("gender", user.getUserGender());mav.addObject("birthday", user.getUserBirthday());mav.setViewName("success");return mav;}}
}



(六)编写前端代码

1.在WEB-INF目录下新建jsp文件夹,用来存放jsp页面


2.在jsp文件夹下分别新建失败页fail.jsp和成功页success.jsp

fail.jsp代码如下:

<%@ page language="java" cOntentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>






根据ID查询用户信息失败


success.jsp代码如下:

<%@ page language="java" cOntentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%>






根据ID查询用户信息成功
用户信息如下:
用户ID:${id}
用户名:${name}
用户性别:${gender}
用户生日:${birthday}




(七)构建项目

1.在项目上右键,选择run-maven build..,然后输入命令clean install


2.构建成功



(八)部署项目

1.在Servers标签中,新建一个server,可以点击链接,也可以右键New Server;如果没有Server标签,可以在菜单栏依次Window-Show View-Servers即可打开

配置tomcat


2.点击Next,将我们的项目添加到右侧



3.点击finish完成,server就创建完成了


4.在server上双击,打开相关配置,在Timeouts中将服务器启动和关闭时间改为300秒,因为如果项目太大,几十秒肯定启动不完,服务器就停了


5.右键server,点击publish发布(可能失败,多点几次)

6.右键server,点击start,启动服务器


启动成功



(九)访问项目

(在此之前,数据库已经有一条数据)


1.在浏览器地址栏输入http://localhost:8080/SSMDemo/user?id=1

2.成功


3.再测一下失败页,在地址栏输入http://localhost:8080/SSMDemo/user?id=2


4.访问成功



(十)至此,基本的SSM框架搭建完毕。

源码附上:点击打开链接

推荐阅读
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 深入解析Spring Boot自动配置机制
    本文旨在深入探讨Spring Boot的自动配置机制,特别是如何利用配置文件进行有效的设置。通过实例分析,如Http编码自动配置,我们将揭示配置项的具体作用及其背后的实现逻辑。 ... [详细]
author-avatar
掩飾獨殇_389
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有