上篇文章讲解了SpringMVC 入门,这篇文章使用SpringMVC 来开发接口。记得之前有一篇文章 java web开发(二) 接口开发,是使用Servlet开发的接口。如果你还未了解,可以先看看这篇文章。好了,我们进入主题。
在开始这篇文章之前,请先阅读请参考java web开发(二) 接口开发 这篇文章。
一、搭建环境。这一步骤 请参考上篇文章, SpringMVC 入门浅谈。
二、接口数据设计,请参考java web开发(二) 接口开发 这篇文章。
三、具体实现。
整个工程的目录结构如下图所示,

项目说明:
(1). action 供外部系统调用的接口类。
(2).business 业务实现类。
(3). json 处理json的类。(有关详细说明,请参考java web开发(二) 接口开发 这篇文章。
(4). model 实体类。
(5). service 具体的接口以及实现类。
下面就主要讲解具体的接口调用实现类。
-
@Controller
-
public class StudentServlet {
-
-
-
@RequestMapping("/getAllStudent")
-
public void getAllStudent(HttpServletRequest request, HttpServletResponse response) {
-
List<Students> list = new StudentServiceImpl().getAllStudents();
-
ListObject listObject = new ListObject();
-
listObject.setItems(list);
-
listObject.setCode(StatusCode.CODE_SUCCESS);
-
listObject.setMsg("访问成功");
-
ResponseUtils.renderJson(response, JackJsonUtils.toJson(listObject, true));
-
}
-
-
}
说明,StudentServlet 类实现了获取所有学生的方法,将json串传入至响应中。
其中ResponseUtils 如下,
-
/**
-
* HttpServletResponse帮助类
-
*/
-
public class ResponseUtils {
-
-
public static void renderJson(HttpServletResponse response, String text) {
-
// System.out.print(text);
-
render(response, "text/plain;charset=UTF-8", text);
-
}
-
-
-
/**
-
* 发送内容。使用UTF-8编码。
-
*
-
* @param response
-
* @param contentType
-
* @param text
-
*/
-
public static void render(HttpServletResponse response, String contentType, String text) {
-
response.setContentType(contentType);
-
response.setCharacterEncoding("utf-8");
-
response.setHeader("Pragma", "No-cache");
-
response.setHeader("Cache-Control", "no-cache");
-
response.setDateHeader("Expires", 0);
-
try {
-
response.getWriter().write(text);
-
} catch (IOException e) {
-
}
-
}
-
}
ResponseUtils 是将字符串按照一定的规则写入到响应流中。
其他的类或者方法,此处就不再细说了。使用SpringMVC 来开发接口与使用Servlet开发接口,只是二者供外部调用的接口实现方式不一样,其他的都一样!
只要你看过java web开发(二) 接口开发 这篇文章,相信就能理解!后面会给出该工程的实例代码。
运行效果截图如下,

四、 补充。
如果我们想要在jsp中显示接口数据,该如何实现呢?下面使用两种方式实现。
首先需要实现一个方法,
-
@RequestMapping("/getAllStudent.dbo")
-
public ModelAndView getAllStudent(HttpServletRequest request, HttpServletResponse response,ModelMap modelMap) {
-
List<Students> list =new StudentServiceImpl().getAllStudents();
-
modelMap.addAttribute("list", list);
-
return new ModelAndView("result",modelMap);
-
}
该方法返回一个ModelAndView,这个ModelAndView中包含返回的数据以及跳转的jsp页面。还记得我们在springmvc.xml中有一段配置文件,
-
<!--配置视图解析器:如何把handler 方法返回值解析为实际的物理视图 -->
-
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-
<property name="prefix" value="/WEB-INF/views/"></property>
-
<property name="suffix" value=".jsp"></property>
-
</bean>
其中,‘prefix’是前缀,‘suffix’是后缀,组合在一起的路径就是‘/WEB-INF/views/*.jsp’,‘*’就是我们在ModelAndView中指定的。例如上面的‘new ModelAndView("result",modelMap)’中的‘result’,那么路径全地址就是‘/WEB-INF/views/result.jsp’。下面我们就使用两种方法在jsp中显示数据。
1. 方法1,
-
<%@ page language="java" contentType="text/html; charset=utf-8"
-
pageEncoding="utf-8"%>
-
<%@ page import="java.util.List"%>
-
<%@ page import="java.util.HashMap"%>
-
<%@ page import="cn.springmvc.model.Students"%>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
<title>Insert title here</title>
-
</head>
-
<body>
-
<h4>Success Page</h4>
-
<%
-
List<Students> list = (List<Students>) request.getAttribute("list");
-
%>
-
<table style="width: 100%">
-
<tr>
-
<td>name</td>
-
<td>age</td>
-
<td>sex</td>
-
</tr>
-
<%
-
for (Students s : list) {
-
%>
-
<tr>
-
<td>
-
<%
-
out.print(s.name);
-
%>
-
</td>
-
<td>
-
<%
-
out.print(s.age);
-
%>
-
</td>
-
<td>
-
<%
-
out.print(s.sex);
-
%>
-
</td>
-
</tr>
-
<%
-
}
-
%>
-
-
</table>
-
</body>
-
</html>
2. 方法2,
-
<%@ page language="java" contentType="text/html; charset=utf-8"
-
pageEncoding="utf-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
<title>Insert title here</title>
-
</head>
-
<body>
-
-
<table style="width: 100%">
-
<tr>
-
<td>name</td>
-
<td>age</td>
-
<td>sex</td>
-
</tr>
-
<c:forEach var="student" items="${requestScope.list}"
-
varStatus="status">
-
<tr>
-
<td><c:out value="${student.name}" /></td>
-
<td><c:out value="${student.age}" /></td>
-
<td><c:out value="${student.sex}" /></td>
-
</tr>
-
</c:forEach>
-
</table>
-
-
</body>
-
</html>
该方法需要额外导入jstl-*.jar。
两种方式显示的效果都一样。最后运行的效果如下图所示,

至此,有关使用SpringMVC 开发接口就结束!由于本人水平有限,该篇文章只是讲解了目前自己接触的有关知识!如果想要了解更多,请自行查看其它文章或者视频资料!
来源:http://blog.****.net/zxw136511485/article/details/52584497