- 浏览: 399148 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tyjdzr:
程序已经运行成功,第一次接触webservice,楼主领我入门 ...
java实现webservice实例 -
guosongchao:
楼主介绍的确实简单,但是对于我这种对web service一点 ...
java实现webservice实例 -
gnail_oug:
...
java实现webservice实例 -
safedriver:
楼主真心不错
java实现webservice实例 -
Partys:
Partys 写道addArticleCategories(C ...
RESTful Web Services in Spring 3(上)
首先配置WEB.XML:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping> </web-app>
然后配置springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 修改说明: 1.修改<context:component-scan以确定要加载的controller,默认为com.**.controller 2.修改class=ControllerClassNameHandlerMapping节点的pathPrefix以确定要生成的前缀 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-autowire="byName" > <!-- 对web包中的所有controller类进行扫描,以完成Bean创建和自动依赖注入的功能 --> <context:component-scan base-package="com.**.controller" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/pages/" p:suffix=".jsp"/> </beans>
SERVLET类:
package com.insigma.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.insigma.domain.Person; @Controller @RequestMapping("/people") public class UserInfoController { private static List list = new ArrayList<Person>(); static { Person person = new Person(); person.setId(new Long(1)); person.setName("He Jing"); person.setTitle("None"); list.add(person); Person person1 = new Person(); person1.setId(new Long(2)); person1.setName("Kevin"); person1.setTitle("Who"); list.add(person1); } @RequestMapping(method = RequestMethod.GET) public String getAll(Model model) { System.out.println("=============> Get list"); model.addAttribute("list", list); return "people"; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String getPerson(@PathVariable("id") Long personId, Model model) { System.out.println("=========> Get one person"); Person person; List list2 = new ArrayList<Person>(); for (int i = 0; i < list.size(); i++) { person = (Person) list.get(i); if (person.getId().equals(personId)) { list2.add(person); } } model.addAttribute("list", list2); return "people"; } @RequestMapping(method = RequestMethod.POST) public String savePerson(Person person, Model model) { list.add(person); model.addAttribute("list", list); return "people"; } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) public String deletePerson(@PathVariable("id") Long personId, Model model) { Person person; for (int i = 0; i < list.size(); i++) { person = (Person) list.get(i); if (person.getId().equals(personId)) { list.remove(i); } } model.addAttribute("list", list); return "people"; } @RequestMapping(value = "/{id}", method = RequestMethod.PUT) public String updatePerson(@PathVariable("id") Long personId, Person person, Model model) { Person person2; for (int i = 0; i < list.size(); i++) { person2 = (Person) list.get(i); if (person2.getId().equals(personId)) { person2.setId(person.getId()); person2.setName(person.getName()); person2.setTitle(person.getTitle()); } } model.addAttribute("list", list); return "people"; } }
people.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <html> <body> <table> <tr> <td>People id</td> <td>People name</td> <td>People title</td> <td></td> </tr> <c:forEach items="${list}" var="people"> <tr> <td><input id="pid${people.id}" type="text" value='${people.id}'/></td> <td><input id="pna${people.id}" type="text" value='${people.name}'/></td> <td><input id="pti${people.id}" type="text" value='${people.title}'/></td> <td><input type="button" value="Update" onClick="upd('${people.id}')" /></td> <td><input type="button" value="Delete" onClick="del('${people.id}')" /></td> </tr> </c:forEach> <form id="upForm" action="/TestREST/people" method="POST"> <input id="people_id" name="id" type="hidden" /> <input id="people_name" name="name" type="hidden" /> <input id="people_title" name="title" type="hidden" /> <input type="hidden" name="_method" value="put" /> </form> <form id="delForm" action="/TestREST/people/" method="POST"><input type="hidden" name="_method" value="delete" /></form> </table> <table> <form action="/TestREST/people" method="POST"> <tr> <td>people_id:<input id="people_id" name="id" type="text" /></td> </tr> <tr> <td>people_name:<input id="people_name" name="name" type="text" /></td> </tr> <tr> <td>people_title:<input id="people_title" name="title" type="text" /></td> </tr> <tr> <td><input type="submit" value="Add" /></td> </tr> </form> </table> </body> <Script> function del(id) { document.getElementById('delForm').action = '/TestREST/people/' + id; document.getElementById('delForm').submit(); } function upd(id) { var form=document.getElementById('upForm'); form.action = '/TestREST/people/' + id; form.people_id.value=document.getElementById('pid'+id).value; form.people_name.value=document.getElementById('pna'+id).value; form.people_title.value=document.getElementById('pti'+id).value; form.submit(); } </Script> </html>
评论
6 楼
唯快不破
2010-07-05
请问楼主为什么用ui.Model,而不用ModelAndView?
5 楼
freecode
2010-06-03
参考了spring3.0 sample,我现在采用:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring MVC's Servlet -->
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
urlrewrite.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite default-match-type="wildcard">
<rule>
<from>/img/**</from>
<to>/img/$1</to>
</rule>
<rule>
<from>/js/**</from>
<to>/js/$1</to>
</rule>
<rule>
<from>/ext/**</from>
<to>/ext/$1</to>
</rule>
<rule>
<from>/css/**</from>
<to>/css/$1</to>
</rule>
<rule>
<from>/index2.jsp</from>
<to>/index2.jsp</to>
</rule>
<rule>
<from>/index.jsp</from>
<to>/index.jsp</to>
</rule>
<rule>
<from>/common/**</from>
<to>/common/$1</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
<outbound-rule>
<from>/app/**</from>
<to>/$1</to>
</outbound-rule>
</urlrewrite>
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring MVC's Servlet -->
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
urlrewrite.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite default-match-type="wildcard">
<rule>
<from>/img/**</from>
<to>/img/$1</to>
</rule>
<rule>
<from>/js/**</from>
<to>/js/$1</to>
</rule>
<rule>
<from>/ext/**</from>
<to>/ext/$1</to>
</rule>
<rule>
<from>/css/**</from>
<to>/css/$1</to>
</rule>
<rule>
<from>/index2.jsp</from>
<to>/index2.jsp</to>
</rule>
<rule>
<from>/index.jsp</from>
<to>/index.jsp</to>
</rule>
<rule>
<from>/common/**</from>
<to>/common/$1</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
<outbound-rule>
<from>/app/**</from>
<to>/$1</to>
</outbound-rule>
</urlrewrite>
4 楼
njthnet
2010-05-13
这个问题我已经解决了,请查看我写的这篇文章
http://www.javabloger.com/article/no-mapping-found-for-http-request-with-uri.html
http://www.javabloger.com/article/no-mapping-found-for-http-request-with-uri.html
3 楼
woxiangbo
2010-04-22
wasdju 写道
引用
Java代码
<!-- 覆盖default servlet的 /, springmvc servlet将处理原来处理静态资源的映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
你这样处理以后,那 图片文件和样式文件不都经过这层过滤了 ?
比如 http://www.abc.com/a.gif
http://www.abc.com/c.css
能够正常获取到吗 ?
我这里正常获取不到,麻烦详细解释一下,
我的gmail:woxiangbo@gmail.com
我这里遇到的情况和这个一样,在网上找了许多资料,也没发现更好的解决办法,我用的是spring3.0
我已经解决了这个问题,看到联系我,发我邮箱~
2 楼
wasdju
2010-04-20
引用
Java代码
<!-- 覆盖default servlet的 /, springmvc servlet将处理原来处理静态资源的映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
你这样处理以后,那 图片文件和样式文件不都经过这层过滤了 ?
比如 http://www.abc.com/a.gif
http://www.abc.com/c.css
能够正常获取到吗 ?
我这里正常获取不到,麻烦详细解释一下,
我的gmail:woxiangbo@gmail.com
我这里遇到的情况和这个一样,在网上找了许多资料,也没发现更好的解决办法,我用的是spring3.0
1 楼
woxiangbo
2010-04-15
<!-- 覆盖default servlet的 /, springmvc servlet将处理原来处理静态资源的映射 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
你这样处理以后,那 图片文件和样式文件不都经过这层过滤了 ?
比如 http://www.abc.com/a.gif
http://www.abc.com/c.css
能够正常获取到吗 ?
我这里正常获取不到,麻烦详细解释一下,
我的gmail:woxiangbo@gmail.com
发表评论
-
spring框架下配置lucene
2012-02-21 15:34 8623最近这的是投入不少精力在lucene身上,学到一点心得,留此文 ... -
Task Scheduling Simplifications in Spring 3.0
2011-05-19 14:47 2613简单说下基本配置: applicationContex ... -
安装ActiveMQ
2011-04-18 10:28 1231安装activeMQ前先升级jdk到6U24 cd /App ... -
ECLIPSE远程DEBUG
2011-04-18 10:07 1462在服务器上添加监听端 ... -
apache的commons-net实现FTP上传,下载文件
2011-04-15 11:25 2724不多说,上代码: package com.book.s ... -
tdd:测试驱动WEB组件
2011-04-05 21:37 1734相信大家有好多人会使用JUNIT进行单元测试了,但是在WEB开 ... -
利用GeneratedKeyHolder获得新建数据主键值
2010-12-24 14:37 7158有时候我们向DB新插入一条数据,都需要获取对应的主键值。在采用 ... -
dbunit解决XML数据中必须表首行有相应字段问题
2010-11-30 09:51 1727DbUnit设计理念: 熟悉单 ... -
jMock Cookbook 中文版
2010-04-29 10:06 2063他娘的,中文版啊!爽,坚决分享! 这里不多介绍JMOC ... -
linux下配置JDK,tomcat
2010-02-26 15:34 1034转自:http://blog.csdn.net/strivem ... -
hsqldb
2010-02-25 00:02 1266import java.sql.Connection; im ... -
RESTful Web Services in Spring 3(下)
2010-02-23 13:44 5646上一篇我主要发了RESTful Web Services in ... -
RESTful Web Services in Spring 3(上)
2010-02-23 10:19 11311通过本文,我将介绍REST的特点,基本设计原则及其简单讲解,最 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2010-02-07 13:09 891来自地址:https://www.ibm. ... -
log4j配置
2010-01-28 14:07 1150<!-- logging begin--> ... -
java中org.apache.commons.digester类用法
2010-01-28 10:52 1512xml文件内容: <?xml version=& ... -
lucene的索引建立及查找
2010-01-27 11:03 1037package lucene; import org.a ... -
java实现webservice实例
2010-01-25 18:48 131833今天下午突然想研究下WEBSERVICE,从网上找了好多实例, ... -
Hibernate批量插入的方法
2010-01-22 14:46 1504Session session = sessionFact ... -
编写你的第一个Hibernate程序
2010-01-20 11:51 1213注:转载http://www.nit-pro.org/jszl ...
相关推荐
"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架中实现RESTful Web服务。下面将详细讨论Spring MVC与RESTful API的结合,以及如何创建和测试此类服务。 首先,Spring MVC是Spring框架的一部分...
Spring 3.0 MVC 实现 REST 代码是一个关于构建基于 RESTful 风格的 Web 服务的示例。REST(Representational State Transfer)是一种架构风格,常用于设计网络应用程序,强调通过统一资源标识符(URI)来访问资源,...
在"spring mvc rest基础学习demo"中,我们将深入探讨如何使用Spring MVC构建RESTful API。 REST(Representational State Transfer,表现层状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以...
在压缩包文件"spring3_rest"中,可能包含了一个简单的Spring 3.0 MVC和REST的例子,你可以通过这个例子学习如何配置Spring MVC的DispatcherServlet,创建RESTful端点,处理请求和响应,以及如何使用JUnit进行测试。...
标题 "Spring3 MVC REST + JPA2 (Hibernate 3.6.1) 构建投票系统 - 2.Spring MVC REST" 提供了我们要探讨的核心技术栈:Spring 3 MVC、RESTful API 和 JPA2(这里指的是 Hibernate 3.6.1 实现)。在这个项目中,开发...
Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...
在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...
这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心框架提供依赖注入和整体架构支持,而Spring MVC作为其Web模块,专门用于构建...
该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
在本项目中,我们主要探讨如何使用Spring3 MVC REST与JPA2(通过Hibernate 3.6.1实现)构建一个投票系统。Spring MVC作为Java领域广泛应用的MVC框架,可以方便地处理HTTP请求和响应,而JPA2(Java Persistence API的...
**Spring 3.0 实现 REST 实例** 在软件开发中,REST(Representational State Transfer,表述性状态转移)是一种广泛采用的Web服务设计风格,它以简洁、灵活的方式提供了客户端与服务器之间的通信。Spring框架,...
使用Spring MVC3基于注解的形式实现的REST小例子 部署运行: 1. 将工程导入eclipse 2. 添加tomcat属性 工程(右键)——> tomcat project——> update context 3. 启动tomcat 4. 在浏览器中输入...
运行好,调试好的spring3.0 mvc_rest_demo.war ****************************** * 运行说明 ****************************** 1. 直接部署dist/springmvc_rest_demo.war至tomcat并启动服务器 2. 访问...
在Spring Boot中,Spring MVC被默认集成,使得创建REST服务变得更加简单。 **创建Spring Boot项目** 1. 初始化项目:你可以使用Spring Initializr(start.spring.io)来初始化一个新的Spring Boot项目。选择Java...
本教程将深入探讨如何利用Spring 3 MVC实现RESTful服务。 首先,理解REST的基本原则至关重要。RESTful架构有以下关键概念: 1. 资源(Resource):在Web服务中,资源是核心概念,通过URI(统一资源标识符)来唯一...
`spring-rest.rar`是一个包含相关代码的压缩包,用于演示如何将Spring MVC应用于RESTful服务的实现。 首先,让我们了解REST(Representational State Transfer)的核心理念。REST是一种网络应用程序的设计风格和...
标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...
毕设&课设&项目&实训基于Spring4 mvc rest+JPA2实现的物联网REST服务后台,测试的网页客户端界面设计采用了Bootstrap3设计 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、...
Spring Web MVC支持REST风格的控制器开发,并且能够支持请求数据的映射和绑定。数据类型转换是Web开发中常见的需求,Spring Web MVC内置了多种类型转换器,并允许开发者自定义转换器以满足特定需求。数据格式化关注...