java后端如何主动发数据到前端_javaweb把后端数据返回到前端

```

第一步

先写公共查询类

public static List executeQuery(String sql, Object[] params) {

List list = new ArrayList();

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

//连接数据库

conn = UtilDB.getConnection();

//创建预处理命令

pstmt = conn.prepareStatement(sql);

//为预处理命令设置参数

UtilDB.setParams(pstmt, params);

//执行查询

rs = pstmt.executeQuery();

//获取元数据

ResultSetMetaData metaData = rs.getMetaData();

//获取返回的结果集有多少列

int count = metaData.getColumnCount();

while (rs.next()) {

//声明map 存储一行的数据

Map map = new HashMap();

for (int i = 1; i <= count; i++) {

//获取列名 列名的下标从1 开始

// String columnName = metaData.getColumnName(i);

// 获取该列的值

// Object value = rs.getObject(columnName);

//把该行每一列的值放置到map中,其中key是列名 value是该列对应的值

map.put(metaData.getColumnName(i), rs.getObject(i));

}

list.add(map);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

UtilDB.Close(conn, pstmt, rs);

}

return list;

}

第二步

在写dao层

接口 public List getFindMessage(Connection conn)

实现类

public class UserDaoImpl implements UserDao {

/*

* @getfindmessage

* 查找留言

* */

@Override

public List getFindMessage(Connection conn ) throws SQLException {

PreparedStatement pstmt = null;

ResultSet rs = null;

ArrayList MD= new ArrayList();

if (conn!=null) {

String sql = "select * from guestbook ";

Object[] params = {};

rs = UtilDB.execute(conn, pstmt, rs, sql, params);

while (rs.next()) {/*使用while順壞取出留言信息*/

MessageDate md = new MessageDate();

md.setId(rs.getInt("id"));

md.setName(rs.getString("name"));

md.setEmaile(rs.getString("emaile"));

md.setTitle(rs.getString("title"));

md.setContent(rs.getString("content"));

md.setCreatedtime(rs.getString("createdtime"));

md.setPhone(rs.getString("phone"));

MD.add(md);

}

}

UtilDB.Close(conn,pstmt,rs);

return MD;

}

}

第三步

写业务层service

public List getFindMessage();

public class UserServletlmpl implements UserServlet {

private UserDao userDao;

public UserServletlmpl(){

userDao=new UserDaoImpl();

}

/*

* 查詢留言板

* */

@Override

public List getFindMessage() {

Connection conn = null;

List messageDates =null;

try {

conn = UtilDB.getConnection();

messageDates= userDao.getFindMessage(conn);

} catch (SQLException e) {

e.printStackTrace();

}

finally {

UtilDB.Close(conn,null,null);

}

return messageDates;

}

}

第四步

写视图层

@WebServlet(name = "FindMessageServlet",urlPatterns = "/jsp/findMessageServlet")

public class FindMessageServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) {

UserServlet userServlet = new UserServletlmpl();

try {

//从业务层拿数据

List messageDates = userServlet.getFindMessage();

// System.out.println(messageDates);

request.setAttribute("messageDates", messageDates);//把信息放到session中,但会消耗资源

request.getRequestDispatcher("/jsp/MessageDate.jsp").forward(request, response);

} catch (ServletException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

weixin_39526185

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值