搭建一个简单的SSM框架,分享给大家,以后自己也可以拿出来用

1.用maven项目管理工具搭建一个简单SSM的demo:工具Eclipse,Mysql-5.5,Tomcat-7.0,Maven-3.0,jdk-1.8

(1) 新建一个动态web项目,当然也可以建一个Java普通项目,

(2)Dynamic Web Project

选择好你需要设置的配置和tomcat版本,点击下一步

可以添加一个resources文件夹,方便后面我们存放各种配置文件。点击下一步记得把这个勾选上,是后面需要设置的一个web.xml文件。

(3)这样我们就创建好了一个动态Web项目

(4)右击项目名,选择下面的Configure==>Convert to Maven Project

点击完成就行,加入Maven项目管理工具能使我们在做项目省很多心思。

我们需要在这个pom.xml写我们需要的引入依赖包及版本,大家可以上maven仓库查找需要的版本http://mvnrepository.com/

(5)依赖包

<dependencies><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><!-- 1.日志 --><!-- 实现slf4j接口并整合 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.1</version></dependency><!-- 2.数据库 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version><scope>runtime</scope></dependency><!-- DAO: MyBatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.3</version></dependency><!-- 3.Servlet web --><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>        <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><!-- 4.Spring --><!-- 1)Spring核心 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.7.RELEASE</version></dependency><!-- 2)Spring DAO层 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.1.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.1.7.RELEASE</version></dependency><!-- 3)Spring web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.7.RELEASE</version></dependency><!-- 4)Spring test --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.1.7.RELEASE</version></dependency><!-- Map工具类 --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency>     </dependencies>

3.写入环境

(1)jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10jdbc.username=rootjdbc.password=123456

(2)mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置全局属性 --><settings><!-- sql日志 --><setting name="logImpl" value="LOG4J2" /><!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 --><!-- <setting name="useGeneratedKeys" value="true" /> --><!-- 使用列别名替换列名 默认:true --><!-- <setting name="useColumnLabel" value="true" /> --><!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} --><!-- <setting name="mapUnderscoreToCamelCase" value="true" /> --></settings>
</configuration>

后面我是将spring配置文件分为3个部分,方便我们管理

(3)spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><!-- 配置整合mybatis过程 --><!-- 配置数据库相关参数properties的属性:${url} --><context:property-placeholder location="classpath:jdbc.properties" /><!-- 数据库连接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><!-- 配置连接池属性 --><property name="driverClass" value="${jdbc.driverClassName}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${jdbc.initialSize}"/><!-- 连接池最大数量 --><property name="maxActive" value="${jdbc.maxActive}"/><!-- 连接池最小空闲 --><property name="minIdle" value="${jdbc.minIdle}"/><!-- 获取连接最大等待时间 --><property name="maxWait" value="${jdbc.maxWait}"/><!--配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 --><property name="useUnfairLock" value="true"/><property name="defaultReadOnly" value="false"/><property name="timeBetweenLogStatsMillis" value="${jdbc.timeBetweenLogStatsMillis}"/></bean><!-- 配置sqlSessionFactory属性 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"/>        </bean><!-- 自动扫描的mapper --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.ssm.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
</beans>

(4)spring-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 启用注解 --><context:annotation-config /><!-- 配置扫描的包 --><context:component-scan base-package="cn.ssm.service"/><!-- 事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 数据源 --><property name="dataSource" ref="dataSource" /></bean>
</beans>

(5)spring-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><!-- springMVC配置 --><!-- 扫描注解 --><context:component-scan base-package="cn.ssm.controller.*" /><!--访问静态资源 --><mvc:annotation-driven /><mvc:resources mapping="/style/**" location="/style/" /><mvc:resources location="classpath:/META-INF/resources/"mapping="swagger-ui.html" /><!-- 配置试图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/view/" /><property name="suffix" value=".jsp" /></bean><bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"><property name="templateLoaderPath"><value>/WEB-INF/view/</value></property></bean><!-- 文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设置默认编码 --><property name="defaultEncoding" value="utf-8"></property><!-- 上传图片最大大小5M --><property name="maxUploadSize" value="5242440"></property></bean>
</beans>

(6)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name>SSM</display-name><!-- Session失效时间 --><session-config><session-timeout>30</session-timeout></session-config><!-- 首页 --><welcome-file-list><welcome-file>/home</welcome-file></welcome-file-list><!-- 解决post乱码 --><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- log4j2设置 --><context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:log4j2.xml</param-value></context-param><listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener><!-- spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-*.xml</param-value></context-param><!-- mvc --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springMVC.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 发生错误时页面处理 --><error-page><error-code>403</error-code><location>/404.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page><error-page><error-code>500</error-code><location>/error.jsp</location></error-page><error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
</web-app>

