`
yangjizhong24
  • 浏览: 399111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring3实现MVC的rest

阅读更多

首先配置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>
4 楼 njthnet 2010-05-13  
这个问题我已经解决了,请查看我写的这篇文章

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 MVC REST Demo

    "Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架中实现RESTful Web服务。下面将详细讨论Spring MVC与RESTful API的结合,以及如何创建和测试此类服务。 首先,Spring MVC是Spring框架的一部分...

    spring 3.0 mvc实现rest代码

    Spring 3.0 MVC 实现 REST 代码是一个关于构建基于 RESTful 风格的 Web 服务的示例。REST(Representational State Transfer)是一种架构风格,常用于设计网络应用程序,强调通过统一资源标识符(URI)来访问资源,...

    spring mvc rest基础学习demo

    在"spring mvc rest基础学习demo"中,我们将深入探讨如何使用Spring MVC构建RESTful API。 REST(Representational State Transfer,表现层状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以...

    spring3.0 mvc和rest入门例子

    在压缩包文件"spring3_rest"中,可能包含了一个简单的Spring 3.0 MVC和REST的例子,你可以通过这个例子学习如何配置Spring MVC的DispatcherServlet,创建RESTful端点,处理请求和响应,以及如何使用JUnit进行测试。...

    Spring3 MVC REST + JPA2 (Hibernate 3.6.1) 构建投票系统 - 2.Spring MVC REST

    标题 "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 实例简单代码

    Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...

    spring mvc rest 小例子

    在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...

    基于Spring和Spring MVC实现可跨域访问的REST服务

    这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心框架提供依赖注入和整体架构支持,而Spring MVC作为其Web模块,专门用于构建...

    Spring @MVC REST 实例以及 (同一资源,多种展现:xml,json,html)

    该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    Spring3 MVC REST + JPA2 (Hibernate 3.6.1) 构建投票系统 - 3. JPA2(Hibernate实现)

    在本项目中,我们主要探讨如何使用Spring3 MVC REST与JPA2(通过Hibernate 3.6.1实现)构建一个投票系统。Spring MVC作为Java领域广泛应用的MVC框架,可以方便地处理HTTP请求和响应,而JPA2(Java Persistence API的...

    Spring3.0实现REST实例

    **Spring 3.0 实现 REST 实例** 在软件开发中,REST(Representational State Transfer,表述性状态转移)是一种广泛采用的Web服务设计风格,它以简洁、灵活的方式提供了客户端与服务器之间的通信。Spring框架,...

    Spring MVC3 REST实例

    使用Spring MVC3基于注解的形式实现的REST小例子 部署运行: 1. 将工程导入eclipse 2. 添加tomcat属性 工程(右键)——&gt; tomcat project——&gt; update context 3. 启动tomcat 4. 在浏览器中输入...

    运行好,调试好的spring3.0 mvc_rest_demo.war

    运行好,调试好的spring3.0 mvc_rest_demo.war ****************************** * 运行说明 ****************************** 1. 直接部署dist/springmvc_rest_demo.war至tomcat并启动服务器 2. 访问...

    Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    在Spring Boot中,Spring MVC被默认集成,使得创建REST服务变得更加简单。 **创建Spring Boot项目** 1. 初始化项目:你可以使用Spring Initializr(start.spring.io)来初始化一个新的Spring Boot项目。选择Java...

    RESTful_Spring3MVC

    本教程将深入探讨如何利用Spring 3 MVC实现RESTful服务。 首先,理解REST的基本原则至关重要。RESTful架构有以下关键概念: 1. 资源(Resource):在Web服务中,资源是核心概念,通过URI(统一资源标识符)来唯一...

    spring-rest.rar_DEMO_employeeDS.java_rest spring mvc_spring mvc_

    `spring-rest.rar`是一个包含相关代码的压缩包,用于演示如何将Spring MVC应用于RESTful服务的实现。 首先,让我们了解REST(Representational State Transfer)的核心理念。REST是一种网络应用程序的设计风格和...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...

    毕设&课设&项目&实训基于Spring4 mvc rest+JPA2实现的物联网REST服务后台.zip

    毕设&课设&项目&实训基于Spring4 mvc rest+JPA2实现的物联网REST服务后台,测试的网页客户端界面设计采用了Bootstrap3设计 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、...

    Spring Web MVC入门教程

    Spring Web MVC支持REST风格的控制器开发,并且能够支持请求数据的映射和绑定。数据类型转换是Web开发中常见的需求,Spring Web MVC内置了多种类型转换器,并允许开发者自定义转换器以满足特定需求。数据格式化关注...

Global site tag (gtag.js) - Google Analytics