• restful 风格 加上springmvc


    一、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="800px;margin-top:10px;margin-left: auto;margin-right: auto;text-align: center;">
        <h2>Uikit Test</h2>
    </div>
    <div style="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>

    部分调试效果:

  • 相关阅读:
    img在src无效或者是空的时候出现边框
    console.log((!+[]+[]+![]).length)
    JQuery与zTree记录
    axis2框架实现webservice
    jsp页面常用代码
    使用MyEclipse实现通过数据库中表和hibernate生成实体类和映射配置文件
    PL/SQL Developer工具的使用简介
    有关静态代码块、代码块、构造方法执行顺序
    完全平方数的个数
    队列Q(排序方式)
  • 原文地址:https://www.cnblogs.com/dry0515/p/5189225.html
Copyright © 2020-2023  润新知