springmvc + rest 整合


Apache Wink就是一个纯Java的REST框架。它完整的实现了JSR 311并扩展了部分功能,此外还提供了良好的扩展性,难能可贵的是还可以与流行的Java框架Spring无缝集成【源码获取地址】

1. 通过maven加载apache wink和spring整合所使用的包:     <dependency>             <groupId>org.apache.wink</groupId>             <artifactId>wink-common</artifactId>             <version>1.4</version>         </dependency>         <dependency>             <groupId>org.apache.wink</groupId>             <artifactId>wink-server</artifactId>             <version>1.4</version>         </dependency>         <dependency>             <groupId>org.apache.wink</groupId>             <artifactId>wink-spring-support</artifactId>             <version>1.4</version>         </dependency>

2、配置

Web Service当然是Web程序了,所以入口就是一个Servlet,在web.xml里面配置一下,把REST的访问都安排给Wink来处理:

<servlet>          <servlet-name>restService</servlet-name>          <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>          <!--          <init-param>              <param-name>applicationConfigLocation</param-name>              <param-value>/WEB-INF/resources/resource.properties</param-value>          </init-param> -->      </servlet>      <servlet-mapping>          <servlet-name>restService</servlet-name>          <url-pattern>/rest/*</url-pattern>      </servlet-mapping>

与Spring的集成,需要讲wink包里的wink-core-context.xml载入,配置如下

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:META-INF/server/wink-core-context.xml,classpath:config/spring/spring-config.xml</param-value>

</context-param>

spring配置相关的Resource:

<bean class="org.apache.wink.spring.Registrar">         <property name="instances">             <set>                 <ref local="userServiceResource" />             </set>         </property>     </bean>     <bean id="userServiceResource" class="com.xxx.cms.controller.UserServiceResource" />

.....后面的定义就是大家比较熟悉的Resrouce定义

测试代码:

/*************************************公共连接分类****************************************/ /**   * 添加公共连接分类   * @param  jsonObj 公共连接分类json数据   * @return  0:失败 1:成功 2:重复添加   * @throws  UnsupportedEncodingException 异常   */ @PUT @Path("/add/commonlinktype") @Produces ({MediaType.APPLICATION_JSON})  @AuthMethod public JSONObject addCommonlinkType(JSONObject jsonObj) throws UnsupportedEncodingException{   JSONObject result = new JSONObject();   //0表示添加失败   result.put("result", 0);   if(null != jsonObj){       CommonlinkType commonlinkType = new CommonlinkType();    buildJSONObjectToCommonlinkType(commonlinkType,jsonObj);    //是否已经存在该连接    if(hasExistCommonlinkType(commonlinkType)){     //2表示存在     return result.put("result", 2);    }    boolean success = commonlinkService.addCommonlinkType(commonlinkType);    if(success){     //1表示添加成功     result.put("result", 1);     return result;    }   }   return result; } /**   * 删除公共连接分类   * @param id 分类id   * @return 0:失败 1:成功   */ @DELETE @Path("/delete/commonlinktype/{id}") @Produces ({MediaType.APPLICATION_JSON})  public JSONObject deleteCommonlinkType(@PathParam("id") String id){   HttpSession session = request.getSession();   User user = (User)session.getAttribute("loginUser");   JSONObject result = new JSONObject();   result.put("result", 0);   if(null != user){    String userId = String.valueOf(user.getId());    CommonlinkType commonlinkType = new CommonlinkType(id,userId);    boolean success = commonlinkService.deleteCommonlinkType(commonlinkType);    if(success){     result.put("result", 1);     return result;    }   }   return result; } /**   * 更新公共链接分类   * @param jsonObj 公共连接分类json数据   * @return 0:失败 1:成功   */ @POST @Path("/update/commonlinktype") @Produces ({MediaType.APPLICATION_JSON})  public JSONObject updateCommonlinkType(JSONObject jsonObj){   HttpSession session = request.getSession();   User user = (User)session.getAttribute("loginUser");   JSONObject result = new JSONObject();   result.put("result", 0);   if(null != jsonObj && null != user){    String id = jsonObj.optString("id");    String userId = String.valueOf(user.getId());    String name = jsonObj.optString("name");    CommonlinkType commonlinkType = new CommonlinkType(id,name,userId,DataUtil.date2Str(new Date()));    boolean success = commonlinkService.updateCommonlinkType(commonlinkType);    if(success){     result.put("result", 1);     return result;    }   }   return result; } /**   * 查询公共连接分类列表   * @param page 当前页   * @param pageNum 每页显示条数   * @return 公共连接分类列表json   */ @GET @Path("/list/commonlinktype") @Produces ({MediaType.APPLICATION_JSON})  public JSONObject findCommonlinkTypeList( @DefaultValue("1") @QueryParam("page") int page,  @DefaultValue("10") @QueryParam("pagenum") int pageNum){   JSONObject result = new JSONObject();   JSONArray jsonArray = new JSONArray();   result.put("count", 0);   result.put("commonlinktypelist", jsonArray);   HttpSession session = request.getSession();   User user = (User)session.getAttribute("loginUser");   if(null != user){    PageBounds pb = PageBoundsUtil.PageBoundsOrderExtend("orderId.desc");    pb.setPage(page);    pb.setLimit(pageNum);    CommonlinkType commonlinkType = new CommonlinkType(String.valueOf(user.getId()));    Pager<CommonlinkType> commonLinkPage = commonlinkService.findCommonlinkTypeList(commonlinkType,pb);    if(null != commonLinkPage && commonLinkPage.getTotal() > 0){     result.put("count",commonLinkPage.getTotal());     buildCommonlinkTypeListToJSONAarray(commonLinkPage,jsonArray);    }   }   return result; } /**   * 判断是否已经存在当前分类   * @param commonlinkType 分类参数   * @return true:表示存在 false:表示不存在   */ private boolean hasExistCommonlinkType(CommonlinkType commonlinkType){   int count = commonlinkService.findCommonlinkTypeCountByName(commonlinkType);   if(count > 0){    return true;   }   return false; } private void buildJSONObjectToCommonlinkType(CommonlinkType commonlinkType, JSONObject jsonObj) throws UnsupportedEncodingException {   HttpSession session = request.getSession();   User user = (User)session.getAttribute("loginUser");   commonlinkType.setId(Utils.getUuid());   commonlinkType.setName(URLDecoder.decode(jsonObj.optString("name"),"UTF-8"));   commonlinkType.setUserId(null != user ? String.valueOf(user.getId()) : "");   commonlinkType.setCreateDate(DataUtil.date2Str(new Date()));   commonlinkType.setLastmodifyDate(DataUtil.date2Str(new Date())); } private void buildCommonlinkTypeListToJSONAarray(Pager<CommonlinkType> commonlinkTypePage,JSONArray result){   if(null != commonlinkTypePage){    for(CommonlinkType commonlinkType : commonlinkTypePage.getDatas()){     JSONObject jsObj = new JSONObject();     jsObj.put("id", commonlinkType.getId());     jsObj.put("name", commonlinkType.getName());     jsObj.put("userId", commonlinkType.getUserId());     jsObj.put("createDate", commonlinkType.getCreateDate());     jsObj.put("lastmodifyDate", commonlinkType.getLastmodifyDate());     result.put(jsObj);    }   } }

private JSONObject buildCommonlinkTypeJsonObj(JSONObject jsObj,CommonlinkType commonlinkType) {   jsObj.put("id", commonlinkType.getId());   jsObj.put("name", commonlinkType.getName());   jsObj.put("userId", commonlinkType.getUserId());   jsObj.put("createDate", commonlinkType.getCreateDate());   jsObj.put("lastmodifyDate", commonlinkType.getLastmodifyDate());   return jsObj; } private JSONObject buildCommonlinkJsonObj(JSONObject jsObj,Commonlink commonlink) {   jsObj.put("id", commonlink.getId());   jsObj.put("name", commonlink.getName());   jsObj.put("userId", commonlink.getUserId());   jsObj.put("createDate", commonlink.getCreateDate());   jsObj.put("lastmodifyDate", commonlink.getLastmodifyDate());   jsObj.put("url", commonlink.getUrl());   jsObj.put("position", commonlink.getPosition());   return jsObj; }

附上rest服务测试界面,绝对可以使用到app应用:

各位有需要源代码的请联系扣扣:3121O26417

【源码获取地址】

整个项目截图:

框架截图:

登陆界面:多样式的登陆背景,安全登陆验证,统一登陆入口

首页展示:

  1. 统一的菜单风格
  2. 高大上的统计组件,支持饼图、柱状图、曲线图等
  3. 支持所有移动设备,Android &IOS.
  4. Bootstrap html5 统计组件,使您的开放更简便

功能指引:

1. 整个项目使用Maven构建,提供大数据、高并发、服务集成平台

任务管理、消息提醒、邮件提醒:

系统设置、用户设置、退出登陆

统一的用户设置:可查看并设置用户角色,查看组及个人基本信息,发送邮件,修改用户权限,修改登陆密码等,

用户信息管理:

  1. 统一添加用户和刷新用户列表
  2. 统一的分页插件,基于mybatis封面的分页插件

用户组管理:

  1. 统一添加用户和刷新用户列表
  2. 统一的分页插件,基于mybatis封面的分页插件
  3. 编辑和删除用户组,清空用户组下的用户,查询与设置当前用户组

用户角色管理:添加角色管理和修改角色列表

栏目管理:

  1. 栏目管理,统一栏目分级
  2. 支持添加子栏目按钮
  3. 统一Mybatis分页插件
  4. 支持栏目的编辑和删除

文章管理:

  1. 文章列表维度查询
  2. 统一添加,已发布&未发布文章查询,刷新文章列表
  3. 统一的列表分页插件,文章状态操作,更新以及删除

数据字典管理:配置系统数据信息

定时任务管理:

框架详细咨询请加企鹅:3121O26417

框架源码获取

时间: 2024-10-11 23:07:58

springmvc + rest 整合的相关文章

【SpringMVC学习04】Spring、MyBatis和SpringMVC的整合

前两篇springmvc的文章中都没有和mybatis整合,都是使用静态数据来模拟的,但是springmvc开发不可能不整合mybatis,另外mybatis和spring的整合我之前学习mybatis的时候有写过一篇,但是仅仅是整合mybatis和spring,所以这篇文章我系统的总结一下spring.mybatis和springmvc三个框架的整合(后面学习到maven时,我会再写一篇使用maven整合的文章,这篇没有用到maven). 1. jar包管理 我之前有写过一篇spring.hi

SpringMVC + MyBatis整合

环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3 网络上关于这个架构的搭建文章,实在是太多了,本文是对于本人初次搭建时的一些注意点的整理. 主要是一些配置文件的内容和架构的目录. 0. project 目录 1. spring-resources.xml 这个文件是用来完成spring和mybatis的整合的xml.注意properties文件的读入方式. <?xml version="1.0" encoding="UTF-

之前SpringMVC+Mybatis整合,现在加上AOP

之前SpringMvc和mybatis整合的例子:http://www.cnblogs.com/acehalo/p/3901809.html Controller类增加方法,以便测试: @RequestMapping(value = "/aopTest") @ResponseBody public String aopTest(HttpServletRequest request) { for (int i = 0; i < 3; i++) { aopServiceTest.do

Swagger与SpringMVC项目整合

Swagger与SpringMVC项目整合 为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明: Step1:项目中引入相关jar包: <properties> <project.build.sourceEncoding>UTF-8</project.bu

SpringMVC + MyBatis整合 【转】

环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3 网络上关于这个架构的搭建文章,实在是太多了,本文是对于本人初次搭建时的一些注意点的整理. 主要是一些配置文件的内容和架构的目录. 0. project 目录 1. spring-resources.xml 这个文件是用来完成spring和mybatis的整合的xml.注意properties文件的读入方式. <?xml version="1.0" encoding="UTF-

spring+springmvc+ibatis整合小结

最近在整合Spring和ibatis时,不管applicationContext.xml放在哪儿,在web.xml中怎么配置,tomcat启动时始终报applicationContext.xml的错.后来查资料后才发现之前的web.xml配置文件没有在<context-param>中指定applicationContext.xml的路径.原来tomcat在加载web.xml时会优先加载<context-param>和<listener>,之后才加载<servlet

[手把手教程][JavaWeb]优雅的SpringMvc+Mybatis整合之路

来源于:http://www.jianshu.com/p/5124eef40bf0 [手把手教程][JavaWeb]优雅的SpringMvc+Mybatis整合之路 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 前面网友说我为啥很久不更新博客了,我告诉他们我准备潜修.其实是我的博客被人批评是在记流水账(~一脸尴尬~). 再次安利一波,博客地址:acheng1314.cn 本文中的图片用了个人服务器存储,网速较慢,各位老司机耐心等待. 工具 IDE为id

Spring+SpringMVC +MyBatis整合配置文件案例66666

Spring+SpringMVC +MyBatis整合配置文件案例 标签: springspringmvcmybatismvcjava 2017-04-13 19:12 228人阅读 评论(1) 收藏 举报 分类: java_javaSE(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Spring+SpringMVC +MyBatis整合配置文件案例 针对spring/SpringMVC/MyBatis三个框架的整合有很多的方式,经过最近的学习我来总结一下其配置文

sonne_game网站开发03 spring-mvc+freemarker整合

这是从零独立开发网站(名为sonne_game)系列的第三篇了. 先简单做个往期回顾~ 第一篇,是简明讲了些自己对这个网站的构思和计划.http://www.cnblogs.com/rixiang/p/6259097.html 第二篇,开始搭建框架,完成了spring+mybatis+springmvc框架搭建.http://www.cnblogs.com/rixiang/p/6260433.html 而今天的任务就是在spring+mybatis+springmvc的基础上,将freemark

SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBatis框架的学习(六)——MyBatis整合Spring.本文我再来讲SpringMVC和MyBatis整合开发的方法,这样的话,Spring.MyBatis和SpringMVC三大框架的整合开发我们就学会了.这里我使用的Spring是Spring4.1.3这个版本(SpringMVC自然也是这个版本),MyBatis是MyBatis3.2.7这个版本. 为了更好的学习SpringMVC和MyBatis整合开发的方法