博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
restful 风格 加上springmvc
阅读量:4613 次
发布时间:2019-06-09

本文共 14143 字,大约阅读时间需要 47 分钟。

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

二、所需其它Jar包:

 

三、主要代码:

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

springMVC-servlet.xml

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

Controller:

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

 

index.jsp

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

 

 

部分调试效果:

 

转载于:https://www.cnblogs.com/dry0515/p/5189225.html

你可能感兴趣的文章
HDU1700:Points on Cycle
查看>>
8个实用的Linux下Bash命令提示行(转)
查看>>
Python常用模块-shutil高级文件处理模块
查看>>
css hack
查看>>
POJ-1273Drainage Ditches(网络流入门题,最大流)
查看>>
桥接模式
查看>>
thrift 学习
查看>>
9. iptables 配置
查看>>
vc多线程编程
查看>>
TCP与UDP的异同(服务端接收数据,客户端发送数据)
查看>>
OkHttp 官方wiki 使用案例 MD
查看>>
【版本】API NDK 系统 分辨率 统计
查看>>
.net选择数据库表\列导出数据
查看>>
MVVM(Model-View-View-Model)简单分析(及代码示例)
查看>>
Mac 下 android/iOS https抓包
查看>>
安装VMwareTool
查看>>
CentOS 7安装Oracle 12c
查看>>
uva - 10071 Back to High School Physics 解题报告
查看>>
“Project 'MyFunProject' is not a J2SE 5.0 compliant project.”
查看>>
python操作mysql(4)--增删改查
查看>>