p2p第一天项目

1. 今日大纲

1、 搭建SSM环境

2、 基于SSM环境实现用户管理系统

3、 学习基于mybatis的分页插件 --  分页助手

4、 学习基于mybatis的通用Mapper插件

5、 学习RESTful Web Service

 

2. 统一开发环境

1、 JDK
1.7  32 64? 推荐使用64.

2、 Eclipse

使用4.4.1 luna  课前资料中提供

3、 数据库,mysql 《淘宝技术这十年》

a) 统一使用5.6,但是,项目开发阶段可以使用5.55.6

b) Mysql的读写分离统一成5.6

4、 数据库的客户端工具

a)   

b) Mysql最好用的客户端

c) 

5、 Maven

a) 统一使用3.2.3  

b) 统一使用Maven的私服

c) 192.168.0.47  不能使用ip192.168.0.30 ~ 192.168.0.55
http://192.168.0.47:8081/nexus/#welcome

d) 

6、 SVN

a) 作用用于管理项目的版本

b) Svn: 192.168.0.47

c) 账户姓名 (拼音) 张三,zhangsan,密码123456

7、 实施:《Eclipse相关配置.docx

2.1. 实施

2.1.1. Eclipse

 

 

3. 搭建SSM环境

3.1. 数据库

3.1.1. 使用navicat创建数据库连接

 

执行SQL脚本

 

 

 

 

3.1.2. Tb_user

查看表结构

 

 

表结构

 

 

 

3.2. 创建工程

3.2.1. 新建工程

 

 

3.2.2. 填写项目的Maven坐标

 

 

 

 

Maven会自动从192.168.0.47的私服下载所需要的依赖。

3.3. 统一管理依赖的版本

需要将多个项目的依赖的版本号统一管理起来。

 

如何实现  ---  使用Maven的继承实现。

3.3.1. 导入itcast-parent

 

 

 

3.4. 完整pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>cn.itcast.parent</groupId>

<artifactId>itcast-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>pom</packaging>

 

<!-- 集中定义依赖版本号 -->

<properties>

<junit.version>4.10</junit.version>

<spring.version>4.1.3.RELEASE</spring.version>

<mybatis.version>3.2.8</mybatis.version>

<mybatis.spring.version>1.2.2</mybatis.spring.version>

<mybatis.paginator.version>1.2.15</mybatis.paginator.version>

<mysql.version>5.1.32</mysql.version>

<slf4j.version>1.6.4</slf4j.version>

<jackson.version>2.4.2</jackson.version>

<druid.version>1.0.9</druid.version>

<httpclient.version>4.3.5</httpclient.version>

<jstl.version>1.2</jstl.version>

<servlet-api.version>2.5</servlet-api.version>

<jsp-api.version>2.0</jsp-api.version>

<joda-time.version>2.5</joda-time.version>

<commons-lang3.version>3.3.2</commons-lang3.version>

<commons-io.version>1.3.2</commons-io.version>

</properties>

 

<dependencyManagement>

<dependencies>

<!-- 单元测试 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>

 

<!-- Spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>${spring.version}</version>

</dependency>

 

<!-- Mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>${mybatis.version}</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>${mybatis.spring.version}</version>

</dependency>

 

<!-- MySql -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>${mysql.version}</version>

</dependency>

 

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>${slf4j.version}</version>

</dependency>

 

<!-- Jackson Json处理工具包 -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>${jackson.version}</version>

</dependency>

 

<!-- 连接池 -->

<dependency>

<groupId>com.jolbox</groupId>

<artifactId>bonecp-spring</artifactId>

<version>0.8.0.RELEASE</version>

</dependency>

 

<!-- httpclient -->

<dependency>

<groupId>org.apache.httpcomponents</groupId>

<artifactId>httpclient</artifactId>

<version>${httpclient.version}</version>

</dependency>

 

<!-- JSP相关-->

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

<version>${jstl.version}</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>${servlet-api.version}</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>${jsp-api.version}</version>

<scope>provided</scope>

</dependency>

 

<!-- 时间操作组件 -->

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time</artifactId>

<version>${joda-time.version}</version>

</dependency>

 

<!-- Apache工具组件-->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>${commons-lang3.version}</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-io</artifactId>

<version>${commons-io.version}</version>

</dependency>

 

</dependencies>

</dependencyManagement>

 

<build>

<finalName>${project.artifactId}</finalName>

<plugins>

<!-- 资源文件拷贝插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-resources-plugin</artifactId>

<version>2.7</version>

