`
zzc1684
  • 浏览: 1224783 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

SpringMVC+Json构建基于Restful风格的应用

阅读更多

一、spring 版本:spring-framework-3.2.7.RELEASE

 

二、所需其它Jar包:

 

 

 

 

三、主要代码:

 

web.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     version="2.5">  
  6.   
  7.     <context-param>  
  8.         <param-name>log4jConfigLocation</param-name>  
  9.         <param-value>classpath:log4j.properties</param-value>  
  10.     </context-param>  
  11.     <context-param>  
  12.         <param-name>log4jRefreshInterval</param-name>  
  13.         <param-value>60000</param-value>  
  14.     </context-param>  
  15.     <context-param>  
  16.         <param-name>contextConfigLocation</param-name>  
  17.         <param-value>classpath:applicationContext.xml</param-value>  
  18.     </context-param>  
  19.   
  20.     <!-- 编码过虑 -->  
  21.     <filter>  
  22.         <filter-name>encodingFilter</filter-name>  
  23.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  24.         <init-param>  
  25.             <param-name>encoding</param-name>  
  26.             <param-value>UTF-8</param-value>  
  27.         </init-param>  
  28.         <init-param>  
  29.             <param-name>forceEncoding</param-name>  
  30.             <param-value>true</param-value>  
  31.         </init-param>  
  32.     </filter>  
  33.     <filter-mapping>  
  34.         <filter-name>encodingFilter</filter-name>  
  35.         <url-pattern>/*</url-pattern>  
  36.     </filter-mapping>  
  37.   
  38.     <!-- Spring监听 -->  
  39.     <listener>  
  40.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  41.     </listener>  
  42.   
  43.     <!-- Spring MVC DispatcherServlet -->  
  44.     <servlet>  
  45.         <servlet-name>springMVC3</servlet-name>  
  46.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  47.         <init-param>  
  48.             <param-name>contextConfigLocation</param-name>  
  49.             <param-value>classpath:springMVC-servlet.xml</param-value>  
  50.         </init-param>  
  51.         <load-on-startup>1</load-on-startup>  
  52.     </servlet>  
  53.     <servlet-mapping>  
  54.         <servlet-name>springMVC3</servlet-name>  
  55.         <url-pattern>/</url-pattern>  
  56.     </servlet-mapping>  
  57.   
  58.     <!-- 解决HTTP PUT请求Spring无法获取请求参数的问题 -->  
  59.     <filter>  
  60.         <filter-name>HiddenHttpMethodFilter</filter-name>  
  61.         <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
  62.     </filter>  
  63.     <filter-mapping>  
  64.         <filter-name>HiddenHttpMethodFilter</filter-name>  
  65.         <servlet-name>springMVC3</servlet-name>  
  66.     </filter-mapping>  
  67.   
  68.   
  69.     <display-name>UikitTest</display-name>  
  70.     <welcome-file-list>  
  71.         <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>  
  72.     </welcome-file-list>  
  73.   
  74. </web-app>  


springMVC-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans default-lazy-init="true"  
  3.     xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  7.     xsi:schemaLocation="  
  8.        http://www.springframework.org/schema/beans   
  9.        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
  10.        http://www.springframework.org/schema/mvc   
  11.        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd     
  12.        http://www.springframework.org/schema/context   
  13.        http://www.springframework.org/schema/context/spring-context-3.1.xsd">  
  14.   
  15.     <!-- 注解驱动 -->  
  16.     <mvc:annotation-driven />  
  17.   
  18.     <!-- 扫描包 -->  
  19.     <context:component-scan base-package="com.citic.test.action" />  
  20.   
  21.     <!-- 用于页面跳转,根据请求的不同跳转到不同页面,如请求index.do则跳转到/WEB-INF/jsp/index.jsp -->  
  22.     <bean id="findJsp"  
  23.         class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />  
  24.   
  25.     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  26.         <property name="mappings">  
  27.             <props>  
  28.                 <prop key="index.do">findJsp</prop><!-- 表示index.do转向index.jsp页面 -->  
  29.                 <prop key="first.do">findJsp</prop><!-- 表示first.do转向first.jsp页面 -->  
  30.             </props>  
  31.         </property>  
  32.     </bean>  
  33.   
  34.     <!-- 视图解析 -->  
  35.     <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">  
  36.         <!-- 返回的视图模型数据需要经过jstl来处理 -->  
  37.         <property name="viewClass"  
  38.             value="org.springframework.web.servlet.view.JstlView" />  
  39.         <property name="prefix" value="/WEB-INF/jsp/" />  
  40.         <property name="suffix" value=".jsp" />  
  41.     </bean>  
  42.   
  43.     <!-- 对静态资源文件的访问 不支持访问WEB-INF目录 -->  
  44.     <mvc:default-servlet-handler />  
  45.   
  46.     <!-- 对静态资源文件的访问 支持访问WEB-INF目录 -->  
  47.     <!-- <mvc:resources location="/uikit-2.3.1/" mapping="/uikit-2.3.1/**" /> -->  
  48.   
  49.       
  50.     <bean id="stringConverter" 
  51. class="org.springframework.http.converter.StringHttpMessageConverter">  
  52.         <property name="supportedMediaTypes">  
  53.             <list>  
  54.                 <value>text/plain;charset=UTF-8</value>  
  55.             </list>  
  56.         </property>  
  57.     </bean>  
  58.   
  59.     <!-- 输出对象转JSON支持 -->  
  60.     <bean id="jsonConverter"  
  61.         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>  
  62.     <bean  
  63.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  64.         <property name="messageConverters">  
  65.             <list>  
  66.                 <ref bean="stringConverter"/>  
  67.                 <ref bean="jsonConverter" />  
  68.             </list>  
  69.         </property>  
  70.     </bean>  
  71.   
  72. </beans>  


Controller:

  1. package com.citic.test.action;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import net.sf.json.JSONObject;  
  7.   
  8. import org.apache.log4j.Logger;  
  9. import org.springframework.stereotype.Controller;  
  10. import org.springframework.web.bind.annotation.PathVariable;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.RequestMethod;  
  13. import org.springframework.web.bind.annotation.RequestParam;  
  14. import org.springframework.web.bind.annotation.ResponseBody;  
  15.   
  16. import com.citic.test.entity.Person;  
  17.   
  18. /** 
  19.  * 基于Restful风格架构测试 
  20.  *  
  21.  * @author dekota 
  22.  * @since JDK1.5 
  23.  * @version V1.0 
  24.  * @history 2014-2-15 下午3:00:12 dekota 新建 
  25.  */  
  26. @Controller  
  27. public class DekotaAction {  
  28.   
  29.     /** 日志实例 */  
  30.     private static final Logger logger = Logger.getLogger(DekotaAction.class);  
  31.   
  32.     @RequestMapping(value = "/hello", produces = "text/plain;charset=UTF-8")  
  33.     public @ResponseBody  
  34.     String hello() {  
  35.         return "你好!hello";  
  36.     }  
  37.   
  38.     @RequestMapping(value = "/say/{msg}", produces = "application/json;charset=UTF-8")  
  39.     public @ResponseBody  
  40.     String say(@PathVariable(value = "msg") String msg) {  
  41.         return "{\"msg\":\"you say:'" + msg + "'\"}";  
  42.     }  
  43.   
  44.     @RequestMapping(value = "/person/{id:\\d+}", method = RequestMethod.GET)  
  45.     public @ResponseBody  
  46.     Person getPerson(@PathVariable("id"int id) {  
  47.         logger.info("获取人员信息id=" + id);  
  48.         Person person = new Person();  
  49.         person.setName("张三");  
  50.         person.setSex("男");  
  51.         person.setAge(30);  
  52.         person.setId(id);  
  53.         return person;  
  54.     }  
  55.   
  56.     @RequestMapping(value = "/person/{id:\\d+}", method = RequestMethod.DELETE)  
  57.     public @ResponseBody  
  58.     Object deletePerson(@PathVariable("id"int id) {  
  59.         logger.info("删除人员信息id=" + id);  
  60.         JSONObject jsonObject = new JSONObject();  
  61.         jsonObject.put("msg""删除人员信息成功");  
  62.         return jsonObject;  
  63.     }  
  64.   
  65.     @RequestMapping(value = "/person", method = RequestMethod.POST)  
  66.     public @ResponseBody  
  67.     Object addPerson(Person person) {  
  68.         logger.info("注册人员信息成功id=" + person.getId());  
  69.         JSONObject jsonObject = new JSONObject();  
  70.         jsonObject.put("msg""注册人员信息成功");  
  71.         return jsonObject;  
  72.     }  
  73.   
  74.     @RequestMapping(value = "/person", method = RequestMethod.PUT)  
  75.     public @ResponseBody  
  76.     Object updatePerson(Person person) {  
  77.         logger.info("更新人员信息id=" + person.getId());  
  78.         JSONObject jsonObject = new JSONObject();  
  79.         jsonObject.put("msg""更新人员信息成功");  
  80.         return jsonObject;  
  81.     }  
  82.   
  83.     @RequestMapping(value = "/person", method = RequestMethod.PATCH)  
  84.     public @ResponseBody  List<Person> 
  85.        listPerson(@RequestParam(value = "name", required = false, defaultValue = "") String name) {  
  86.   
  87.         logger.info("查询人员name like " + name);  
  88.         List<Person> lstPersons = new ArrayList<Person>();  
  89.   
  90.         Person person = new Person();  
  91.         person.setName("张三");  
  92.         person.setSex("男");  
  93.         person.setAge(25);  
  94.         person.setId(101);  
  95.         lstPersons.add(person);  
  96.   
  97.         Person person2 = new Person();  
  98.         person2.setName("李四");  
  99.         person2.setSex("女");  
  100.         person2.setAge(23);  
  101.         person2.setId(102);  
  102.         lstPersons.add(person2);  
  103.   
  104.         Person person3 = new Person();  
  105.         person3.setName("王五");  
  106.         person3.setSex("男");  
  107.         person3.setAge(27);  
  108.         person3.setId(103);  
  109.         lstPersons.add(person3);  
  110.   
  111.         return lstPersons;  
  112.     }  
  113.   
  114. }  

 

 

index.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11. <head>  
  12. <base href="<%=basePath%>">  
  13.   
  14. <title>Uikit Test</title>  
  15.     <meta http-equiv="pragma" content="no-cache">  
  16.     <meta http-equiv="cache-control" content="no-cache">  
  17.     <meta http-equiv="expires" content="0">  
  18.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.     <meta http-equiv="description" content="This is my page">  
  20.     <link rel="stylesheet" type="text/css"   href="uikit-2.3.1/css/uikit.gradient.min.css">  
  21.     <link rel="stylesheet" type="text/css" href="uikit-2.3.1/addons/css/notify.gradient.min.css">  
  22. </head>  
  23. <body>  
  24. <div  
  25.     style="width:800px;margin-top:10px;margin-left: auto;margin-right: auto;text-align: center;">  
  26.     <h2>Uikit Test</h2>  
  27. </div>  
  28. <div style="width:800px;margin-left: auto;margin-right: auto;">  
  29.     <fieldset class="uk-form">  
  30.         <legend>Uikit表单渲染测试</legend>  
  31.         <div class="uk-form-row">  
  32.             <input type="text" class="uk-width-1-1">  
  33.         </div>  
  34.         <div class="uk-form-row">  
  35.             <input type="text" class="uk-width-1-1 uk-form-success">  
  36.         </div>  
  37.         <div class="uk-form-row">  
  38.             <input type="text" class="uk-width-1-1 uk-form-danger">  
  39.         </div>  
  40.         <div class="uk-form-row">  
  41.             <input type="text" class="uk-width-1-1">  
  42.         </div>  
  43.         <div class="uk-form-row">  
  44.             <select id="form-s-s">  
  45.                 <option>---请选择---</option>  
  46.                 <option></option>  
  47.                 <option></option>  
  48.             </select>  
  49.         </div>  
  50.         <div class="uk-form-row">  
  51.             <input type="date" id="form-h-id" />  
  52.         </div>  
  53.     </fieldset>  
  54.     <fieldset class="uk-form">  
  55.         <legend>基于Restful架构风格的资源请求测试</legend>  
  56.         <button class="uk-button uk-button-primary uk-button-large" id="btnGet">获取人员GET</button>  
  57.         <button class="uk-button uk-button-primary uk-button-large" id="btnAdd">添加人员POST</button>  
  58.         <button class="uk-button uk-button-primary uk-button-large" id="btnUpdate">更新人员PUT</button>  
  59.         <button class="uk-button uk-button-danger uk-button-large" id="btnDel">删除人员DELETE</button>  
  60.         <button class="uk-button uk-button-primary uk-button-large" id="btnList">查询列表PATCH</button>  
  61.     </fieldset>  
  62. </div>  
  63.   
  64. <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>  
  65. <script type="text/javascript" src="uikit-2.3.1/js/uikit.min.js"></script>  
  66. <script type="text/javascript" src="uikit-2.3.1/addons/js/notify.min.js"></script>  
  67. <script type="text/javascript">  
  68.     (function(window,$){  
  69.   
  70.         var dekota={  
  71.               
  72.             url:'',  
  73.   
  74.             init:function(){  
  75.                 dekota.url='<%=basePath%>';  
  76.                 $.UIkit.notify("页面初始化完成", {status:'info',timeout:500});  
  77.                 $("#btnGet").click(dekota.getPerson);  
  78.                 $("#btnAdd").click(dekota.addPerson);  
  79.                 $("#btnDel").click(dekota.delPerson);  
  80.                 $("#btnUpdate").click(dekota.updatePerson);  
  81.                 $("#btnList").click(dekota.listPerson);  
  82.             },  
  83.             getPerson:function(){  
  84.                 $.ajax({  
  85.                     url: dekota.url + 'person/101/',  
  86.                     type: 'GET',  
  87.                     dataType: 'json'  
  88.                 }).done(function(data, status, xhr) {  
  89.                     $.UIkit.notify("获取人员信息成功", {status:'success',timeout:1000});  
  90.                 }).fail(function(xhr, status, error) {  
  91.                     $.UIkit.notify("请求失败!", {status:'danger',timeout:2000});  
  92.                 });  
  93.             },  
  94.             addPerson:function(){  
  95.                 $.ajax({  
  96.                     url: dekota.url + 'person',  
  97.                     type: 'POST',  
  98.                     dataType: 'json',  
  99.                     data: {id: 1,name:'张三',sex:'男',age:23}  
  100.                 }).done(function(data, status, xhr) {  
  101.                     $.UIkit.notify(data.msg, {status:'success',timeout:1000});  
  102.                 }).fail(function(xhr, status, error) {  
  103.                     $.UIkit.notify("请求失败!", {status:'danger',timeout:2000});  
  104.                 });  
  105.             },  
  106.             delPerson:function(){  
  107.                 $.ajax({  
  108.                     url: dekota.url + 'person/109',  
  109.                     type: 'DELETE',  
  110.                     dataType: 'json'  
  111.                 }).done(function(data, status, xhr) {  
  112.                     $.UIkit.notify(data.msg, {status:'success',timeout:1000});  
  113.                 }).fail(function(xhr, status, error) {  
  114.                     $.UIkit.notify("请求失败!", {status:'danger',timeout:2000});  
  115.                 });  
  116.             },  
  117.             updatePerson:function(){  
  118.                 $.ajax({  
  119.                     url: dekota.url + 'person',  
  120.                     type: 'POST',//注意在传参数时,加:_method:'PUT' 将对应后台的PUT请求方法  
  121.                     dataType: 'json',  
  122.                     data: {_method:'PUT',id: 221,name:'王五',sex:'男',age:23}  
  123.                 }).done(function(data, status, xhr) {  
  124.                     $.UIkit.notify(data.msg, {status:'success',timeout:1000});  
  125.                 }).fail(function(xhr, status, error) {  
  126.                     $.UIkit.notify("请求失败!", {status:'danger',timeout:2000});  
  127.                 });  
  128.             },  
  129.             listPerson:function(){  
  130.                 $.ajax({  
  131.                     url: dekota.url + 'person',  
  132.                     type: 'POST',//注意在传参数时,加:_method:'PATCH' 将对应后台的PATCH请求方法  
  133.                     dataType: 'json',  
  134.                     data: {_method:'PATCH',name: '张三'}  
  135.                 }).done(function(data, status, xhr) {  
  136.                     $.UIkit.notify("查询人员信息成功", {status:'success',timeout:1000});  
  137.                 }).fail(function(xhr, status, error) {  
  138.                     $.UIkit.notify("请求失败!", {status:'danger',timeout:2000});  
  139.                 });  
  140.             }  
  141.         };  
  142.         window.dekota=(window.dekota)?window.dekota:dekota;  
  143.         $(function(){  
  144.             dekota.init();  
  145.         });  
  146.     })(window,jQuery);  
  147.   
  148. </script>  
  149. </body>  
  150. </html>  

 

部分调试效果:

 

 

 

分享到:
评论

相关推荐

    html+SpringMVC+MyBaties+Json实现分类查询并导出EXCEL

    2. **SpringMVC**:SpringMVC是Spring框架的一个模块,用于构建基于Java的Web应用程序。它提供了模型-视图-控制器(MVC)架构模式,分离了业务逻辑、数据展示和用户交互。SpringMVC处理HTTP请求,调用后端服务,并将...

    分布式框架简介SSM组合+ springmvc+mybatis+shiro+restful+bootstrap

    ### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...

    springmvc+ext4.1+json配置(含jar)

    "springmvc+ext4.1+json配置"的组合不仅提高了开发效率,还使得应用程序具有高度的可扩展性和灵活性,满足了现代企业级应用的需求。这个压缩包中的"SwayWind"可能是一个示例项目或者相关组件,下载后可以通过研究其...

    springmvc+rest+json交互+接口

    在现代Web开发中,Spring MVC框架与RESTful API和JSON数据格式的结合是常见的实践,它们为构建高效、可伸缩的分布式系统提供了强大的工具。本文将深入探讨如何使用Spring MVC来实现RESTful服务,并通过JSON进行数据...

    spring+springMVC+mysql+JSON的jar包整合

    在IT行业中,构建一个基于Java的Web应用框架是常见的任务,Spring、SpringMVC和MySQL的集成是其中的标准配置。这个压缩包包含了实现这一集成所需的关键组件,特别是针对JSON数据处理的支持。以下是对这些关键知识点...

    spring+springmvc+mybatis+mongodb+ActiveMQ+CXF

    在IT行业中,构建大型、可扩展的企业级应用时,往往会采用一系列框架和技术的组合来实现高效、稳定且灵活的系统架构。"spring+springmvc+mybatis+mongodb+ActiveMQ+CXF"就是一个典型的技术栈,它涵盖了后端开发、...

    SpringMVC的Restful风格Demo

    在IT行业中,SpringMVC是Java企业级应用开发中广泛使用的Web框架,它极大地简化了构建基于MVC(Model-View-Controller)架构的应用程序。而RESTful风格是一种设计网络应用程序的方法,它强调资源的概念,并通过HTTP...

    springmvc加入json支持

    在Spring MVC框架中,JSON(JavaScript Object Notation)支持是必不可少的,因为它允许应用程序与客户端进行数据交换,尤其是在构建RESTful服务时。JSON格式轻便、易于读写,且被广泛接受为网络通信的标准数据格式...

    springMVC+hibernate+json框架整套jar包,亲测

    Spring MVC、Hibernate 和 JSON 是构建现代企业级 Java 应用程序的三大核心技术。Spring MVC 是一个基于模型-视图-控制器(MVC)设计模式的轻量级 Web 框架,它允许开发者将业务逻辑与表现层分离,提供灵活的请求...

    SpringMVC+restful demo

    RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP协议,遵循“Representational State Transfer”的概念,以资源为中心,通过统一的URI(Uniform Resource Identifier)来定位资源,并通过HTTP方法(GET、...

    ext + spring Json view + springMVC + Freemaker

    EXTJS是一种基于JavaScript的前端框架,用于构建富互联网应用程序(RIA)。它提供了大量的组件库,如表格、树形结构、图表等,用于创建交互性强、视觉效果丰富的用户界面。EXTJS使用MVC(模型-视图-控制器)架构...

    springmvc+react demo

    SpringMVC是Java企业级开发的主流选择,而React则是当前前端开发的热门技术,两者结合能构建出高性能、可扩展的现代Web应用。 【文件名称列表】"webbf-webbf-0.1.0"可能是指项目的主要模块或版本号。通常,这样的...

    SpringMVC+REST+AngularJS框架

    在现代Web应用开发中,SpringMVC、RESTful API和AngularJS是三个关键的技术组件,它们共同构建了一个高效、灵活且可扩展的开发架构。本文将深入探讨这三大技术的核心概念以及如何将它们结合使用。 **SpringMVC** ...

    Spring+Hibernate+SpringMVC+Maven整合

    此外,Spring还包含了Spring MVC,这是一个用于构建Web应用程序的模型-视图-控制器(MVC)框架。 2. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过Hibernate...

    基于spring+springmvc+hibernate的全注解开发

    在现代Java Web开发中,Spring、SpringMVC和Hibernate是三个非常重要的框架,它们共同构建了一个强大的、灵活的和高效的应用程序开发环境。基于Spring+SpringMVC+Hibernate的全注解开发,允许开发者摆脱传统的XML...

    springmvc+hibernate rest 架构

    综上所述,这个项目展示了如何利用SpringMVC处理HTTP请求,通过Hibernate与数据库交互,以及如何构建RESTful API和实现用户验证与跨域访问。开发者可以在此基础上进一步学习和实践,掌握Web应用开发的核心技术。

    spring+springMVC+mybatis所需所有jar包

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序设计。它遵循Model-View-Controller(MVC)设计模式,分离了业务逻辑、数据和用户界面。请求由DispatcherServlet处理,转发给相应的控制器(Controller),控制...

    springmvc+velocity+ Rest Services(xml,json)实例

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以XML或JSON格式传输数据。RESTful服务提供了一种轻量级的交互方式,适合构建分布式系统。在这个实例中,通过...

    springMVC+rest+threadpool

    在SpringMVC中,我们可以轻松地配置和实现RESTful服务,提供JSON或XML格式的数据交换,这在构建分布式、跨平台的应用中非常常见。 **线程池(ThreadPool)** 线程池是一种多线程编程中的管理策略,用于有效地控制...

    springmvc+dataTable=Demo

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。DataTable 是一款功能丰富的jQuery插件,用于处理表格数据,提供了动态加载、排序、筛选和分页等功能,极大地提升了用户...

Global site tag (gtag.js) - Google Analytics