发表于: 2017-05-20 17:17:15
1 1421
今日计划
任务一提交
开始任务二
今日完成
远程云服务器数据库
通过navicat将本地数据库输出成sql文件
WinSCP上传sql文件至root文件夹
控制台操作云服务器
create database student;
source entry_form.sql
Navicat连接云服务器
连接-命名-输入外网地址
修改本地项目输出war包
存放在云服务器tomcat webapp文件夹下,重启tomcat,输入外网网址/项目名称
开始创建Maven Web工程
创建Maven工程
eclipse中File-New-Other,在new窗口中选择Maven-Maven Project
选择项目路径Rest文件夹
选择项目类型,在Artifact id中选择maven-archtype-webapp
Group ID com.jnshu.rest.Artifact ID子项目名称demo
添加Source文件夹
添加src/main/java,src/test/java,src/test/resources三个文件夹。右键项目根目录点击New-Source Folder,建出三个文件夹。或者新建文件夹后右键build path-use as Source Folder
更改class路径
右键项目,properties-Java Build Path-Source,出现四个文件夹
src/main/java,src/main/resources,src/test/java.src/test/resources
双击每个文件夹的Output folder,选择路径
src/main/java,src/main/resources,选择target/classer
ser/test/java.src/test/resources,选择target/test-classes
选上Allow output folders for source folders
项目变成Dynamic Web项目
右键项目,选择Project Facets,点击Convert to faced form
配置Project Facets
更改Dynamic Web Module的version为3.0(Java7),Java Compiler的java版本也要为1.7
点击Futher configuration available,弹出Modify Faceted Project窗口
设置web.xml路径,输入src/main/webapp
设置部署程序集(Web Deployment Assembly)
Properties-Deployment Assembly
1删除test两项,test测试使用,并不需要部署
2将Maven的jar包发布到lib下
Add-Java Build Path Entries-Maven Dependencies-finish
向maven项目中添加jar包
点击pom.xml,Dependencies栏目点击Add,添加spring全部包,junit,jstl
构建SpringMVC框架
需要添加log4j,字符过滤,Spring的dispatcher等
编写web.xml
编写Spring配置文件dispatcher-servlet.xml
编写Controller层测试类
编写Index.jsp
打包war,发布到tomcat
配置pom.xml
依赖添加测试部分junit,spring框架,MySQL驱动,连接池c3p0,json解析器,文件上传,HTTP客户端,日志log4j,
环境jstl,standard,javaee-api,构建生成部。
设置项目的文档结构
在src\main\java下,添加包com.jnshu.rest.demo
在src\main\java\com\jnshu\rest文件夹下依次建立文件夹util、models、requestmodels、responseModels、vo、dao、service、controller,以及在service文件夹下建立impl文件夹
文件夹说明
util,存放通用算法
models,存放数据库所对于表的对象
requestmodels,存放REST借口输入参数的对象
responseModels,存放REST借口输出参数的对象
vo,存放REST接口结果的ViewModel
dao,存放数据层的接口类以及mybatis的映射文件
service,存放服务层的接口类
service\impl,存放服务层的实现类
controller,存放对外暴露的接口的实现类
在src\main\resources中,建立文件夹properties,在properties文件家中新建config.properties
#database Connect Parameter 数据库参数配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.34.194:3306/?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=admin
src\main\resources添加数据源连接池的配置文件dataSource.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="1"/>
<!--连接池中保留的最大连接数。Default: 15-->
<property name="maxPoolSize" value="15"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3-->
<property name="initialPoolSize" value="3"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0-->
<property name="maxIdleTime" value="0"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
<property name="acquireIncrement" value="2"/>
<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
<property name="maxStatements" value="0"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0-->
<property name="idleConnectionTestPeriod" value="60"/>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30-->
<property name="acquireRetryAttempts" value="300"/>
<!--
获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false
-->
<property name="breakAfterAcquireFailure" value="false"/>
<!--
因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false
-->
<property name="testConnectionOnCheckout" value="false"/>
</bean>
</beans>
src\main\resources添加日志的配置文件log4j.xml
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER"
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 控制台输出 -->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss}(%F:%L)[%-5p] %m%n" />
</layout>
</appender>
<!-- 文件输出 -->
<appender name="R" class="org.apache.log4j.FileAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss}(%F:%L)[%-5p] %m%n" />
<param name="File" value="info.log"/>
</layout>
</appender>
<!-- 设置日志输出级别 -->
<category name="java.sql">
<priority value="debug" />
</category>
<category name="com.ibatis">
<priority value="debug" />
</category>
<category name="com.jnshu.rest.demo">
<priority value="debug" />
</category>
<root>
<priority value="error" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
src\main\resources添加spring上下文的配置文件applicationContext.xml
修改src\main\webapp\WEB-INF\web.xml
src\main\webapp\WEB-INF文件夹下增加dispatcher-servlet.xml
所有环境搭建完成,可以开始写接口
尝试写第一个REST风格的接口,获得服务器当前的时间
一步,在com.jnshu.rest.demo.controller中,建立一个class,名称为CurDateTimeController.
第二步,在类上面进行注解
@Controller //这个类是一个控制器类
@RequestMapping("/date") //这个控制器类的根请求映射为“/date”
第三步,实现获取当前日期的接口/date/getdate
@RequestMapping(value = "/getdate", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getDate(HttpServletResponse response) throws IOException {
SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd");
String datetime = tempDate.format(new java.util.Date());
Map<String, Object> map = new HashMap<String, Object>();
map.put("data", datetime);
return map;
}
第四步,实现获得当前时间的接口/date/gettime
@RequestMapping(value = "/gettime", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getTime(HttpServletResponse response) throws IOException {
SimpleDateFormat tempDate = new SimpleDateFormat("HH:mm:ss");
String datetime = tempDate.format(new java.util.Date());
Map<String, Object> map = new HashMap<String, Object>();
map.put("data", datetime);
return map;
}
第五步,实现获得当前日期时间的接口/date/getdatetime
@RequestMapping(value = "/getdatetime", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getDateTime(HttpServletResponse response) throws IOException {
SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String datetime = tempDate.format(new java.util.Date());
Map<String, Object> map = new HashMap<String, Object>();
map.put("data", datetime);
return map;
}
测试
rest接口的概念
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
收获
Maven WEB工程建立
SpringMVC完成第一个REST接口
困难
无
明日计划
根据效果展示定义接口格式,完成服务层编写,搭建jetty替换tomcat,PostMan测试接口
评论