<configuration>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- java编译插件-->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.2</version>

<configuration>

<source>1.7</source>

<target>1.7</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

</plugins>

<pluginManagement>

<plugins>

<!-- 配置Tomcat插件 -->

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

</plugins>

</pluginManagement>

</build>

</project>

3.4.1. 继承parent

 

3.4.2. 出现小红叉

 

 

解决

 

 

 

 

原因

 

 

定义的java编译器插件的jdk版本和默认使用的jdk版本不一致导致

 

 

 

 

3.5. 子工程使用依赖

 

 

 

3.5.1. Parent中的依赖管理

 

 

3.6. 导入依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>cn.itcast.parent</groupId>

<artifactId>itcast-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<groupId>cn.itcast.usermanage</groupId>

<artifactId>itcast-usermanage</artifactId>

<version>1.0.0-SNAPSHOT</version>

<packaging>war</packaging>

 

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

</dependency>

<!-- Mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

</dependency>

<!-- MySql -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</dependency>

<!-- Jackson Json处理工具包 -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

</dependency>

<!-- 连接池 -->

<dependency>

<groupId>com.jolbox</groupId>

<artifactId>bonecp-spring</artifactId>

</dependency>

<!-- JSP相关-->

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<scope>provided</scope>

</dependency>

<!-- Apache工具组件-->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-io</artifactId>

</dependency>

</dependencies>

 

<build>

<plugins>

<!-- 配置Tomcat插件 -->

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<configuration>

<port>80</port>

<!--

http://127.0.0.1:{port}/{path}

 -->

<path>/</path>

</configuration>

</plugin>

</plugins>

</build>

</project>

3.7. 运行tomcat插件

 

 

运行出错

 

 

 

问题

 

 

解决

需要将itcast-parent安装到本地仓库

 

 

 

 

3.8. 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"

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">

<display-name>itcast-usermanage</display-name>

 

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/applicationContext*.xml</param-value>

</context-param>

 

<!--SpringApplicationContext载入 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

<!-- 编码过滤器,以UTF8编码-->

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

<!-- 配置SpringMVC框架入口-->

<servlet>

<servlet-name>itcast-usermanage</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/itcast-usermanage-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

 

<servlet-mapping>

<servlet-name>itcast-usermanage</servlet-name>

<!--

可以:

*.xxx

