imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154

ListServlet.java

package com.imooc.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.imooc.service.ListService; /**
* 列表页面初始化控制
*/
@SuppressWarnings("serial")
public class ListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码
req.setCharacterEncoding("UTF-8");
// 接受页面的值
String command = req.getParameter("command");
String description = req.getParameter("description");
// 向页面传值
req.setAttribute("command", command);
req.setAttribute("description", description);
// 查询消息列表并传给页面
ListService listService = new ListService();
req.setAttribute("messageList", listService.queryMessageList(command, description));
// 页面跳转
req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}

MessageDao.java

package com.imooc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.imooc.bean.Message; public class MessageDao {
// 数据库驱动
private static final String JDBC_DRIVER = "org.gjt.mm.mysql.Driver";
// 数据库地址
private static final String DB_URL = "jdbc:mysql://localhost:3306/miro_message"; // 用户名与密码
private static final String USER = "root";
private static final String PASS = "pass"; private static Connection conn = null; // 加载数据库驱动
static {
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} // 获取消息列表
public List<Message> queryMessageList(String command, String description) {
List<Message> messageList = new ArrayList<>(); // SQL拼接
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1=1"); List<String> paramList = new ArrayList<>();
// 判断指令是否为空
if (command != null && !"".equals(command.trim())) {
sqlBuilder.append(" and COMMAND=?");
paramList.add(command);
}
// 判断描述是否为空
if (description != null && !"".equals(description.trim())) {
sqlBuilder.append(" and DESCRIPTION like '%' ? '%'");
paramList.add(description);
} String sql = sqlBuilder.toString(); PreparedStatement prep = null;
ResultSet result = null;
try {
prep = conn.prepareStatement(sql);
// 设置SQL参数
for (int i = 0; i != paramList.size(); ++i) {
prep.setString(i+1, paramList.get(i));
}
// 执行查找操作
result = prep.executeQuery();
while (result.next()) {
// 把查找结果放进List里
Message message = new Message();
messageList.add(message); message.setId(result.getString("ID"));
message.setCommand(result.getString("COMMAND"));
message.setDescription(result.getString("DESCRIPTION"));
message.setContent(result.getString("CONTENT"));
} } catch (SQLException e) {
e.printStackTrace();
} // 如果出现异常就返回一个空的List
return messageList;
}
}

ListService.java

package com.imooc.service;

import java.util.List;

import com.imooc.bean.Message;
import com.imooc.dao.MessageDao; /**
*
* 列表相关的业务功能
*
*/
public class ListService {
/**
* 获取消息列表
*/
public List<Message> queryMessageList(String command, String description) {
MessageDao dao = new MessageDao();
return dao.queryMessageList(command, description);
}
}

通过自动回复机器人学Mybatis:代码重构(分层)的更多相关文章

  1. 通过自动回复机器人学Mybatis:MySQL脚本 + db >> dao >> service >> servlet

    留着参考 makeData.sql delimiter // create procedure make_data() begin declare i int ; do insert into mes ...

  2. 通过自动回复机器人学Mybatis 笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  3. 通过自动回复机器人学Mybatis笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  4. 通过自动回复机器人学Mybatis:OGNL+log4j.properties

    imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 OGNL规则: 从哪里取?(作用域.取值范围,例如封装入一个对象,该对象就是取值范围) ...

  5. 通过自动回复机器人学Mybatis:搭建核心架构

    imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 MessageDao.java package com.imooc.dao; impor ...

  6. 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)

    imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 list.jsp <%@ page contentType="text/ ...

  7. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十一) 代码重构使用反射工厂解耦

    前言 自从此博客发表以及代码开源以来,得到了许多人的关注.也没许多吧,反正在我意料之外的.包括几位大牛帮我做订阅号推广,真的很感谢他们.另外,还有几个高手给我提了一些架构上的问题.其实本身这个项目是没 ...

  8. 让代码重构渐行渐远系列(3)——string.Equals取代直接比较与非比较

    重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提 ...

  9. C++代码重构——从C global到C++ template

    在学数据结构的时候,我常有这样目标--写出能够最大程度复用的代码(算法正确,封装优秀).我常想--如何能在短时间内达成"算法正确,封装优秀"这样的目标.经过一段时间的摸索,我的结论 ...

随机推荐

  1. petrozavodsk summer 2018 游记&&总结

    day0: 出发前训了一场比较水bapc2017保持手感(恢复信心),成功AK了,不过罚时略高.然后三人打车从紫金港到杭州东站,坐高铁到上海虹桥,再坐机场快线到浦东机场(傻乎乎的jsb帮爸爸付了钱,然 ...

  2. cobbler 修改 distro_signatures.json

    edit file in /var/lib/cobbler/distro_signatures.json and restart cobblerd service 转自: https://lists. ...

  3. java三大框架SSH(Struts2 Spring Hibernate)

    http://www.cnblogs.com/qiuzhongyang/p/3874149.html

  4. EF提供的3中查询方式

    1. Linq to Entities using (TestEntities te = new TestEntities()) { var user = from a in te.User wher ...

  5. Google I/O 2013 – Volley: Easy, Fast Networking for Android

    1.什么是volley          Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮.Volle ...

  6. java pdf 导出方案

    java代码 import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.BaseFont; import org ...

  7. 一起做RGB-D SLAM调试

    最近在学习高博的一起做RGB-D SLAM第一版本,其中调试出现了挺多问题,百度查找许多资料, 最后调通所有程序,记录以下运行环境. 高博一起做RGB-D SLAM系列主页: http://www.c ...

  8. Express入门教程:一个简单的博客

    来自:  http://ourjs.com/detail/56b2a6f088feaf2d031d2468 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, ...

  9. Android 使用 WebView

    package gzdewei.com.android; import android.app.Activity; import android.os.Bundle; import android.v ...

  10. ffmpeg命令

    1 将mp4格式的视频文件转换成mkv格式 ffmpeg -i input.mp4 -vcodec copy -acodec copy output.mkv