个人博客系统项目总结
简介
在学习JavaSE及JavaWeb过程中,为了能够熟练运用自己所掌握的知识并将其融会贯通,因此搭建了一款个人博客系统来检验自己的能力以及对知识的掌握。
我们实现的功能有以下几个: 客户端和服务端的业务逻辑如下:
使用技术:
客户端:
- 使用JSP,JavaScript,CSS,JQuery,Bootstrap作为客户端页面开发
- UEditor富文本编辑器前端插件
服务端:
- Servlet,JDBC,Jackson作为JSON数据格式与Java对象序列化/反序列化工具
其它:
- Maven
- Tomcat
- MySQL
具体步骤:
- 完成前端基本页面 登陆页面展示: 文章列表页面: 新增修改文章页面:
- 设计数据库
- 定义Servlet请求接口
- 设计自定义异常 我们设计自定义异常,使其继承RuntimeException并且重写他的构造方法,这样子在我们的项目使用或者调试环节会清楚的显示错误信息,方便我们使用或者调试。
package com.jerome.exception; import lombok.Getter; import lombok.Setter; @Getter @Setter public class BusinessExceeption extends RuntimeException { private String code; public BusinessExceeption(String message) { super("业务异常"+message); code = "401"; } public BusinessExceeption(String message, Throwable cause) { super("业务异常"+message, cause); code = "401"; } }
- 设计JSON序列化/反序列化工具类
package com.jerome.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.jerome.exception.SystemException; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.text.SimpleDateFormat; public class JSONUtil { public static String format(Object object) { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); try { String result = objectMapper.writeValueAsString(object); // System.out.println(result); return result; } catch (JsonProcessingException e) { e.printStackTrace(); throw new SystemException("JSON解析错误" + object); } // return null; } public static <T> T get(HttpServletRequest request, Class<T> clazz) { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); try { return objectMapper.readValue(request.getInputStream(), clazz); // System.out.println(result); } catch (IOException e) { e.printStackTrace(); throw new SystemException("JSON反序列化失败"); } } }