热门标签 | 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框架搭建完毕。

源码附上:点击打开链接

推荐阅读
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 深入理解Java中的多态性概念及其应用
    多态是面向对象编程中的三大核心特性之一,与封装和继承共同构成了面向对象的基础。多态使得代码更加灵活和可扩展,封装和继承则为其提供了必要的支持。本文将深入探讨多态的概念及其在Java中的具体应用,帮助读者全面理解和掌握这一关键知识点。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
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社区 版权所有