/xxx/*

/

不可以:

/*

 -->

<url-pattern>/rest/*</url-pattern>

</servlet-mapping>

 

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

 

</web-app>

 

3.9. Jdbc.properties

 

 

3.10. Spring容器配置文件

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

<!-- 使用spring自带的占位符替换功能-->

<bean

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<!-- 允许JVM参数覆盖-->

<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

<!-- 忽略没有找到的资源文件 -->

<property name="ignoreResourceNotFound" value="true" />

<!-- 配置资源文件 -->

<property name="locations">

<list>

<value>classpath:jdbc.properties</value>

</list>

</property>

</bean>

<!-- 扫描包 -->

<context:component-scan base-package="cn.itcast"/>

 

 <!-- 定义数据源 -->

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"

destroy-method="close">

<!-- 数据库驱动 -->

<property name="driverClass" value="${jdbc.driverClassName}" />

<!-- 相应驱动的jdbcUrl -->

<property name="jdbcUrl" value="${jdbc.url}" />

<!-- 数据库的用户名 -->

<property name="username" value="${jdbc.username}" />

<!-- 数据库的密码 -->

<property name="password" value="${jdbc.password}" />

<!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->

<property name="idleConnectionTestPeriod" value="60" />

<!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->

<property name="idleMaxAge" value="30" />

<!-- 每个分区最大的连接数 -->

<!--

判断依据:请求并发数

 -->

<property name="maxConnectionsPerPartition" value="100" />

<!-- 每个分区最小的连接数 -->

<property name="minConnectionsPerPartition" value="5" />

</bean>

 

</beans>

3.11. Spring事务

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 定义事务管理器 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource" />

</bean>

 

<!-- 定义事务策略 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<!--所有以query开头的方法都是只读的-->

<tx:method name="query*" read-only="true" />

<!--其他方法使用默认事务策略-->

<tx:method name="*" />

</tx:attributes>

</tx:advice>

 

<aop:config>

<!--pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型,

这里星号表明匹配所有返回类型。 com.abc.dao.*.*(..)表明匹配cn.itcast.mybatis.service包下的所有类的所有

方法 -->

<aop:pointcut id="myPointcut" expression="execution(*cn.itcast.usermanage.service.*.*(..))" />

<!--将定义好的事务处理策略应用到上述的切入点-->

<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />

</aop:config>

</beans>

3.12. SpringMVC配置文件

 

3.13. MybatisSpring的整合

3.13.1. 整合文件

 

3.13.2. Mybatis的全局配置文件

 

 

3.14. 导入jsp页面

 

 

 

3.15. 通用页面跳转

 

 

测试

 

 

3.16. EasyUIdatagrid的数据结构

 

 

3.17. 封装EasyUIResult

 

4. 实现用户列表的查询

4.1. Controller实现

 

4.2. UserService

使用分页助手完成分页功能

 

 

4.3. UserMapper

 

 

编写UserMapper.xml文件

 

 

 

 

SpringMybatis的整合文件中将引入Mapper.xml文件的注释打开

 

 

4.4. 效果

 

4.5. Datagridformatter方法

后台返回的数据是时间戳

 

 

 

 

 

 

4.6. 扩展JS的内置对象的方法

在内置对象的原型上扩展方法

 

 

4.7. 实现分页

4.7.1. 如何实现?

方案一

SQL语句中添加 LIMIT pagerows传递到Mapper接口中即可完成

 

方案二

使用通用的分页逻辑分页助手实现

 

4.8. 分页助手

 

4.9. 开源中国

 

 

 

4.10. 大神

 

 

http://my.oschina.net/flags

 

4.11. 分页助手使用

4.11.1. 导入依赖

 

4.11.2. 配置分页助手

Mybatis的全局配置文件中

 

4.11.3. 设置分页参数以及获取分页信息

 

 

 

4.12. 使用的注意事项

 

5. 通用Mapper

5.1. 假设:使用Mybatis只需要定义Mapper接口,无需编写Mapper.xml文件

如果要实现无需编写Mapper.xml文件我们必须要实现动态拼接SQL。

 

如何实现动态拼接SQL语句

 

思路编写Mybatis的插件在执行的过程中动态生成SQL语句

 

5.2. 简介

 

 

http://www.oschina.net/p/mybatis-mapper

 

作者

 

 

5.3. 使用通用Mapper

5.3.1. 文档

 

5.3.2. 如何集成通用Mapper

 

5.3.3. 配置通用Mapper拦截器

 

 

注意配置插件的顺序必须是分页助手在前面通用Mapper插件在后面

5.3.4. 定义Mapper接口

 

5.3.5. 实体添加JPA注解

 

5.4. 使用通用Mapper实现用户数据查询

5.4.1. NewUserMapper

 

5.4.2. NewUserServie

 

5.4.3. UserController

 

5.4.4. 执行的SQL

 

 

5.5. 测试

5.5.1. 创建单元测试用例

 

 

 

 

 

5.5.2. 初始化NewUserMapper

 

5.5.3. 通用Mapper动态拼接SQL

 

 

5.5.4. 完整测试用例

public class NewUserMapperTest {

 

    private NewUserMappernewUserMapper;

 

    @Before

    public void setUp()throws Exception {

        ApplicationContext applicationContext =new ClassPathXmlApplicationContext(

                "classpath:spring/applicationContext*.xml");

        this.newUserMapper =applicationContext.getBean(NewUserMapper.class);

    }

 

    @Test

    public void testSelectOne() {

        User record = new User();

        record.setuserName("zhangsan");

        User user = this.newUserMapper.selectOne(record);

        System.out.println(user);

    }

 

    @Test

    public void testSelect() {

        User record = new User();

        //多个条件之间是AND关系

        // record.setuserName("zhangsan");

        // record.setPassword("123456");

        record.setSex(1);

        List<User> list = this.newUserMapper.select(record);

        for (Useruser : list) {

            System.out.println(user);

        }

    }

 

    @Test

    public void testSelectCount() {

        System.out.println(this.newUserMapper.selectCount(null));

    }

 

    @Test

    public void testSelectByPrimaryKey() {

        User user = this.newUserMapper.selectByPrimaryKey(1L);

        System.out.println(user);

    }

 

    @Test

    public void testInsert() {

        User record = new User();

        // record.setAge(20);

        record.setBirthday(new Date());

        record.setCreated(new Date());

        // record.setUpdated(new Date());

        record.setName("name_4");

        record.setPassword("20");

        // record.setSex(1);

        record.setuserName("user_name_4");

        // SQL:INSERT INTO tb_user (CREATED,BIRTHDAY,ID,SEX,NAME,AGE,UPDATED,USER_NAME,PASSWORD)

        // VALUES ( ?,?,?,?,?,?,?,?,? )

        //将对象中的所有属性都当做是SQL语句中字段执行

        this.newUserMapper.insert(record);

 

        System.out.println(record.getId());

    }

 

    @Test

    public void testInsertSelective() {

        User record = new User();

        // record.setAge(20);

        record.setBirthday(new Date());

        record.setCreated(new Date());

        // record.setUpdated(new Date());

        record.setName("name_3");

        record.setPassword("20");

        // record.setSex(1);

        record.setuserName("user_name_3");

 

        // INSERT INTO tb_user ( NAME,BIRTHDAY,ID,CREATED,USER_NAME,PASSWORD ) VALUES ( ?,?,?,?,?,?

        // )

        // Selective:将不为null的属性作为SQL语句中字段

        this.newUserMapper.insertSelective(record);

        System.out.println(record.getId());

    }

 

    @Test

    public void testDelete() {

        fail("Not yet implemented");

    }

 

    @Test

    public void testDeleteByPrimaryKey() {

        fail("Not yet implemented");

    }

 

    @Test

    public void testUpdateByPrimaryKey() {

        //更新所有的字段,更新条件是:主键

        fail("Not yet implemented");

    }

 

    @Test

    public void testUpdateByPrimaryKeySelective() {

        //更新不为null的字段,更新条件是:主键

        fail("Not yet implemented");

    }

 

    @Test

    public void testSelectCountByExample() {

        fail("Not yet implemented");

    }

 

    @Test

    public void testDeleteByExample() {

        fail("Not yet implemented");

    }

 

    @Test

    public void testSelectByExample() {

 

        Example example = new Example(User.class);

        List<Object> values = new ArrayList<Object>();

        values.add(1L);

        values.add(2L);

        values.add(3L);

        //设置查询条件

        example.createCriteria().andIn("id",values);

        

        //设置排序条件

        example.setOrderByClause("created DESC");

        List<User> list = this.newUserMapper.selectByExample(example);

        for (Useruser : list) {

            System.out.println(user);

        }

    }

 

    @Test

    public void testUpdateByExampleSelective() {

        fail("Not yet implemented");

    }

 

    @Test

    public void testUpdateByExample() {

        fail("Not yet implemented");

    }

 

}

 

5.6. 集成到项目中

 

 

6. RESTful Web Service

6.1. 大纲

 

6.2. REST是什么?

大神

 

 

论文Roy Thomas Fielding博士论文REST(中文版).pdf

 

6.3. REST到底是什么?

 

6.4. RESTful是什么?

 

 

Web service:

JAX-WS

JAX-RS

 

 

 

6.5. REST 架构的主要原则

 

6.6. URIURL

 

6.7. 无状态性

 

6.8. 资源操作

 

 

 

之前的操作

http://127.0.0.1/user/query/1 GET  根据用户id查询用户数据

http://127.0.0.1/user/save POST 新增用户

http://127.0.0.1/user/update POST 修改用户信息

http://127.0.0.1/user/delete GET/POST 删除用户信息

 

RESTful用法:

http://127.0.0.1/user/1 GET  根据用户id查询用户数据

http://127.0.0.1/user  POST 新增用户

http://127.0.0.1/user  PUT 修改用户信息

http://127.0.0.1/user  DELETE 删除用户信息

6.9. REST接口定义

 

 

6.10. 最佳实践

6.10.1. REST接口设计

 

6.10.2. 响应设计

 

 

6.10.3. 响应示例

 

 

6.10.4. 指定响应的属性字段

 

7. http响应状态码

 

8. SpringMVC实现RESTful服务

 

8.1. 查询资源

 

8.2. 新增资源

 

 

测试

 

 

 

8.3. 更新资源

 

 

测试

 

 

默认情况下,PUT请求是无法提交表单数据的需要在web.xml中添加过滤器解决

 

<!-- 解决PUT请求无法提交表单数据的问题-->

<filter>

<filter-name>HttpMethodFilter</filter-name>

<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>HttpMethodFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

8.4. 删除资源

 

 

测试

 

 

 

需要在web.xml中添加过滤器解决DELETE请求无法提交表单数据的问题

<!--

POST请求转化为DELETE或者是PUT

要用_method指定真正的请求参数

 -->

<filter>

<filter-name>HiddenHttpMethodFilter</filter-name>

<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>HiddenHttpMethodFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

9. 小结

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值