day01(RESTful Web Service、SVN)

it2025-03-06  20

今日大纲

搭建SSM环境 基于SSM环境实现用户管理系统 学习RESTful Web Service 学习SVN

 

统一开发环境

JDK1.7 32? 64? -- 64 Eclipse

使用4.4.1 luna 课前资料中提供

数据库,mysql 《淘宝技术这十年》 统一使用5.6,但是,项目开发阶段可以使用5.5或5.6 Mysql的读写分离,统一成5.6 数据库的客户端工具 Mysql最好用的客户端。 Maven 统一使用3.2.3 统一使用Maven的私服http://192.168.50.22:8081/nexus/#welcome 实施:《Eclipse相关配置.docx》

实施

Eclipse

 

搭建SSM环境

数据库

使用navicat创建数据库连接

执行SQL脚本:

 

 

Tb_user

查看表结构:

 

表结构:

统一管理依赖的版本

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

 

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

导入itcast-parent

 

完整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>

继承parent

出现小红叉

 

解决:

 

 

原因:

 

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

 

 

创建工程

新建工程

填写项目的Maven坐标

 

 

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

子工程使用依赖

 

Parent中的依赖管理

 

导入依赖

<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.manage</groupId>

    <artifactId>itcast-usermanage</artifactId>

    <version>1.0.0-SNAPSHOT</version>

    <packaging>war</packaging>

 

    <dependencies>

        <!-- 单元测试 -->

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <scope>test</scope>

        </dependency>

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

        <!-- 分页助手 -->

        <dependency>

            <groupId>com.github.pagehelper</groupId>

            <artifactId>pagehelper</artifactId>

        </dependency>

        <dependency>

            <groupId>com.github.jsqlparser</groupId>

            <artifactId>jsqlparser</artifactId>

        </dependency>

 

        <!-- 通用Mapper -->

        <dependency>

            <groupId>com.github.abel533</groupId>

            <artifactId>mapper</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>

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

        <dependency>

            <groupId>joda-time</groupId>

            <artifactId>joda-time</artifactId>

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

运行tomcat插件

 

运行出错:

 

 

问题:

 

解决:

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

 

 

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.jsp</welcome-file>

    </welcome-file-list>

 

</web-app>

 

Jdbc.properties

 

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>

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>

SpringMVC配置文件

Mybatis和Spring的整合

整合文件

Mybatis的全局配置文件

 

导入jsp页面

 

启动报错

由于在mappers目录中没有xml配置文件,所以报错。

 

通用页面跳转

 

测试:

配置通用Mapper

导入依赖

已完成。

配置通用Mapper的插件

作业

分页助手和通用Mapper的配置的顺序是否能颠倒?

User实体添加JPA注解

创建UserMapper接口

 

EasyUI的datagrid的数据结构

 

封装EasyUIResult

 

实现用户列表的查询

Controller实现

分页(分页助手)

导入依赖

已完成。

配置插件

使用分页助手

UserService

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

UserMapper

 

效果

Datagrid的formatter方法

后台返回的数据是时间戳:

 

 

 

扩展JS的内置对象的方法

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

 

开源中国

 

大神

 

http://my.oschina.net/flags

 

RESTful Web Service

大纲

REST是什么?

大神:

 

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

REST到底是什么?

RESTful是什么?

 

Web service:

JAX-WS

JAX-RS

 

 

REST 架构的主要原则

URI和URL

无状态性

资源操作

 

 

之前的操作:

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 删除用户信息

REST接口定义

最佳实践

REST接口设计

响应设计

 

响应示例

 

指定响应的属性字段

http响应状态码

SpringMVC实现RESTful服务

查询资源

新增资源

 

测试:

 

 

更新资源

 

Service:

 

测试:

 

默认情况下,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>

 

删除资源

 

测试:

 

 

需要在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>

 

SVN

参考:

 

 

 

 

转载于:https://www.cnblogs.com/beyondcj/p/6272649.html

相关资源:上海传智播客_29期_张志君老师_淘淘商城_大型分布式电商项目(课前课后全部视频及代码资料)
最新回复(0)