本文章素材来源于网易云课堂:https://study.163.com/course/courseMain.htm?courseId=1003862031
在properties里面进行设置webapp下的目录文件:
为了开发的方便, 还需对maven工程进行两个配置(setting.xml)
①镜像(使下载jar包的速度加快)
②JDK和编译器的版本
maven的中央仓库(https://mvnrepository.com/)去中央仓库
Springmvc和spring的jar包
①Spring webmvc
②Spring jdbc
③Spring Aspects
Mybatis相关的包:
①mybatis Generator Core
Mybatis整合spring的适配包
①c3p0
②MySQL connector
Jstl , servlet-api , junit等其他包
①jstl
②Servlet api
注意: 为了避免与服务器冲突, 加上provided
③junit
④springTest
到bootstrap官网下载:www.bootcss.com
下载后解压之后得到此文件夹:
使用可参考官方文档:https://v3.bootcss.com/getting-started/#download
如果想使我们写的jsp界面变得好看,就可以直接用bootstrap库里面的样式!
将下载的bootstrap-3.3.7-dist这个文件夹放在项目的static目录下,并在jsp页面引入(bootstrap.min.js和bootstrap.min.css):
bootstrap需要用到jQuery,因此引入jquery:
三步做完之后,我们就可以使用bootstrap里面所有的样式了!
到bootstrap中文网,点击全局css样式
运用上里面的class属性,就可以实现了!
更多样式只需要进入官方文档进行搜索使用!
配置dispatcherServlet,有两种方法:
1.在此处配置springMVC的路径
但是一般都用方法二:
不指定其位置,而是删去标签,将改为dispatcherServlet,并在web.xml的同级目录下添加springMVC的配置文件,名字改为servlet-name-servlet,即dispatcherServlet-servlet。
并在web.xml的同级目录下添加springMVC的配置文件,命名为:dispatcherservlet-servlet
使用Ctrl+shift+T,进行查找类文件:CharacterEncodingFilter,然后复制类名全路径,放入中
处理乱码的代码如下(配置在web.xml中):
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceRequestEncoding
true
forceResponseEncoding
true
characterEncodingFilter
/*
使用Ctrl+shift+T,进行查找类文件:HiddenHTTPMethodFilter,然后复制类名全路径,放入中
设置请求为rest风格的代码如下(配置在web.xml中):
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
/*
第一步:使用context:component-scan组件
然后将基础包配置为所有包,再禁用掉其默认的规则,设为false
当将其默认规则禁用之后,就只扫描里面的包了。
1.将springMvc不能处理的请求交给tomcat,实现动态和静态都可以处理
2.能支持springMVC一些更高级的功能,如映射动态请求、JSR303交验、快捷地ajax请求等。。
spring的包扫描与springmvc的不同,
Spring父容器负责所有其他非@Controller注解的Bean的注册,而SpringMVC只负责@Controller注解的Bean的注册
因此,spring中配置如下:
以上可以看出,没有禁用掉默认的规则,就是除了下面的,都扫描!
配置数据源首先要建一个bean,ID为DataSource,class为c3p0,“com.mchange.v2.c3p0.CombopoolDataSource”
数据源的信息一般不写死,而是写在创建的dbconfig.properties中,在spring的配置文件中使用property标签进行引入即可:
①配置sqlsessionFactory
下面是上图的右半部分value值:
②配置扫描器,将mybatis的接口的实现(此实现是一个代理对象)加入到IOC容器中
首先在/WEB-INF/applicationContext.xml添加以下内容:
注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。
下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。
首先就是配置事务的传播特性,如下:
需要注意的地方:
(1) advice(建议)的命名:由于每个模块都会有自己的Advice,所以在命名上需要作出规范,初步的构想就是模块名+Advice(只是一种命名规范)。
(2) tx:attribute标签所配置的是作为事务的方法的命名类型。
如
其中*为通配符,即代表以save为开头的所有方法,即表示符合此命名规则的方法作为一个事务。
propagation="REQUIRED"代表支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
(3) aop:pointcut标签配置参与事务的类,由于是在Service中进行数据库业务操作,配的应该是包含那些作为事务的方法的Service类。
首先应该特别注意的是id的命名,同样由于每个模块都有自己事务切面,所以我觉得初步的命名规则因为 all+模块名+ServiceMethod。而且每个模块之间不同之处还在于以下一句:
expression=“execution(* com.test.testAda.test.model.service..(…))”
其中第一个代表返回值,第二代表service下子包,第三个*代表方法名,“(…)”代表方法参数。
(4) aop:advisor标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。
因为mybatis整合到spring中了,因此数据源、sql工厂等配置都写到了spring的配置文件中
在mybatis的配置文件中只需要写:
文件头—固定的
另外可以选择性把公共的配置写进来,如:驼峰命名规则、类型别名等。
①编写一个逆向工程的配置文件
由于此配置文件内容较多,请参考我的另一篇博客:
https://blog.csdn.net/IT_lukaifang/article/details/90743669
②编写一个运行的java文件,让其应用上配置文件,对bean、dao接口、mapper等进行生成:
到http://www.mybatis.org/generator/running/runningWithJava.html拿到如下代码:
List warnings = new ArrayList();
boolean overwrite = true;
File configFile = new File("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
然后写一个类,将其configFile 改为自己的配置文件名,再写入main方法运行即可!
在使用mybatis的逆向工程生成了mapper文件之后,就得根据需要修改mapper文件
如自动生成的查询所有的sql,我们有时需要联合查询出外键表的数据,就需要进行手动的修改。
注意!
dao层的sql写完之后,需要去数据库软件中进行测试,必须先把dao层打通再往下写,写一层,测一层!
一般的,我们要进行单元测试的搭建一般会:
先写一个测试类,然后在测试方法上打上@Test标签,创建一个SpringIoc容器,再从容器获得mapper,如下:
但是,spring的项目可以使用spring的单元测试,可以自动注入我们所需的组件。
因此我们用以下步骤进行单元测试的搭建:
①导入SpringTest模块
在jar包导入的时候,导入这个:
②测试类打上ContestConfiguration注解来指定Spring配置文件的位置:
③测试类打上Junit的注解@RunWith来指定将使用哪个单元测试
④直接autowired注入需要测试的mapper即可!
⑤在测试方法中调用方法进行测试即可!