4.创建项目骨架

ps : 图片有个小错误,cn.smm => cn.ssm

基本的结构,还可以分mapper包,放mybatis的映射文件

(1)User.java实体类

package cn.ssm.entity;public class User {private Integer id;private String code;private String password;private String name;private String phone;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 getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [id=" + id + ", code=" + code + ", name=" + name + ", phone=" + phone + "]";}
}

(2)UserDao.java用户接口

package cn.ssm.dao;import cn.ssm.entity.User;public interface UserDao {User login(@Param("code") String code,@Param("password") String password);//登陆int add(User user);//注册User query(int id);//查询User queryByCode(@Param("code") String code);//根据code查
}

(3)UserDao.xml   UserMapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.smm.dao.UserDao"><!-- 目的:为dao接口方法提供sql语句配置 --><!-- 登陆验证 --><select id="login">SELECT            *FROMuserWHEREcode=#{code,jdbcType=VARCHAR}ANDpassword=#{password,jdbcType=VARCHAR}</select><!-- 查询 --><select id="query" resultType="User">SELECT*            FROMuserWHEREid=#{id,jdbcType=INTEGER}</select><!-- 查询 --><select id="queryByCode" resultType="User">SELECT*            FROMuserWHEREid=#{id,jdbcType=INTEGER}</select><!-- 添加用户 -->  <insert id="add" parameterType="cn.ssm.entity.User">insert intouser(            code,password,name,phone)values(            code=#{code,jdbcType=VARCHAR},password=#{password,jdbcType=VARCHAR},name=#{name,jdbcType=VARCHAR},phone=#{phone,jdbcType=VARCHAR})         </insert>
</mapper>

(4)UserService.java

package cn.ssm.service;import cn.ssm.entity.User;public interface UserService {/** * 登录验证 * @param account 登录账号 * @param userPassword 密码 * @return  validate true通过 false未通过 * @throws Exception */  User login(String code, String password) throws Exception; /*** 注册* @param user*/int add(User user)throws Exception;/*** ID查询* @param id* @return* @throws Exception*/User queryById(int id)throws Exception;/*** code查询* @param code* @return* @throws Exception*/User queryByCode(String code)throws Exception;
}

(5)UserServiceImpl.java

package cn.ssm.service;import org.springframework.beans.factory.annotation.Autowired;import cn.ssm.dao.UserDao;
import cn.ssm.entity.User;public class UserServiceImpl implements UserService {@AutowiredUserDao userDao;@Overridepublic User login(String code, String password) throws Exception {return userDao.login(code, password);}@Overridepublic int add(User user) throws Exception {return userDao.add(user);}@Overridepublic User queryById(int id) throws Exception {return userDao.query(id);}@Overridepublic User queryByCode(String code) throws Exception {return userDao.queryByCode(code);}}

(6)UserCtroller.java

package cn.ssm.web;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import cn.ssm.entity.User;
import cn.ssm.service.UserService;@Controller
@RequestMapping("/api/user")
public class UserCtroller {@AutowiredUserService userService;@RequestMapping(value = "login", method = RequestMethod.POST)public ModelAndView login(String code, String password) throws Exception {System.out.println("用户登陆" + code + password);ModelAndView modelAndView = new ModelAndView();User user = userService.login(code, password);String url = "/home";modelAndView.addObject("user", user);modelAndView.addObject("url", url);return modelAndView;}@RequestMapping(value = "add", method = RequestMethod.POST)public ModelAndView add(@RequestBody User user) throws Exception {ModelAndView modelAndView = new ModelAndView();System.out.println("用户注册" + user.getCode() + user.getPassword());User byCode = userService.queryByCode(user.getCode());if (byCode != null) {String url = "/regist";modelAndView.addObject("msg", "用户编码已存在");modelAndView.addObject("url", url);return modelAndView;}int addUser = userService.add(user);if (addUser > 0) {User user = userService.login(code, password);String url = "/home";modelAndView.addObject("user", user);modelAndView.addObject("url", url);return modelAndView;} else {return null;}}@RequestMapping(value = "query", method = RequestMethod.GET)public ModelAndView queryById(int id) throws Exception {ModelAndView modelAndView = new ModelAndView();System.out.println("查询id" + id);User user = userService.queryById(id);if (user != null) {User user = userService.login(code, password);String url = "/show";modelAndView.addObject("user", user);modelAndView.addObject("url", url);return modelAndView;} else {return null;}}
}

JSP页面

