创建数据库与数据表
1、创建数据库
如:CREATE DATABASE db1 CHARACTER SET GBK/UTF8;
2、创建/设计用户的数据表
如:CREATE TABLE user(name VARCHAR(10),age INT) ENGINE=INNODB/MYISAM CHARSET=GBK/UTF8;
创建项目
1. 新建maven项目
2. 完成项目的基本配置
2.1 解决错误,即生成web.xml
2.2 添加TomcatRuntime
2.3 添加依赖(在pom.xml文件中)
— spring依赖jar包:spring-webmvc
— junit测试jar包:junit
— 数据库连接池:commons-dbcp
— msql数据库:mysql-connector-java
— mybatis:mybatis
— mybatis-spring整合:mybatis-spring
— jstl(jsp标准标签库):jst
— spring-jdbc:spring-jdbc
— Jackson:jackson-databind
2.4 配置web.xml文件
— 配置Servlet前端控制器
— 配置Filter编码格式
2.5 Spring的配置文件
— spring-mvc.xml
— spring-dao.xml
— spring-service.xml
2.6 数据库的配置文件:db.properties
2.7 MyBatis的映射模块:xxMapper.xml
3. 持久层
3.1 检查配置
3.2 创建实体类
a、创建cn.tedu.store.entity.Xxx类,属性可参考数据表。
b、创建专门用于响应给客户端的JSON数据的实体类:ResponseResult
package cn.tedu.store.entity;
/**
* 专门用于响应给客户端的JSON数据的类
* @author soft01
* @param <T>
*/
public class ResponseResult<T> {
public static final int STATE_OK = 1;
public static final int STATE_ERROR = 0;
private Integer state; // 成功(1)或失败(0)
private String message; // 仅当失败时封装错误信息
private T data; // 数据
public ResponseResult(Throwable throwable) {
super();
this.state = STATE_ERROR;
this.message = throwable.getMessage();
}
//略......
}
注:私有化所有属性,提供所有属性的SET/GET方法,添加无参数和全参数的构造方法,自动生成toString()方法(便于测试数据),equals()和hashCode()可后续再添加,实现Serializable接口,并生成序列化ID。
4. 业务层
4.1 创建接口
创建IXxxService接口,添加抽象方法。
4.2 创建接口的实现类
创建XxxServiceImpl类,使用@Service(“xxxService”)对类注解,声明private XxxMapper xxxMapper成员,并使用@Autowired注解,实现IXxxService,实现抽象方法。
*注:在业务层,关于操作的成功与否,推荐:只要能把方法顺利执行结束,就是成功,如果中途出错,则抛出异常,后续,方法的调用者(控制器层的某个方法)通过try…catch来处理。
完成后,单元测试。*
5. 控制器层
5.1 需求分析
— 访问路径:/xx/xx.do
— 请求参数:如username=xx&password=xx&phone=xx,或者无参
— 请求类型:GET或POST
— 响应内容:JSON/转发/重定向
5.2 创建控制器类
创建XxxController,使用@Controller注解,并添加
@RequestMapping注解。
a、若响应内容为JSON:
则在此类中添加public ResponseResult xxx()方法以处理请求,该方法使用@ResponseMapping(value=“/xx.do”,method=RequestMethod.POST)注解,并添加@ResponseBody注解。
@RequestMapping(value="/list.do",method=RequestMethod.POST)
@ResponseBody
public ResponseResult<List<Area>> getList(String cityCode){
ResponseResult<List<Area>> rr;
List<Area> areas = areaService.getAreaListByCityCode(cityCode);
rr = new ResponseResult<List<Area>>(ResponseResult.STATE_OK,areas);
return rr;
}
b、若响应内容为转发:
@RequestMapping("/index.do")
public String showIndex() {
return "index";
}
c、若响应内容为重定向:
@RequestMapping("/addnew.do")
public String handleAddnew(Address address,HttpSession session) {
// 此次省略N多数据有效性的判断
Integer uid = getUidFromSession(session); // 封装uid
address.setUid(uid);
addressService.addnew(address); // 执行增加
return "redirect:list.do"; // 完成,重定向
}
5.3 整合页面
如修改访问路径或添加AJAX等。
完毕!