SpringMVC 开发接口

来源:互联网 发布:java true false类型 编辑:程序博客网 时间:2024/06/05 21:18

上篇文章讲解了SpringMVC 入门,这篇文章使用SpringMVC 来开发接口。记得之前有一篇文章 java web开发(二) 接口开发,是使用Servlet开发的接口。如果你还未了解,可以先看看这篇文章。好了,我们进入主题。

      在开始这篇文章之前,请先阅读请参考java web开发(二) 接口开发 这篇文章。

一、搭建环境。这一步骤 请参考上篇文章, SpringMVC 入门浅谈。

二、接口数据设计,请参考java web开发(二) 接口开发 这篇文章。

三、具体实现。

      整个工程的目录结构如下图所示,

       

项目说明:

(1). action 供外部系统调用的接口类。

(2).business 业务实现类。

(3). json 处理json的类。(有关详细说明,请参考java web开发(二) 接口开发 这篇文章。

(4). model 实体类。

(5). service 具体的接口以及实现类。

       下面就主要讲解具体的接口调用实现类。

[java] view plain copy
  1. @Controller  
  2. public class StudentServlet {  
  3.   
  4.   
  5.     @RequestMapping("/getAllStudent")  
  6.     public void getAllStudent(HttpServletRequest request, HttpServletResponse response) {  
  7.         List<Students> list = new StudentServiceImpl().getAllStudents();  
  8.         ListObject listObject = new ListObject();  
  9.         listObject.setItems(list);  
  10.         listObject.setCode(StatusCode.CODE_SUCCESS);  
  11.         listObject.setMsg("访问成功");  
  12.         ResponseUtils.renderJson(response, JackJsonUtils.toJson(listObject, true));  
  13.     }  
  14.   
  15. }  
说明,StudentServlet 类实现了获取所有学生的方法,将json串传入至响应中。

其中ResponseUtils 如下,

[java] view plain copy
  1. /** 
  2.  * HttpServletResponse帮助类 
  3.  */  
  4. public class ResponseUtils {  
  5.   
  6. public static void renderJson(HttpServletResponse response, String text) {  
  7.         // System.out.print(text);  
  8.         render(response, "text/plain;charset=UTF-8", text);  
  9.     }  
  10.   
  11.   
  12. /** 
  13.      * 发送内容。使用UTF-8编码。 
  14.      *  
  15.      * @param response 
  16.      * @param contentType 
  17.      * @param text 
  18.      */  
  19.     public static void render(HttpServletResponse response, String contentType, String text) {  
  20.         response.setContentType(contentType);  
  21.         response.setCharacterEncoding("utf-8");  
  22.         response.setHeader("Pragma""No-cache");  
  23.         response.setHeader("Cache-Control""no-cache");  
  24.         response.setDateHeader("Expires"0);  
  25.         try {  
  26.             response.getWriter().write(text);  
  27.         } catch (IOException e) {  
  28.         }  
  29.     }  
  30. }  
ResponseUtils 是将字符串按照一定的规则写入到响应流中。

其他的类或者方法,此处就不再细说了。使用SpringMVC 来开发接口与使用Servlet开发接口,只是二者供外部调用的接口实现方式不一样,其他的都一样!

只要你看过java web开发(二) 接口开发 这篇文章,相信就能理解!后面会给出该工程的实例代码。

运行效果截图如下,

四、 补充。

 如果我们想要在jsp中显示接口数据,该如何实现呢?下面使用两种方式实现。

首先需要实现一个方法,

[java] view plain copy
  1. @RequestMapping("/getAllStudent.dbo")  
  2. public ModelAndView getAllStudent(HttpServletRequest request, HttpServletResponse response,ModelMap modelMap) {  
  3.     List<Students> list =new StudentServiceImpl().getAllStudents();  
  4.     modelMap.addAttribute("list", list);  
  5.     return new ModelAndView("result",modelMap);  
  6. }  
该方法返回一个ModelAndView,这个ModelAndView中包含返回的数据以及跳转的jsp页面。还记得我们在springmvc.xml中有一段配置文件,

[html] view plain copy
  1. <!--配置视图解析器:如何把handler 方法返回值解析为实际的物理视图  -->  
  2.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  3.     <property name="prefix" value="/WEB-INF/views/"></property>  
  4.     <property name="suffix" value=".jsp"></property>  
  5.     </bean>  
其中,‘prefix’是前缀,‘suffix’是后缀,组合在一起的路径就是‘/WEB-INF/views/*.jsp’,‘*’就是我们在ModelAndView中指定的。例如上面的‘new ModelAndView("result",modelMap)’中的‘result’,那么路径全地址就是‘/WEB-INF/views/result.jsp’。
下面我们就使用两种方法在jsp中显示数据。

1. 方法1,

[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <%@ page import="java.util.List"%>  
  4. <%@ page import="java.util.HashMap"%>  
  5. <%@ page import="cn.springmvc.model.Students"%>  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  7. <html>  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  10. <title>Insert title here</title>  
  11. </head>  
  12. <body>  
  13.     <h4>Success Page</h4>  
  14.     <%  
  15.         List<Students> list = (List<Students>) request.getAttribute("list");  
  16.     %>  
  17.     <table style="width: 100%">  
  18.         <tr>  
  19.             <td>name</td>  
  20.             <td>age</td>  
  21.             <td>sex</td>  
  22.         </tr>  
  23.         <%  
  24.             for (Students s : list) {  
  25.         %>  
  26.         <tr>  
  27.             <td>  
  28.                 <%  
  29.                     out.print(s.name);  
  30.                 %>  
  31.             </td>  
  32.             <td>  
  33.                 <%  
  34.                     out.print(s.age);  
  35.                 %>  
  36.             </td>  
  37.             <td>  
  38.                 <%  
  39.                     out.print(s.sex);  
  40.                 %>  
  41.             </td>  
  42.         </tr>  
  43.         <%  
  44.             }  
  45.         %>  
  46.   
  47.     </table>  
  48. </body>  
  49. </html>  
2. 方法2,

[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.   
  12.     <table style="width: 100%">  
  13.         <tr>  
  14.             <td>name</td>  
  15.             <td>age</td>  
  16.             <td>sex</td>  
  17.         </tr>  
  18.         <c:forEach var="student" items="${requestScope.list}"  
  19.             varStatus="status">  
  20.             <tr>  
  21.                 <td><c:out value="${student.name}" /></td>  
  22.                 <td><c:out value="${student.age}" /></td>  
  23.                 <td><c:out value="${student.sex}" /></td>  
  24.             </tr>  
  25.         </c:forEach>  
  26.     </table>  
  27.   
  28. </body>  
  29. </html>  
该方法需要额外导入jstl-*.jar。

两种方式显示的效果都一样。最后运行的效果如下图所示,

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


来源:http://blog.csdn.net/zxw136511485/article/details/52584497

原创粉丝点击