1框架介绍
1.1环境准备
1、在eclipse中新建一个工作空间
2、在window-pererferences-General-Workspace下把文本编码设置为UTF-8
3、在window-pererferences-Validation下去掉所有验证
4、在window-pererferences-Java-installed
JREs选择安装的jdk
5、在window-pererferences-Server-Runtime
Envirement下选择安装的Tomcat服务
6、虚拟机内存设置:
-server -Xms512m -Xmx512m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
1.2框架结构
系统架构SSM:SpringMvc(请求转发响应)+Spring(主要用到注入)+Mybatis框架
1.3需要的jar包
1.4框架配置文件
1、系统配置文件模板:
2、系统配置文件引用图:
2框架搭建
1、新建一个项目,项目名称为:SSM(项目目录结构介绍)
2、在项目的中引入1.3中的jar包,引入路径如下:
SSM\WebContent\WEB-INF\lib
2、按照框架搭建的顺序一步一步引入1.4中的配置文件模板,配置文件的内容顺序按照文档顺序添加
2.1 web.xml配置
按照文档讲述顺序添加到配置文件web.xml,位置SSM\WebContent\WEB-INF\web.xml
2.1.1指定Spring字符集
Set Character
Encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf8
forceEncoding
true
Set Character
Encoding
/*
2.1.2引入spring-context.xml
contextConfigLocation
classpath:config/spring-context.xml
2.1.3配置Spring监听器
org.springframework.web.context.ContextLoaderListener
2.1.4引入spring-servlet.xml
spring
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:config/spring-servlet.xml
1
spring
/
2.2
spring-servlet.xml配置
按照文档讲述顺序添加到配置文件spring-servlet.xml,位置SSM\src\config\spring-servlet.xml
2.2.1静态资源配置
mapping="/static/**" /> -->
"/"mapping="/**"/>
2.2.2文件上传配置
"multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
"maxUploadSize"value="1000000"/>
2.2.3 @ResponseBody乱码配置
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
"messageConverters">
class="org.springframework.http.converter.StringHttpMessageConverter">
"supportedMediaTypes">
text/html;charset=UTF-8
2.2.4 freemarker配置
"freemarkerConfigurer"class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
"templateLoaderPath"value="/application/admin"/>
"defaultEncoding"value="UTF-8"/>
"freemarkerSettings">
"template_update_delay">10
"locale">zh_CN
"datetime_format">yyyy-MM-dd HH:mm:ss
"date_format">yyyy-MM-dd
"time_format">HH:mm:ss
"number_format">#.##
"freeMarkerViewResolver"class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
"contentType"value="text/html;charset=UTF-8"/>
"viewClass"value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
"suffix"value=".ftl"/>
"cache"value="true"/>
"exposeSessionAttributes"value="true"/>
"exposeRequestAttributes"value="true"/>
"exposeSpringMacroHelpers"value="true"/>
"allowSessionOverride"value="true"/>
"order"value="1"/>
2.2.5扫描Controller注解
"com.qianfeng"
use-default-filters="false">
"annotation"
expression="org.springframework.stereotype.Controller"/>
2.3
spring-context.xml配置
按照文档讲述顺序添加到配置文件spring-context.xml,位置SSM\src\config\spring-context.xml
2.3.1引入application-mybatis.xml
"./application-mybatis.xml"/>
2.3.2事务管理配置
"transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
"dataSource"ref="dataSource"/>
"txAdvice"transaction-manager="transactionManager">
"add*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"insert*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"create*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"delete*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"remove*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"update*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
"modify*"propagation="REQUIRED"read-only="false"
rollback-for="java.lang.Exception"/>
-->
"pointCut"
expression="execution(*
com.qianfeng..service.*.*(..))"/>
"pointCut"advice-ref="txAdvice"/>
2.3.3扫描Service注解
"com.qianfeng"
use-default-filters="false">
"annotation"
expression="org.springframework.stereotype.Service"/>
2.4 application-mybatis.xml配置
按照文档讲述顺序添加到配置文件application-mybatis.xml,位置SSM\src\config\application-mybatis.xml
2.4.1引入数据源文件application-datasource.xml
"./application-datasource.xml"/>
2.4.2 mybatis扫描配置
"sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
"dataSource"ref="dataSource"/>
"typeAliasesPackage"value="com.qianfeng.application.model"/>
"mapperLocations"value="classpath*:com/qianfeng/application
/mapping/*.xml"/>
"configurationProperties">
"logImpl">LOG4J
"org.mybatis.spring.mapper.MapperScannerConfigurer">
"basePackage"value="com.qianfeng.application.dao"/>
"sqlSessionFactoryBeanName"value="sqlSessionFactory"/>
2.5
application-datasource.xml配置
按照文档讲述顺序添加到配置文件application-datasource.xml,位置SSM\src\config\application-datasource.xml
2.5.1创建数据库
1、通过Navicat新建一个数据库
2、在新建的数据库中导入sql脚本
2.5.2数据库连接池配置
"dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close">
"url"value="jdbc:mysql://127.0.0.1:3306/ssm_oa_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull"/>
"username"value="root"/>
"password"value="root"/>
"filters"value="stat"/>
"maxActive"value="20"/>
"initialSize"value="10"/>
"maxWait"value="60000"/>
"minIdle"value="5"/>
"timeBetweenEvictionRunsMillis"value="3000"/>
"minEvictableIdleTimeMillis"value="300000"/>
"validationQuery"value="SELECT
'x'"/>
"testWhileIdle"value="true"/>
"testOnBorrow"value="false"/>
"testOnReturn"value="false"/>
"poolPreparedStatements"value="true"/>
"maxPoolPreparedStatementPerConnectionSize"value="100"/>
2.5.3 Spring与数据库的乱码(根据情况引入)
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
"messageConverters">
"com.qianfeng.common.tools.UTF8StringHttpMessageConverter">
3环境测试
3.1系统结构
3.1.1后台代码文件结构
配置文件路径:/SSM/src/config
后端业务类存放路径:/SSM/src/com/qianfeng/application
后端公共类存放路径:/SSM/src/com/qianfeng/common
前端代码存放路径:SSM\WebContent\application\admin
前端静态文件存放路径:SSM\WebContent \static
如下图:
3.1.2后台代码层次结构
3.2数据访问层
3.2.1代码生成工具
工具介绍:
使用:
1、将生成工具压缩包减压到某个目录
2、配置配置文件:generator.xml(引入数据库驱动包、修改数据库连接、配置生成代码存放的路径、配置需要生成代码的数据库表【3.2.2介绍】)
3、进入cmd命令行窗口
4、进入工具所在目录:cd /d D:/mybatis-generator-core-1.3.1
5、执行如下命令:
java -jar lib/mybatis-generator-core-1.3.1.jar -configfile generator.xml-overwrite
3.2.2生成代码
在generator.xm文件中配置(以SYS_ORG为例):
1、引入数据库驱动包
2、修改数据库连接
3、配置生成代码的路径
4、配置需要生成代码的数据库表
5、进入cmd命令行窗口,进入工具所在目录:cd /d E:/MyFolder/mybatis-generator-core-1.3.1
6、执行如下命令:
java -jar lib/mybatis-generator-core-1.3.1.jar -configfile generator.xml-overwrite
6、执行相关命令后生成如下代码
8、把生成的代码拷贝到项目中
8、生成代码分析
3.3数据访问层
1、在OrgMapper.xml新增一个简单列表查询方法
"queryOrgListByOrgParentId"resultMap="BaseResultMap"parameterType="java.util.Map">
select
"Base_Column_List"/>
from sys_org Owhere 1=1
"orgParentId
!= null and orgParentId != ''">
AND O.ORG_PARENT_ID = #{orgParentId,jdbcType=BIGINT}
2、在OrgMapper.java新增一个简单列表查询方法(注意方法名和参数与xml对应)
publicList queryOrgListByOrgParentId( Map
Object>paramMap);
3.3服务层
1、在\SSM\src\com\qianfeng\application下新建一个service包
2、在service包创建服务层接口类xxxService,在接口中创建方法:
publicList queryOrgListByOrgParentId( Map
Object>paramMap);
3、在service包创建服务层实现类xxxServiceImpl并实现xxxService接口
4、在xxxServiceImpl加入@Service注解,注入数据访问层后重新方法
(1)注解:@Service(value ="orgServiceImpl")
(2)引入数据访问层注入:
@Autowired
privateOrgMapperorgMapper;
(3)重写方法:
publicList queryOrgListByOrgParentId(MapparamMap) {
returnorgMapper.queryOrgListByOrgParentId(paramMap);
}
3.4控制层
1、在\SSM\src\com\qianfeng\application下新建一个controller包
2、在controller包中创建xxxxController类
3、在xxxxController类上加入注解和映射(映射可选)
@Controller
@RequestMapping("/xxx")
4、加入注入
@Resource(name="orgServiceImpl")
privateOrgServiceorgService;
5、创建方法
@RequestMapping(method=RequestMethod.GET,value="/queryOrgListByOrgParentId")
publicvoidqueryOrgListByOrgParentId(HttpServletRequestrequest,HttpServletResponseresponse){
MapparamMap=this.getParam(request);
ListretList=orgService.queryOrgListByOrgParentId(paramMap);
Gsongson=newGson();
StringresponseContent=gson.toJson(retList);
PrintWriterwriter=null;
try{
response.setCharacterEncoding("GBK");
//针对ajax中页面编码为GBK的情况,一定要加上以下两句
response.setHeader("Cache-Control","no-cache");
response.setContentType("text/html;charset=UTF-8");
writer=response.getWriter();
if(responseContent==null||"".equals(responseContent)
||"null".equals(responseContent)) {
writer.write("");
}else{
writer.write(responseContent);
}
}catch(IOExceptione) {
thrownewRuntimeException(e);
}finally{
if(writer!=null) {
writer.flush();
writer.close();
}
}//responseend
}
5、从模板中引入公共类BaseController.java,这个类中封装了一些方法。
3.5用浏览器测试环境
1、测试地址:
直接查看:http://localhost:8080/SSM/org/queryOrgListByOrgParentId
加入参数查看:http://localhost:8080/SSM/org/queryOrgListByOrgParentId?orgParentId=1
数据库中查看:SELECT * fromSYS_Org;
测试示例回顾:从浏览器端到数据库端
网友评论