一、spring 版本:spring-framework-3.2.7.RELEASE
二、所需其它Jar包:
三、主要代码:
web.xml
- <?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
- <?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:
- 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
- <%@ 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>
部分调试效果:
相关推荐
2. **SpringMVC**:SpringMVC是Spring框架的一个模块,用于构建基于Java的Web应用程序。它提供了模型-视图-控制器(MVC)架构模式,分离了业务逻辑、数据展示和用户交互。SpringMVC处理HTTP请求,调用后端服务,并将...
### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...
"springmvc+ext4.1+json配置"的组合不仅提高了开发效率,还使得应用程序具有高度的可扩展性和灵活性,满足了现代企业级应用的需求。这个压缩包中的"SwayWind"可能是一个示例项目或者相关组件,下载后可以通过研究其...
在现代Web开发中,Spring MVC框架与RESTful API和JSON数据格式的结合是常见的实践,它们为构建高效、可伸缩的分布式系统提供了强大的工具。本文将深入探讨如何使用Spring MVC来实现RESTful服务,并通过JSON进行数据...
在IT行业中,构建一个基于Java的Web应用框架是常见的任务,Spring、SpringMVC和MySQL的集成是其中的标准配置。这个压缩包包含了实现这一集成所需的关键组件,特别是针对JSON数据处理的支持。以下是对这些关键知识点...
在IT行业中,构建大型、可扩展的企业级应用时,往往会采用一系列框架和技术的组合来实现高效、稳定且灵活的系统架构。"spring+springmvc+mybatis+mongodb+ActiveMQ+CXF"就是一个典型的技术栈,它涵盖了后端开发、...
在IT行业中,SpringMVC是Java企业级应用开发中广泛使用的Web框架,它极大地简化了构建基于MVC(Model-View-Controller)架构的应用程序。而RESTful风格是一种设计网络应用程序的方法,它强调资源的概念,并通过HTTP...
在Spring MVC框架中,JSON(JavaScript Object Notation)支持是必不可少的,因为它允许应用程序与客户端进行数据交换,尤其是在构建RESTful服务时。JSON格式轻便、易于读写,且被广泛接受为网络通信的标准数据格式...
Spring MVC、Hibernate 和 JSON 是构建现代企业级 Java 应用程序的三大核心技术。Spring MVC 是一个基于模型-视图-控制器(MVC)设计模式的轻量级 Web 框架,它允许开发者将业务逻辑与表现层分离,提供灵活的请求...
RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP协议,遵循“Representational State Transfer”的概念,以资源为中心,通过统一的URI(Uniform Resource Identifier)来定位资源,并通过HTTP方法(GET、...
EXTJS是一种基于JavaScript的前端框架,用于构建富互联网应用程序(RIA)。它提供了大量的组件库,如表格、树形结构、图表等,用于创建交互性强、视觉效果丰富的用户界面。EXTJS使用MVC(模型-视图-控制器)架构...
SpringMVC是Java企业级开发的主流选择,而React则是当前前端开发的热门技术,两者结合能构建出高性能、可扩展的现代Web应用。 【文件名称列表】"webbf-webbf-0.1.0"可能是指项目的主要模块或版本号。通常,这样的...
在现代Web应用开发中,SpringMVC、RESTful API和AngularJS是三个关键的技术组件,它们共同构建了一个高效、灵活且可扩展的开发架构。本文将深入探讨这三大技术的核心概念以及如何将它们结合使用。 **SpringMVC** ...
此外,Spring还包含了Spring MVC,这是一个用于构建Web应用程序的模型-视图-控制器(MVC)框架。 2. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过Hibernate...
在现代Java Web开发中,Spring、SpringMVC和Hibernate是三个非常重要的框架,它们共同构建了一个强大的、灵活的和高效的应用程序开发环境。基于Spring+SpringMVC+Hibernate的全注解开发,允许开发者摆脱传统的XML...
综上所述,这个项目展示了如何利用SpringMVC处理HTTP请求,通过Hibernate与数据库交互,以及如何构建RESTful API和实现用户验证与跨域访问。开发者可以在此基础上进一步学习和实践,掌握Web应用开发的核心技术。
SpringMVC是Spring框架的一个模块,专为构建Web应用程序设计。它遵循Model-View-Controller(MVC)设计模式,分离了业务逻辑、数据和用户界面。请求由DispatcherServlet处理,转发给相应的控制器(Controller),控制...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以XML或JSON格式传输数据。RESTful服务提供了一种轻量级的交互方式,适合构建分布式系统。在这个实例中,通过...
在SpringMVC中,我们可以轻松地配置和实现RESTful服务,提供JSON或XML格式的数据交换,这在构建分布式、跨平台的应用中非常常见。 **线程池(ThreadPool)** 线程池是一种多线程编程中的管理策略,用于有效地控制...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。DataTable 是一款功能丰富的jQuery插件,用于处理表格数据,提供了动态加载、排序、筛选和分页等功能,极大地提升了用户...