从零开始搭建maven+springmvc+mybatis web项目(3)---springmvc流程测试
2016-12-09 13:52
816 查看
前面的文章已经讲过了如何搭建一个maven+springmvc+mybatis的web项目环境。现在我们需要写一些实体类来跑一下springmvc的整体流程。
上面的图片是整个java后台的结构,用红线框出来的部分你们不用理会,首先,在java目录下面我新建了一个com.zhengtx的包,然后在包里面分了一个小模块,controller,dao,entity,service.
我们先看一下当一个请求过来的后台具体流程,url–>controller–>service–>serviceImpl–>dao–>sqlmap.xml.
这是后台执行的一个整体流程,当一个请求进来,它会被引流到TestController类里面,我们一般在TestController类调用TestService中声明的方法,TestService是一个接口,这个接口和接口中具体的方法在TestServiceImpl类中被实现了,而在TestServiceImpl类中,调用的是TestDao中声明的方法,TestDao也是一个接口,但是这个接口不需要被实现,这个接口中的方法名,和test-sqlmap.xml中的sql 语句的id必须是对应的,这样当调用TestDao中声明的方法的时候,它就会去对应的test-sqlmap.xml中寻找相应的sql语句同名的id,然后执行对应的sql语句。
我们先来看一下entity层,也就是实体层我新建了一个实体类,TestEntity,这个实体类中有连个元素,name,grade,对应的,在我在数据库建立的表中也有这两个字段,
我们再从dao层来看,我在dao层写了一个TestDao接口,在里面声明了自己需要用到的方法,新增方法和查询方法。该方法不需要具体实现。只需要声明即可。
然后我们看一下和dao层对应的sqlmap.xml文件。我把sqlmap.xml文件方法app-web/src/main/resources/sqlmap目录下,新建了一个test-sqlmap.xml文件。
这个sqlmap.xml文件,首先我们需要把所有的sql语句都配置在
在TestService中声明的方法是需要被实现才可以使用的,在TestServiceImpl类中,我们实现了add和search方法。在add方法的实现中我们调用了TestDao的add方法,在search方法的实现中我们调用了TestDao的search方法,这样,在TestController中调用TestService中声明的方法时,它会在TestServiceImpl中找到具体的方法实现并调用它,然后调用TestDao中声明的方法,通过dao与sqlmap.xml的关联,找到sqlmap.xml中的具体sql语句,然后对数据库进行读写。
最后,我们来看一个Controller层的编写。先上代码。
我们先来看一下方法声明的入参,和返回值,都是两个对象,
入参是一个TestForm对象,返回值是一个TestBack对象,
这里面有两个变量name和grade,springmvc可以对请求中的包含的数据进行分析,并把变量名相同的数据封装到TestForm对象中,
然后,我们可以通过TestForm的get方法,得到请求体中的数据。
我们再来看一下addTest接口的返回值。TestBack,
这个类中有三个变量,error_no错误号,error_info错误信息,data_list返回数据实体。
在获取到数据库数据之后,我们可以将返回的数据放到data_list中,并返回相应的错误号和错误信息,错误号0表示执行成功。我们接口返回的是一个对象,但是因为我们配置中配置了fastjson,可以将返回的对象自动转换成json格式传给前端,所以我们在前端调用该接口的时候获取到的是json格式的数据。
最后,我们来测试一下接口,我们配置好tomcat服务器(具体方法可以网上找,这个很多的),然后打开浏览器 输入add接口的地址
然后我们来测试一个search接口,打开浏览器输入
可以看到,我们刚刚插入的数据已经给我们返回了。到这里,maven+spring+mybatis框架的搭建和测试就已经完成了。如果有不对的地方或者任何疑问,欢迎大家指出。
(有关于注解部分,如@Controller,@Service,@Repository,@Resource,@RequestMapping(“/search”),@ResponseBody这些注解的作用我就不在这里解释了,大家可以上网查一下。)
上面的图片是整个java后台的结构,用红线框出来的部分你们不用理会,首先,在java目录下面我新建了一个com.zhengtx的包,然后在包里面分了一个小模块,controller,dao,entity,service.
我们先看一下当一个请求过来的后台具体流程,url–>controller–>service–>serviceImpl–>dao–>sqlmap.xml.
这是后台执行的一个整体流程,当一个请求进来,它会被引流到TestController类里面,我们一般在TestController类调用TestService中声明的方法,TestService是一个接口,这个接口和接口中具体的方法在TestServiceImpl类中被实现了,而在TestServiceImpl类中,调用的是TestDao中声明的方法,TestDao也是一个接口,但是这个接口不需要被实现,这个接口中的方法名,和test-sqlmap.xml中的sql 语句的id必须是对应的,这样当调用TestDao中声明的方法的时候,它就会去对应的test-sqlmap.xml中寻找相应的sql语句同名的id,然后执行对应的sql语句。
我们先来看一下entity层,也就是实体层我新建了一个实体类,TestEntity,这个实体类中有连个元素,name,grade,对应的,在我在数据库建立的表中也有这两个字段,
public class TestEntity{ private static final long serialVersionUID = 1L; private String name; private String grade; public String getName() {return name; } public void setName(String name) {this.name = name;} public String getGrade() {return grade;} public void setGrade(String grade) {this.grade = grade;} }
我们再从dao层来看,我在dao层写了一个TestDao接口,在里面声明了自己需要用到的方法,新增方法和查询方法。该方法不需要具体实现。只需要声明即可。
package com.zhengtx.dao; import com.zhengtx.entity.TestEntity; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface TestDao { public List<TestEntity> search(TestEntity testEntity); public void add(TestEntity testEntity); }
然后我们看一下和dao层对应的sqlmap.xml文件。我把sqlmap.xml文件方法app-web/src/main/resources/sqlmap目录下,新建了一个test-sqlmap.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.zhengtx.dao.TestDao"> <select id="search" resultType="TestEntity"> select name,grade from test where 1 = 1 <if test="name != null and name != ''"> and name = #{name} </if> <if test="grade != null and grade != ''"> and grade = #{grade} </if> </select> <insert id="add" > INSERT into test( name,grade ) values( #{name}, #{grade} ) </insert> </mapper>
这个sqlmap.xml文件,首先我们需要把所有的sql语句都配置在
<mapper></mapper>标签里面,在 mapper标签中,我们需要配置一个namespace属性,这个属性及其重要,这个属性是指明我们需要将这个sqlmap.xml和dao包中的哪一个dao接口对应,这里我们设置的是和dao包中的TestDao接口对应,在TestDao接口中我们声明了两个方法,add,search,那么,如果我们需要用到这两个方法,我们就需要在相应的test-sqlmap.xml文件中写入两个sql语句,这里我们写的是一个
public interface TestService { public List<TestEntity> search(TestEntity testEntity); public void add(TestEntity testEntity); }
在TestService中声明的方法是需要被实现才可以使用的,在TestServiceImpl类中,我们实现了add和search方法。在add方法的实现中我们调用了TestDao的add方法,在search方法的实现中我们调用了TestDao的search方法,这样,在TestController中调用TestService中声明的方法时,它会在TestServiceImpl中找到具体的方法实现并调用它,然后调用TestDao中声明的方法,通过dao与sqlmap.xml的关联,找到sqlmap.xml中的具体sql语句,然后对数据库进行读写。
@Service public class TestServiceImpl implements TestService{ @Resource private TestDao testDao; public List<TestEntity> search(TestEntity testEntity){ return testDao.search(testEntity); } public void add(TestEntity testEntity){ testDao.add(testEntity); } }
最后,我们来看一个Controller层的编写。先上代码。
@Controller public class TestController { @Resource private TestService testService; @RequestMapping("/search") @ResponseBody public TestBack searchTest(TestForm form){ TestBack back = new TestBack(); TestEntity entity = new TestEntity(); entity.setName(form.getName()); entity.setGrade(form.getGrade()); back.setData_list(testService.search(entity)); back.setError_no(0); back.setError_info("ok"); return back; } @RequestMapping("/add") @ResponseBody public TestBack addTest(TestForm form){ TestBack back = new TestBack(); TestEntity entity = new TestEntity(); entity.setName(form.getName()); entity.setGrade(form.getGrade()); testService.add(entity); back.setError_no(0); back.setError_info("ok"); return back; } }
我们先来看一下方法声明的入参,和返回值,都是两个对象,
public TestBack addTest(TestForm form)
入参是一个TestForm对象,返回值是一个TestBack对象,
public class TestForm { private String name; private String grade; public String getName() {return name;} public void setName(String name) {this.name = name;} public String getGrade() {return grade;} public void setGrade(String grade) {this.grade = grade;} }
这里面有两个变量name和grade,springmvc可以对请求中的包含的数据进行分析,并把变量名相同的数据封装到TestForm对象中,
public TestBack addTest(TestForm form),这个方法,当请求的url的这个方法的RequestMapping的属性匹配的时候,springmvc将会执行这个addTest方法,并从请求中获取数据,将对应的变量注入到TestForm对象的form实例中。
然后,我们可以通过TestForm的get方法,得到请求体中的数据。
我们再来看一下addTest接口的返回值。TestBack,
public class TestBack<T>{ private int error_no; private String error_info; private T data_list; public int getError_no() { return error_no; } public void setError_no(int error_no) { this.error_no = error_no; } public String getError_info() { return error_info; } public void setError_info(String error_info) { this.error_info = error_info; } public T getData_list() { return data_list; } public void setData_list(T data_list) { this.data_list = data_list; } }
这个类中有三个变量,error_no错误号,error_info错误信息,data_list返回数据实体。
back.setData_list(testService.search(entity)); back.setError_no(0); back.setError_info("ok");
在获取到数据库数据之后,我们可以将返回的数据放到data_list中,并返回相应的错误号和错误信息,错误号0表示执行成功。我们接口返回的是一个对象,但是因为我们配置中配置了fastjson,可以将返回的对象自动转换成json格式传给前端,所以我们在前端调用该接口的时候获取到的是json格式的数据。
最后,我们来测试一下接口,我们配置好tomcat服务器(具体方法可以网上找,这个很多的),然后打开浏览器 输入add接口的地址
http://localhost:8888/add?name=test&grade=100;并传入两个参数name,grade。回车,然后可以看到服务器返回的信息
{"error_info":"ok","error_no":0},数据库中也已经有了数据了,
然后我们来测试一个search接口,打开浏览器输入
http://localhost:8888/search不传入任何参数,可以看到服务器给我们返回的信息,
{"data_list":[{"grade":"100","name":"test"}],"error_info":"ok","error_no":0}
可以看到,我们刚刚插入的数据已经给我们返回了。到这里,maven+spring+mybatis框架的搭建和测试就已经完成了。如果有不对的地方或者任何疑问,欢迎大家指出。
(有关于注解部分,如@Controller,@Service,@Repository,@Resource,@RequestMapping(“/search”),@ResponseBody这些注解的作用我就不在这里解释了,大家可以上网查一下。)
相关文章推荐
- 从零开始搭建maven+springmvc+mybatis web项目(2)---springmvc配置文件编写
- 从零开始搭建maven+springmvc+mybatis web项目(1)---maven项目目录创建
- 关于maven+springMVC+mybatis搭建的web项目问题
- 使用myeclipse搭建带maven的ava web项目(Spring+SpringMVC+Mybatis)
- spring SpringMVC MyBatis 搭建项目 MavenWeb项目
- 搭建基于SpringMVC+MyBatis+Maven的web项目
- SpringMvc+MyBatis+MySQL+Maven+Redis搭建一个基础的web项目
- 【web开发】Eclipse中SpringMVC+Mybatis+Maven搭建的项目框架(SMM框架)
- 基于Maven项目,搭建Spring+SpringMVC+MyBatis的WEB项目(待更新)
- Spring 、SpringMVC、Mybatis、MySQL、Maven、Tomcat搭建JavaWeb项目流程---学习笔记(一)工具准备及环境配置
- 三、maven项目搭建 springmvc+ spring + mybatis(springmvc搭建)
- IDEA搭建SpringBoot+Maven+Mybatis+MySQL-Web项目流程
- Intellij IDEA采用Maven+Spring MVC+Hibernate的架构搭建一个java web项目
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
- 项目SpringMVC+Spring+Mybatis 整合环境搭建(2)-> 测试Spring+Mybatis 环境
- MAVEN 搭建基于springmvc web项目+jetty-maven-plugin测试
- 基于maven的springMvc+Mybatis,搭建项目的时候发现一些问题这里例举下
- 使用Maven搭建Spring+SpringMVC+Mybatis+ehcache项目
- 手把手教你搭建自己的Java Web(Android)项目(SpringMVC + Mybatis服务端,Html5 Web端, Android客户端实现)