package com.jerome.servlet;
import com.jerome.db.DBManager;
import com.jerome.po.Article;
import com.jerome.po.JSON;
import com.jerome.util.JSONUtil;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class ArticleListServlet01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=UTF-8");
JSON result = new JSON();
try {
Object data = excute(request, response);
result.setSuccess(true);
result.setCode("200");
result.setMessage("操作成功");
result.setData(data);
// response.getWriter().write(JSONUtil.format(result));
} catch (Exception e) {
e.printStackTrace();
result.setCode("500");
result.setMessage("服务器错误");
}
//无论成功与否我们不仅在后台捕获异常,打印堆栈信息,错误信息,而且再前端也显示错误信息(简单处理)
response.getWriter().write(JSONUtil.format(result));
}
public Object excute(HttpServletRequest request, HttpServletResponse response) throws Exception{
Connection conn = DBManager.getConnection();
String sql = "select a.id,a.title,a.content,a.create_time from article a join user u on a.user_id = u.id where u.id=?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, Integer.parseInt(request.getParameter("id")));
ResultSet resultSet = preparedStatement.executeQuery();
List<Article> articleList = new ArrayList<>();
while (resultSet.next()) {
//解析结果集
Article article = new Article();
article.setId(resultSet.getInt("id"));
article.setTitle(resultSet.getString("title"));
article.setContent(resultSet.getString("content"));
article.setCreateTime(resultSet.getTimestamp("create_time"));
articleList.add(article);
}
return articleList;
}
}
如果选择使用以上方法,当我们业务有多个时,会将其中很多代码反写使用,使得代码不够简洁,因为我们选择使用模板设计模式对其进行优化。