1、下载SpringMVC框架架包,下载地址:

点击下载

点击打开地址如图所看到的。点击下载就可以



然后把相关的jar拷贝到lib下导入

2、MyBatis(3.4.2)下载

X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ/20170303/us-east-1/s3/aws4_request&X-Amz-Date=20170303T145359Z&X-Amz-Expires=300&X-Amz-Signature=1d2bf3b71179c472d929985c0a3caf710fd5aed357db89139442fdae380222b4&X-Amz-SignedHeaders=host&actor_id=12790773&response-content-disposition=attachment;%20filename=mybatis-3.4.2.zip&response-content-type=application/octet-stream">点击下载

MyBatis中文文档地址

点击查看

下载解压之后把jar拷贝到lib下导入。大概是这样子的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGthbmRyb2lk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

3、jdbc连接库还没有下载。。。这个是5.1.41版本号的。。



点击下载



解压之后这样子。



4、fastjson 阿里巴巴的json解析库

点击下载

版本号是1.2.24 这个是托管到了github上面的,地址是:点击进入

5、创建WebProject



注意下一步有个选项,假设不勾选,默认是不会生成web.xml的



6、项目创建完成,把之前的包都弄进来。。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>CoolWeb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>CoolWeb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- <param-value>classpath:application-context.xml</param-value> -->
<param-value>classpath:CoolWeb-servlet.xml</param-value>
</init-param><!-- classpath:仅仅会到你的class路径中查找找文件;
classpath*:不仅包括class路径,还包括jar文件里(class路径)进行查找. -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- 假设不配置servlet-mappingserver就无法响应/请求 -->
<servlet-mapping>
<servlet-name>CoolWeb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

7、在src下创建CoolWeb-servlet.xml

<?

xml version="1.0" encoding="UTF-8"?

>
<beans xmlns="http://www.springframework.org/schema/beans"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 开启SpringMVC注解 -->
<context:component-scan base-package="com.vincent.lwx"/>
<mvc:annotation-driven/> </beans>

8、在src下编写ApplicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <context:component-scan base-package="com.vincent.lwx"/>
<mvc:annotation-driven/> <!-- User实体类 -->
<bean id="user" class="com.vincent.lwx.bean.User"/> <!-- 支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- max size:10M -->
<property name="maxUploadSize" value="10485760"/>
</bean> </beans>

User实体类要在这里注冊

9、在src下编写mybatis.xml

<?

xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 注意3306后面是数据库名称 autoReconnect自己主动重连-->
<property name="url" value="jdbc:mysql://localhost:3306/cool?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;autoReconnect=true" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/vincent/lwx/dao/UserMapping.xml" />
</mappers> </configuration>

10、log4j.xml配置

<?xml version="1.0" encoding="UTF-8"?

>
<configuration status="debug">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
</Console>
<RollingFile name="RollingFile" fileName="D:logs/schoolmallapi.log"
filePattern="log/$${date:yyyy-MM}yimoServiceRun-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
<SizeBasedTriggeringPolicy size="15MB" />
</RollingFile>
</appenders>
<loggers>
<root level="DEBUG">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
</loggers> <!-- 以下是打印 mybatis语句的配置 -->
<logger name="com.ibatis" additivity="true">
<level value="DEBUG" />
</logger> <logger name="java.sql.Connection" additivity="true">
<level value="DEBUG" />
</logger> <logger name="java.sql.Statement" additivity="true">
<level value="DEBUG" />
</logger> <logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG" />
</logger> <logger name="java.sql.ResultSet" additivity="true">
<level value="DEBUG" />
</logger> <root>
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<!-- <appender-ref ref="FILE" /> -->
<!-- <appender-ref ref="framework" /> -->
</root>
</configuration>

这个配置貌似有点问题。尽管不影响使用,只是我也没有去深入研究还,近期还要准备面试Android哎。

。。

如今几乎相同是这样子咯



11、环境搭建几乎相同了,如今開始撸代码。写一个注冊的动能吧

简历一个实体类User.java

package com.vincent.lwx.bean;

import java.io.Serializable;

import lombok.Data;
import lombok.Getter;
import lombok.Setter; /**
* @Title: User.java
* @Package com.vincent.lwx.bean
* @Description: TODO(用一句话描写叙述该文件做什么)
* @author Vincent
* @date 2017年3月3日 下午6:36:58
* @version V1.0
*/
public class User implements Serializable{ /**
* 序列化id
*/
private static final long serialVersionUID = -6375697395831845246L; /**
* 用户id
*/
private @Getter String user_id; /**
* 用户手机号码
*/
private @Setter@Getter String phone; /**
* 密码
*/
private @Setter@Getter String password; /**
* 用户名
*/
private @Setter@Getter String nickname; /**
* 用户头像地址
*/
private @Setter@Getter String head; /**
* 性别
*/
private @Setter@Getter String sex; /**
* 生日
*/
private @Setter@Getter String birthday; /**
* 生活状态(发表的说说)
*/
private @Setter@Getter String live_status; }