注册

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body><form action="${pageContext.request.contextPath }/user/regist.action"><table border="1"><tr><td>用户名</td><td><input type="text" name="name"></td></tr><tr><td>密码</td><td><input type="text" name="password"></td></tr><tr><td><input type="submit" value="注册"></td></tr></table></form>
</body>
</html>

登陆

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
</head>
<body><form action="${pageContext.request.contextPath }/user/login.action"><table border="1"><tr><td>用户名</td><td><input type="text" name="name"></td></tr><tr><td>密码</td><td><input type="text" name="password"></td></tr><tr><td><input type="submit" value="登录"></td></tr></table></form>
</body>
</html>

登陆成功

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功</title>
</head>
<body>${msg }</br><a href="${pageContext.request.contextPath }/login.jsp">去登录</a>
</body>
</html>

手把手搭建SSM框架相关推荐

  1. 手把手教你搭建SSM框架(Eclipse版)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

  2. 使用maven搭建ssm框架的javaweb项目

    目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...

  3. eclipse + maven搭建SSM框架

    eclipse + maven搭建SSM框架 0.系统环境 1)Windows 10 企业版 2)JDK 1.8.0_131 3)Eclipse Java EE IDE for Web Develop ...

  4. Spring框架学习笔记09:基于XML配置方式搭建SSM框架实现用户登录

    文章目录 一.采用MVC架构 二.用户登录运行效果 三.基于XML配置方式搭建SSM框架实现用户登录 (一)创建数据库与表 - simonshop (t_user) 1.创建数据库 - simonsh ...

  5. MyEclipse使用Maven创建web项目+搭建SSM框架教程

    MyEclipse使用Maven创建web项目+搭建SSM框架教程 博文中的代码:链接:http://pan.baidu.com/s/1o8tqIMI 密码:m3si 安装maven和配置 1.下载m ...

  6. 使用idea搭建SSM框架,并成功运行。

    1.搭建环境 1. 前4步跟搭建Spring项目环境是一样的,请参考本人博客的Spring框架学习01. 2.在pom.xml中引入相关依赖 相关测试依赖 <dependency>< ...

  7. 使用idea搭建ssm框架,并实现简单的CRUD和分页查询功能

    1.使用idea搭建ssm框架步骤,请参考本人博客 2.项目搭建好,创建以下目录 3.在pom.xml文件中引入依赖 <?xml version="1.0" encoding ...

  8. Eclipse中使用Maven搭建SSM框架

    Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...

  9. 软件工程课程设计·SOA架构搭建SSM框架的网上商城系统

    软件工程课程设计·SOA架构搭建SSM框架的网上商城系统 项目简介 本系统利用SSM框架.Dubbo框架.Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块.购物车系统模块.搜索系 ...

最新文章

  1. ajax data参数没有值,ajax $.get的data参数无法传递
  2. 李子柒爆红:既然做直播能年薪过亿, 为何还要努力高考?
  3. [转]浅谈:国内软件公司为何无法做大做强
  4. 笔记-信息系统安全管理-信息安全保障系统
  5. XP屏幕上下翻转的现象及解决
  6. getparameter方法中文显示问号解决方法_电脑显示器花屏怎么办 电脑显示器花屏解决方法【原因分析】...
  7. 二、工作量证明链-区块链技术的雏形
  8. Pytorch还是TensorFlow?顶会带你览趋势
  9. 微信小程序单指拖拽和双指缩放旋转
  10. python判断是否有弹出窗口_使用Python爬取弹出窗口信息的实例
  11. 实用代码、链接、工具汇总
  12. matlab2014如何获得hostid,hostid.c/获取主机标识
  13. 区块链技术应用场景之政务链
  14. 2022保研夏令营经验贴(中科大、华科、武大、国防科大、浙大软件、中科院)
  15. 谈谈四天三夜的感受【记录篇】
  16. 物联网技术概论:第1章
  17. 从信息传播角度来看链路预测
  18. 排序篇:直接插入、希尔、直接选择和堆排序(C语言)
  19. Java中遍历Map集合的5种方式总结
  20. Exchange 2010查询用户MAPI会话是否超过了32个session

热门文章

  1. Cygwin的简介以及使用方法
  2. 在html中怎么格式化输出json字符串
  3. MongoDB安装(新版本保姆级教程)
  4. .NET 6 WebApi Swagger 配置 JWT token+Authorize认证
  5. 低空急流负风切变对风机的影响
  6. 计算机三级网络技术路由配置,计算机三级网络技术(7):路由器配置及使用(上)...
  7. 渗透测试sec123笔记
  8. 百度地图-坐标转换及位置解析
  9. Android获取手机信号强度
  10. 小程序毕设作品之微信疫苗预约小程序毕业设计(7)中期检查报告