OA项目环境搭建

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;

测试示例回顾:从浏览器端到数据库端


推荐阅读更多精彩内容