编写MyBatis的实体类映射xml文件。就写个UserMapping.xml好了,表示为用户相关的操作

<?

xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vincent.lwx.mapping.UserMapping"> <!-- 依据手机号码查询用户是否存在 -->
<select id="selectUser" parameterType="String" resultType="com.vincent.lwx.bean.User">
select * from user where phone = #{phone}
</select> </mapper>

我这里仅仅写了一个。别的还没写,注冊之前先查询一下手机号码是否已注冊。。

注意这里的id 不能反复。要具有唯一性。

parameterType是传入的參数类型。这里是String类型的phone,假设要传入多个參数能够使用User对象。或者Map,resultType返回结果类型,我这里是直接返回一个User对象。之前用jdbc直接连接数据库,返回的东西还要手动封装,这个快多了。。。

创建MyBatisUtils.java类,用来从数据库获取SqlSession对象的,SqlSession执行sql语句,和jdbc的Statement对象几乎相同感觉。。。也可能我的感觉是错的。哈哈,还没看源代码。。。

package com.vincent.lwx.db;

import java.io.IOException;
import java.io.Reader;
import java.util.Timer;
import java.util.TimerTask; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.vincent.lwx.util.EatTimerTask; /**
* @Title: MyBatisUtils.java
* @Package com.vincent.julie.config
* @Description: TODO(��һ�仰�������ļ���ʲô)
* @author Vincent
* @date 2017��2��18�� ����12:05:35
* @version V1.0
*/ public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
private static SqlSession sqlSession;
private static long timeInterval;//上一次执行的时间
private static TimerTask task =null; static {
String resource = "mybatis.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
System.out.println(e.getMessage()); }
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
/**
*
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
} /**
* ��ȡsqlSession����
* @return
*/
public static SqlSession getSqlSession(){
if (task != null){
task.cancel(); //将原任务从队列中移除
}
task = new EatTimerTask();
timeInterval = System.currentTimeMillis();
//间隔�? 1小时
long period = 1000 * 60 * 60;
//測试时间每分钟一�?
//period = 1000 * 60;
Timer timer = new Timer();
timer.schedule(task, timeInterval, period); if(sqlSessionFactory == null){
sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
}
sqlSession = sqlSessionFactory.openSession();
return sqlSession;
} }

这里有个计时器,我发现Tomcat执行一段时间之后(听说是10小时)假设没有连接数据库,会出现异常。。

好,如今来写UserController.java类,处理client的请求

package com.vincent.lwx.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import com.vincent.lwx.bean.ServiceStatus;
import com.vincent.lwx.bean.User;
import com.vincent.lwx.db.MyBatisUtils;
import com.vincent.lwx.util.ResponseUtils; /**
* @Title: UserControl.java
* @Package com.vincent.lwx.mapping
* @Description: TODO(��һ�仰�������ļ���ʲô)
* @author Vincent
* @date 2017��3��3�� ����6:28:37
* @version V1.0
*/
@Controller
public class UserController { private static final Logger logger = LogManager.getLogger(UserController.class); /**
* 注冊
* @param phone
* @param password
* @param request
* @param response
*/
@RequestMapping(value = "register", method = RequestMethod.POST)
public void registerUser(@RequestParam("phone")String phone,@RequestParam("password")String password,HttpServletRequest request,HttpServletResponse response){
if(hasUserPhone(phone)){
//用户已存在,无须再次注冊
ResponseUtils.renderJsonDataFail(response, ServiceStatus.RUNTIME_EXCEPTION, "该号码已被注冊");
return;
}
} /**
* 依据手机号码查询用户是否存在
* @param phone
* @return
*/
public boolean hasUserPhone(String phone){
/**sql 语句 完整的包名类名和方法id,*/
String sql = "com.vincent.lwx.mapping.UserMapping.selectUser";
SqlSession session = MyBatisUtils.getSqlSession();
/**返回一个User对象*/
User user = session.selectOne(sql, phone);
if(user!=null){
//用户已存在
return true;
}else{
//用户不存在
return false;
}
}
}

10、最后一步,让Tomcat跑起来,好吧,下载Tomcat、点击下载

这个版本号是Tomcat9.0的

Tomcat8.5 点击下载

