初学者SSM框架的创建过程
来源:互联网 发布:jdbc mysql原理 编辑:程序博客网 时间:2024/05/31 19:01
搭建jdk、myeclipse等环境的过程网上资源很多,这里也给出一个链接供大家参考:http://blog.csdn.net/zhshulin/article/details/30779873
搭建环境好以后就可以直接创建Maven项目,点击 new ->Maven Project->next->maven-archetype-webapp->填入项目名称finish即可.
1)、搭建好项目后需要引入所需的架包,可以在pom.xml文件中配置好即可自动下载,
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SSMDemo</groupId> <artifactId>SSMDemo</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SSMDemo Maven Webapp</name> <url>http://maven.apache.org</url> <properties><!-- spring版本号 --><spring.version>4.0.2.RELEASE</spring.version><!-- mybatis版本号 --><mybatis.version>3.2.6</mybatis.version><!-- log4j日志文件管理包版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><!--Expression Language (depends on spring-core) Define this if you use Spring Expression APIs (org.springframework.expression.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring.version}</version></dependency><!-- Bean Factory and JavaBeans utilities (depends on spring-core) Define this if you use Spring Bean APIs (org.springframework.beans.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!-- Aspect Oriented Programming (AOP) Framework (depends on spring-core, spring-beans) Define this if you use Spring AOP APIs (org.springframework.aop.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><!--Application Context (depends on spring-core, spring-expression, spring-aop, spring-beans) This is the central artifact for Spring’s Dependency Injection Container and is generally always defined --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!-- Various Application Context utilities, including EhCache, JavaMail, Quartz, and Freemarker integration Define this if you need any of these integrations --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><!--Transaction Management Abstraction (depends on spring-core, spring-beans, spring-aop, spring-context) Define this if you use Spring Transactions or DAO Exception Hierarchy (org.springframework.transaction.*/org.springframework.dao.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, spring-tx) Define this if you use Spring’s JdbcTemplate API (org.springframework.jdbc.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA, and iBatis. (depends on spring-core, spring-beans, spring-context, spring-tx) Define this if you need ORM (org.springframework.orm.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB, JiBX, Castor, XStream, and XML Beans. (depends on spring-core, spring-beans, spring-context) Define this if you need OXM (org.springframework.oxm.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><!-- Web application development utilities applicable to both Servlet and Portlet Environments (depends on spring-core, spring-beans, spring-context) Define this if you use Spring MVC, or wish to use Struts, JSF, or another web framework with Spring (org.springframework.web.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><!-- Spring MVC for Servlet Environments (depends on spring-core, spring-beans, spring-context, spring-web) Define this if you use Spring MVC with a Servlet Container such as Apache Tomcat (org.springframework.web.servlet.*) --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- Support for testing Spring applications with tools such as JUnit and TestNG This artifact is generally always defined with a ‘test’ scope for the integration testing framework and unit testing stubs --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- mybatis核心包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- mybatis/spring包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 导入Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- 日志记录依赖包,很多都依赖此包,像log4j,json-lib等等 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.3</version></dependency><!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- JSTL标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- 格式化对象,方便输出日志 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log end --> <!-- jackson 包 start--> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.11</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.11</version> </dependency> <!-- jackson 包 结束--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>SSMDemo</finalName> </build></project>
2)将工程转化为web工程该过程有俩步第一右键项目点击Properties->Deployment Assembly(在此设置我们需要发布哪些文件夹下的内容),需要发布的包格式如下所示,没有的文件夹可以自己新建
第二部是将项目转化为web项目,还是在Properties中点击project Facets直接点apply(它会自动帮你勾选所需的)
3)在resources中创建四个文件夹来存放我们的资源文件:
spring-mybatis:存放Spring-mybatis的配置文件,Spring-mybatis.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:mybatis="http://mybatis.org/schema/mybatis-spring"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 加载资源文件: 数据库连接文件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:/properties/jdbc.properties"/></bean><!-- 配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></bean><!-- 配置 mybatis --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 扫描entity --><property name="typeAliasesPackage" value="com.ssmdemo.entity"/><!-- 注册mapper.xm --><property name="mapperLocations" value="classpath*:/mapper/*.xml"/></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.ssmdemo.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean><!-- 添加事务管理 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 采用注解方式管理事务 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>springmvc-servlet:存放springmvc的配置文件,springmvc-servlet.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/beans http://www.springframework.org/schema/beans/spring-beans-4.3.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.xsd"><!-- 启用srping mvc注解 --><!-- <mvc:annotation-driven />开启设置可以替代 --><!-- <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> --><mvc:annotation-driven/><!-- 静态资源 --><mvc:resources location="/img/" mapping="/img/**"/><mvc:resources location="/js/" mapping="/js/**"/><!-- 拦截器 --><!-- <mvc:interceptors></mvc:interceptors> --><!-- 自动扫描的包,使Spring支持自动检测组件,如注解的Controller --><context:component-scan base-package="com.ssmdemo"/><!--视图解析器: 定义视图的前缀后缀 --><bean id="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/page/"/><property name="suffix" value=".jsp"/></bean></beans>
properties:存放日志文件、数据库连接池的文件
jdbc.properties
<?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/beans http://www.springframework.org/schema/beans/spring-beans-4.3.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.xsd"><!-- 启用srping mvc注解 --><!-- <mvc:annotation-driven />开启设置可以替代 --><!-- <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> --><mvc:annotation-driven/><!-- 静态资源 --><mvc:resources location="/img/" mapping="/img/**"/><mvc:resources location="/js/" mapping="/js/**"/><!-- 拦截器 --><!-- <mvc:interceptors></mvc:interceptors> --><!-- 自动扫描的包,使Spring支持自动检测组件,如注解的Controller --><context:component-scan base-package="com.ssmdemo"/><!--视图解析器: 定义视图的前缀后缀 --><bean id="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/page/"/><property name="suffix" value=".jsp"/></bean></beans>日志配置文件:log4j.properties
# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.log4j.rootLogger=debug,console,txt # Direct Log Messages To Console 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=%d{yyyy-MM-dd HH:mm:ss} %p %c:%L - %m%n log4j.appender.txt=org.apache.log4j.RollingFileAppender log4j.appender.txt.File=${webapp.root}/WEB-INF/log/log.txt log4j.appender.txt.MaxFileSize=500KB log4j.appender.txt.MaxBackupIndex=1 log4j.appender.txt.layout=org.apache.log4j.PatternLayout log4j.appender.txt.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n# org.hibernate#log4j.logger.org.hibernate=debug# org.hibernate.SQL#log4j.logger.org.hibernate.SQL=debug# Log Schema Export Update#log4j.logger.org.hibernate.tool.hbm2ddl=debug<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.ssmdemo.dao.UserDao"><insert id="add" parameterType="User">insert into user(username,password,email) values(#{username},#{password},#{email})</insert><update id="update" parameterType="User">update user set username = #{username}, password = #{password}, email = #{email} where id = #{id}</update><delete id="delete" parameterType="Integer">delete from user where id = #{id}</delete><select id="findByID" parameterType="Integer" resultType="User">select * from user where id = #{id}</select><resultMap type="User" id="userMap"><id column="id" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="email" property="email"/><!-- <association property="classes" column="class_id" select="findByID"></association> --></resultMap><select id="findAll" resultMap="userMap">select * from user</select></mapper>
#Spring config#log4j.logger.org.springframewaork = DEBUG #Mybatis config#log4j.logger.org.mybatis=DUBUG#log4j.logger.net.openwares.test.mapper = TRACE#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG#JDBC configlog4j.logger.java.sql.Connection = DEBUG log4j.logger.java.sql.Statement = DEBUG log4j.logger.java.sql.PreparedStatement = DEBUG log4j.logger.java.sql.ResultSet =DEBUGmapper:存放数据库的实体对应的xml文件,UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.ssmdemo.dao.UserDao"><insert id="add" parameterType="User">insert into user(username,password,email) values(#{username},#{password},#{email})</insert><update id="update" parameterType="User">update user set username = #{username}, password = #{password}, email = #{email} where id = #{id}</update><delete id="delete" parameterType="Integer">delete from user where id = #{id}</delete><select id="findByID" parameterType="Integer" resultType="User">select * from user where id = #{id}</select><resultMap type="User" id="userMap"><id column="id" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="email" property="email"/><!-- <association property="classes" column="class_id" select="findByID"></association> --></resultMap><select id="findAll" resultMap="userMap">select * from user</select></mapper>
至此框架的配置过程就完成了,现在我们要开始写后台文件了,SSM也是一个典型的三层架构模式,所以它也拥有entity . dao , service , controller这些包,4)实体类中的User.java 文件
package com.ssmdemo.entity;public class User {private Integer id;private String username;private String passsword;private String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}
5)dao层,其中写的是数据库底层的增删改方法,UserDao.java文件package com.ssmdemo.dao;import java.util.List;import org.springframework.stereotype.Repository;import com.ssmdemo.entity.User;@Repository(value="userDao")public interface UserDao { /** * 此方法对应于数据库中的表 ,user * 新写入数据库记录 * * @param record */void add(User user); /** * 此方法对应于数据库中的表 ,user * 根据主键来更新符合条件的数据库记录 * * @param record */void update(User user); /** * 此方法对应于数据库中的表 ,user * 根据主键删除数据库的记录 * * @param id */void delete(Integer id); /** * 此方法对应于数据库中的表 ,user * 根据指定主键获取一条数据库记录 * * @param id */User findByID(Integer id);/** * 此方法对应于数据库中的表 ,user * 查询所有数据库记录 */List<User> findAll();}
6)service层,业务逻辑层 其中写的是各类业务方法,该包的目录结构类似于SSH框架中service的目录结构,该包存放的是接口,和一个实现类的包UserService.java
package com.ssmdemo.service;import java.util.List;import com.ssmdemo.entity.User;public interface UserService {public void add(User user);public void update(User user);public void delete(Integer id);public User findByID(Integer id);public List<User> findAll();}
UserServiceImpl.javapackage com.ssmdemo.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import com.ssmdemo.dao.UserDao;import com.ssmdemo.entity.User;import com.ssmdemo.service.UserService;@Service(value = "userService")@Transactionalpublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public void add(User user) {userDao.add(user);}public void update(User user) {userDao.update(user);}public void delete(Integer id) {userDao.delete(id);}@Transactional(propagation = Propagation.NOT_SUPPORTED,readOnly = true)public User findByID(Integer id) {return userDao.findByID(id);}@Transactional(propagation = Propagation.NOT_SUPPORTED,readOnly = true)public List<User> findAll() {return userDao.findAll();}}7)controller,该包的功能可以理解为SSH中的action,但其实并不是 它们的意思有很大的不同,UserController.java
package com.ssmdemo.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.test.context.TestExecutionListeners;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.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import com.ssmdemo.entity.User;import com.ssmdemo.service.UserService;@Controller@RequestMapping(value="/user")public class UserController {@Autowiredprivate UserService userService;/** * 用户信息列表 * @return * 如果采用JSON传值,那么需要注释掉下方方法中的代码 * List<User> userList = userService.findAll(); * mv.addObject("userList", userList); * 直接返回一个空视图名称 * 页面异步加载数据,请查看下方注释方法 */@RequestMapping(value = "/userList")public ModelAndView userList(){List<User> userList = userService.findAll();ModelAndView mv = new ModelAndView();mv.addObject("userList", userList);mv.setViewName("userList");return mv;}/** * 用户信息列表 页面异步加载 * @return * @ResponseBody 注解的作用是将目标类型数据转换成json格式 * 另外页面需要加入jquery js *//*@RequestMapping(value = "/list")public @ResponseBody List<User> list(){List<User> userList = userService.findAll();return userList;}*//** * 跳转到添加信息视图 * @return */@RequestMapping(value = "/addLoad")public ModelAndView addLoad(){ModelAndView mv = new ModelAndView();mv.setViewName("add");return mv;}/** * 添加信息 * @param user * @return */@RequestMapping(value = "/add",method = RequestMethod.POST)public String add(User user){userService.add(user);return "redirect:/user/userList";}/** * 修改信息获取,跳转到修改信息视图 * @param id * @return */@RequestMapping(value = "/editLoad")public ModelAndView editLoad(@RequestParam(value = "id") Integer id){User user = userService.findByID(id);ModelAndView mv = new ModelAndView();mv.addObject("user", user);mv.setViewName("edit");return mv;}/** * 修改信息 * @param user * @return */@RequestMapping(value = "/edit",method = RequestMethod.POST)public String edit(User user){userService.update(user);return "redirect:/user/userList";}/** * 删除用户 * @param id * @return */@RequestMapping(value = "/delete")public String delete(@RequestParam(value = "id") Integer id){userService.delete(id);return "redirect:/user/userList";}
至此一个简易的SSM框架就搭建好了,我们现在在进行一个千寻漫画的开发,前台是移动安卓端,后台是一个SSM框架写的,拥有爬虫技术去搜索漫画后把漫画发给安卓端去显示的系统,后续在开发的过程中如果有一些自己的心得体会也会记录下来,供自己以及大家学习分享!
1 0
- 初学者SSM框架的创建过程
- 创建Maven的ssm框架
- ssm框架--maven项目的创建
- SSM第一篇 最简单的SSM框架搭建过程--SSM简单整合
- MFC框架的创建过程
- FreeMarker与Spring框架及SSM的整合过程
- FreeMarker与Spring框架及SSM的整合过程
- 使用Eclipse自动创建SSM框架的WEB工程
- maven创建ssm框架的pom.xml文件配置
- SSM框架的搭建
- SSM框架的理解
- SSM框架的配置文件
- SSM框架的整合
- SSM框架的整合
- ssm框架的理解
- SSM框架的使用
- SSM框架的介绍
- ssm框架的搭建
- IE兼容性
- PAT BASIC LEVEL 1031. 查验身份证(15)
- 生成二维码
- PAT BASIC LEVEL 1032. 挖掘机技术哪家强(20)
- 欢迎使用CSDN-markdown编辑器
- 初学者SSM框架的创建过程
- js中判断为{} 和 null
- Number()函数
- 网管的自我修养-网络系统
- redis 基础命令
- AFNetworking 状态栏小菊花
- 烟草及IT服务流程平台SQL等
- mudoo库Python翻译
- 重构