简介
在学习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反序列化失败");
}
}
}