项目功能:
对音乐的简单操作
添加喜欢的歌曲
对喜欢的歌曲进行基本的操作
项目技术:
设计简单的web服务器
对MySql的基本操作
Http的相关理解
Servlet的使用
项目准备:
1、实体类的设计及建立数据库:
主要涉及到两个实体:用户和音乐
涉及到的表:
音乐表:
CREATE TABLE `music` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
`singer` varchar(30) NOT NULL,
`time` varchar(13) NOT NULL,
`url` varchar(100) NOT NULL,
`userid` int(11) NOT NULL);
用户表:
CREATE TABLE `user` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(32) NOT NULL,
`age` INT NOT NULL,
`gender` varchar(2) NOT NULL,
`email` varchar(50) NOT NULL);
喜欢表:
CREATE TABLE `lovemusic` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`music_id` int(11) NOT NULL);
2、相关接口的设计
接口设计的合理,后续代码对HTTP的拆分,效率更高。
重点要清楚每个请求的类型、内容和需要返回的响应的内容。
项目编写:
1、数据库的操作
在这一部分使用了sql语句以及MySql的JDBC编程
(1)连接数据库
需要使用Database类进行连接,封装建立连接和断开连接的过程
(2)创建实体类:用户和音乐
(3)对数据库进行基本的增删改查,拼装相关的sql语句并执行。
(4)对数据库的操作进行单元测试。
2、接口的实现
在这一部分使用到了servlet和简单的json
(1)json
使用JackSon库中的ObjectMapper类完成json的解析和构造,
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Person person = new Person(1, "111", "111");
String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);
}
将person对象转换为了json最后返回。
(2)servlet
根据接口的设计,最后实现servlet,完成前后端的交互。
@WebServlet("/loginServlet") //设计api时,设计的请求内容
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("application/json;charset=utf-8");
String username = req.getParameter("username");//获取请求中的数据
String password = req.getParameter("password");
User loginUser = new User();//构建响应的内容
loginUser.setUsername(username);
loginUser.setPassword(password);
UserService userService = new UserService();
User user = userService.login(loginUser);
Map<String,Object> return_map = new HashMap<>();
if(user != null) {
System.out.println("登陆成功!");
req.getSession().setAttribute("user",user);
return_map.put("msg",true);
}else {
System.out.println("登陆失败");
return_map.put("msg",false);
}
//把return_map返回前端
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(resp.getWriter(),return_map);
}
}
项目拓展
后期可以完成MV的功能实现
项目总结
每一阶段的代码设计完成之后都需要进行单元测试。
数据库编程中的代码需要熟练牢记。
设计Api时,要理解清楚请求和响应的内容。
编写代码要尽量做到高内聚低耦合。