Tomcat8.5 点击下载

Tomcat7.0 点击下载

假设不会部署的话能够看这里的 部署Tomcat

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGthbmRyb2lk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

11、东西写完了不叫最后一步,最后一步应该自己測试一下,google浏览器自带Postman检查一下接口的正确性



由于我的数据库我已经自己注冊了。所以提示是正确的,另外附上user表的sql语句:

2017年3月3日18:31:53
CREATE DETABASE cool;
//创建数据库并指定字符编码集
CREATE DATABASE cool DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; //创建表
create table user(
user_id int(10) not null primary key auto_increment,
phone varchar(11) not null,
password varchar(16) not null,
nickname varchar(36),
head varchar(50),
sex varchar(3),
birthday varchar(10) default '1992-01-01',
live_status varchar(255)
)engine = InnoDB default charset=utf8; //限制最小id=10000
alter table user AUTO_INCREMENT=10000;设置已经存在的表的默认值
//限制手机号码唯一性
alter table user add unique(phone); 字段值唯一性约束 insert into user(phone,password) values(
'18696855784',
'555555');

CoolWeb源代码点击下载

Github地址 进入

2017年3月3日23:52:34

楼下有个小伙伴提示用Lombok,去了解了一下,项目改造了。还没收拾。安装简单有用Lombok看这里

Java lombok的安装使用

——————————————–2017年3月5日03:35:06—————————————————

Java Web开发SpringMVC和MyBatis框架开发环境搭建和简单有用的更多相关文章

  1. Java Web项目实战第1篇之环境搭建

    写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...

  2. 04 Mybatis 框架的环境搭建及入门案例

    1.搭建 Mybatis 开发环境 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 SqlMapConifg. ...

  3. Springmvc+Spring+Mybatis整合开发(架构搭建)

    Springmvc+Spring+Mybatis整合开发(架构搭建) 0.项目结构 Springmvc:web层 Spring:对象的容器 Mybatis:数据库持久化操作 1.导入所有需要的jar包 ...

  4. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  5. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  6. [转]GeoServer地图开发解决方案(一):环境搭建篇

    GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现的社区开源项目,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操作,通过 GeoS ...

  7. android Jni NDK开发环境搭建及其简单实例的编写

    android  Jni  NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...

  8. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  9. JAVA WEB 用servlet实现分页,思路比较清晰和简单。

    JAVA WEB 用servlet实现分页,思路比较清晰和简单.借鉴了其他大佬的思路.特别感谢. 是我第一次发表博客,如果有什么错误,欢迎大家指出!,谢谢 一.思路分析 前台一定是有类似这种的界面 点 ...

随机推荐

  1. Android源代码目录结构(转)

    https://android.googlesource.com/ Android 2.2 |-- Makefile |-- bionic               (bionic C库) |-- ...

  2. Ubuntu分区方案归总

     更新时间:2010-8-26   一.各文件及文件夹的定义 /bin:bin是binary(二进制)的缩写.存放必要的命令  存放增加的用户程序. /bin分区,存放标准系统实用程序. /boot: ...

  3. 【翻译】Android多线程下安全访问数据库

    为了记录如何线程安全地访问你的Android数据库实例,我写下了这篇小小札记.文章中引用的项目代码请点击这里       假设你已编写了自己的 SQLiteOpenHelper. publicclas ...

  4. 关于python 中的 sys.argv 的使用方法

    sys.argv是获取在cmd运行python文件的时候输入的命令行参数,呈现的数据结构是列表的格式 1.用pacharm时运行时的结果是: 输出结果: 2.当我在cmd中输入指令      debu ...

  5. 类型转换运算符、*运算符重载、->运算符重载、operator new 和 operator delete

    一.类型转换运算符 必须是成员函数,不能是友元函数 没有参数 不能指定返回类型 函数原型:operator 类型名();  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  6. mybatis中sql语句传入多个参数方法

    1 使用map <select id="selectRole" parameterType="map" resultType="RoleMap& ...

  7. 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT

    你遇到过TIME_WAIT的问题吗?   我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下.哎呀妈呀 ...

  8. 用wget做站点镜像

    用wget做站点镜像 -- :: 分类: LINUX # wget -r -p -np -k http://xxx.edu.cn -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个 ...

  9. 解决Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist.

    1.错误症状:右击tomcat server,选择start,出现下图所示错误 2.错误原因: 我为了方便管理,把tomcat安装到了当前的eclipse-project目录下:E:/workspac ...

  10. 算法图绘制工具Graphviz

    graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得"(WYTIWYG,what you think is what you get),这是和office的“ ...