手把手搭建SSM框架
搭建一个简单的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框架相关推荐
- 手把手教你搭建SSM框架(Eclipse版)
作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...
- 使用maven搭建ssm框架的javaweb项目
目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...
- eclipse + maven搭建SSM框架
eclipse + maven搭建SSM框架 0.系统环境 1)Windows 10 企业版 2)JDK 1.8.0_131 3)Eclipse Java EE IDE for Web Develop ...
- Spring框架学习笔记09:基于XML配置方式搭建SSM框架实现用户登录
文章目录 一.采用MVC架构 二.用户登录运行效果 三.基于XML配置方式搭建SSM框架实现用户登录 (一)创建数据库与表 - simonshop (t_user) 1.创建数据库 - simonsh ...
- MyEclipse使用Maven创建web项目+搭建SSM框架教程
MyEclipse使用Maven创建web项目+搭建SSM框架教程 博文中的代码:链接:http://pan.baidu.com/s/1o8tqIMI 密码:m3si 安装maven和配置 1.下载m ...
- 使用idea搭建SSM框架,并成功运行。
1.搭建环境 1. 前4步跟搭建Spring项目环境是一样的,请参考本人博客的Spring框架学习01. 2.在pom.xml中引入相关依赖 相关测试依赖 <dependency>< ...
- 使用idea搭建ssm框架,并实现简单的CRUD和分页查询功能
1.使用idea搭建ssm框架步骤,请参考本人博客 2.项目搭建好,创建以下目录 3.在pom.xml文件中引入依赖 <?xml version="1.0" encoding ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
- 软件工程课程设计·SOA架构搭建SSM框架的网上商城系统
软件工程课程设计·SOA架构搭建SSM框架的网上商城系统 项目简介 本系统利用SSM框架.Dubbo框架.Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块.购物车系统模块.搜索系 ...
最新文章
- ajax data参数没有值,ajax $.get的data参数无法传递
- 李子柒爆红:既然做直播能年薪过亿, 为何还要努力高考?
- [转]浅谈:国内软件公司为何无法做大做强
- 笔记-信息系统安全管理-信息安全保障系统
- XP屏幕上下翻转的现象及解决
- getparameter方法中文显示问号解决方法_电脑显示器花屏怎么办 电脑显示器花屏解决方法【原因分析】...
- 二、工作量证明链-区块链技术的雏形
- Pytorch还是TensorFlow?顶会带你览趋势
- 微信小程序单指拖拽和双指缩放旋转
- python判断是否有弹出窗口_使用Python爬取弹出窗口信息的实例
- 实用代码、链接、工具汇总
- matlab2014如何获得hostid,hostid.c/获取主机标识
- 区块链技术应用场景之政务链
- 2022保研夏令营经验贴(中科大、华科、武大、国防科大、浙大软件、中科院)
- 谈谈四天三夜的感受【记录篇】
- 物联网技术概论:第1章
- 从信息传播角度来看链路预测
- 排序篇:直接插入、希尔、直接选择和堆排序(C语言)
- Java中遍历Map集合的5种方式总结
- Exchange 2010查询用户MAPI会话是否超过了32个session