67,513
社区成员
发帖
与我相关
我的任务
分享
QueryMessageServlet.java
package com.MSG2.servlet;
import java.io.IOException;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class QueryMessageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
private static final long serialVersionUID = 6370397999953861485L;
private List<Map<String,Object>> query(String serial,Connection conn) throws SQLException{
String sql1 = "SELECT Message,number,messa,user,Raply FROM reply WHERE Message=?";
PreparedStatement pst = conn.prepareStatement(sql1);
pst.setString(1, serial);
ResultSet rs = pst.executeQuery();
if (rs != null && rs.next()){
List<Map<String,Object>> list1 = new ArrayList<Map<String,Object>>();
while (true) {
Map<String, Object> map1 = new HashMap<String,Object>();
map1.put("Message",rs.getString("Message"));
map1.put("number",rs.getString("number"));
map1.put("messa",rs.getString("messa"));
map1.put("user",rs.getString("user"));
map1.put("Raply",rs.getString("Raply"));
List<Map<String,Object>> l = query(rs.getString("Message"),conn);
map1.put("replys", l);
list1.add(map1);
if(!rs.next()){
break;
}
}
return list1;
}
return null;
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Connection conn = null;
String URL = "jdbc:mysql://localhost:3306/test3?useUnicode=true&characterEncoding=utf-8";
String USER = "root";
String PWD = "123456";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "SELECT serial,username,content FROM message";
PreparedStatement pre = conn.prepareStatement(sql);
ResultSet re = pre.executeQuery();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if (re != null) {
while (re.next()) {
Map<String, Object> map = new HashMap<String, Object>();
int serial1 = re.getInt("serial");
String serial = "" + serial1;
map.put("serial", serial);
map.put("username", re.getString("username"));
map.put("content", re.getString("content"));
List<Map<String,Object>> l = query(serial,conn);
map.put("replys", l);
list.add(map);
}
} else {
System.out.println("还未留言");
}
HttpSession session = req.getSession();
session.setAttribute("list",list);
session.setAttribute("list1",list);
resp.sendRedirect(req.getContextPath() + "/list.jsp");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
package com.MSG2.servlet;
import java.io.IOException;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class QueryMessageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
private static final long serialVersionUID = 6370397999953861485L;
private List<Map<String,Object>> query(String serial) throws SQLException{
Connection conn = null;
String sql1 = "SELECT Message,number,messa,user,Raply FROM reply WHERE Message=?";
PreparedStatement pst = conn.prepareStatement(sql1);
pst.setString(1, serial);
ResultSet rs = pst.executeQuery();
if (rs != null && rs.next()){
List<Map<String,Object>> list1 = new ArrayList<Map<String,Object>>();
while (true) {
Map<String, Object> map1 = new HashMap<String,Object>();
map1.put("Message",rs.getString("Message"));
map1.put("number",rs.getString("number"));
map1.put("messa",rs.getString("messa"));
map1.put("user",rs.getString("user"));
map1.put("Raply",rs.getString("Raply"));
List<Map<String,Object>> l = query(rs.getString("Message"));
map1.put("replys", l);
list1.add(map1);
if(!rs.next()){
break;
}
}
return list1;
}
return null;
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String URL = "jdbc:mysql://localhost:3306/test3?useUnicode=true&characterEncoding=utf-8";
String USER = "root";
String PWD = "123456";
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "SELECT serial,username,content FROM message";
PreparedStatement pre = conn.prepareStatement(sql);
ResultSet re = pre.executeQuery();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if (re != null) {
while (re.next()) {
Map<String, Object> map = new HashMap<String, Object>();
int serial1 = re.getInt("serial");
String serial = "" + serial1;
map.put("serial", serial);
map.put("username", re.getString("username"));
map.put("content", re.getString("content"));
List<Map<String,Object>> l = query(serial);
map.put("replys", l);
list.add(map);
}
} else {
System.out.println("还未留言");
}
HttpSession session = req.getSession();
session.setAttribute("list",list);
session.setAttribute("list1",list);
resp.sendRedirect(req.getContextPath() + "/list.jsp");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
Connection conn = null;
String sql1 = "SELECT Message,number,messa,user,Raply FROM reply WHERE Message=?";
PreparedStatement pst = conn.prepareStatement(sql1);
conn为空会报空指针我知道,但是如果是从query(serial);传参数进来的话康恩又会受到的doPost()里面conn的印象出现死循环我试了很多方法包括把连接数据库的那块单独用一个函数但这样他又会报连接重复所有我现在也不知道怎么改了希望各位大神给个建议。
Connection conn = null;
String sql1 = "SELECT Message,number,messa,user,Raply FROM reply WHERE Message=?";
PreparedStatement pst = conn.prepareStatement(sql1);
conn为空会报空指针我知道,但是如果是从query(serial);传参数进来的话康恩又会受到的doPost()里面康涅狄格州的印象出现死循环我试了很多方法包括把连接数据库的那块单独用一个函数但这样他又会报连接重复所有我现在也不知道怎么改了希望各位大神给个建议。
Connection conn = null;
String sql1 = "SELECT Message,number,messa,user,Raply FROM reply WHERE Message=?";
PreparedStatement pst = conn.prepareStatement(sql1);
你看这里 明显有毛病
conn 还是一个null 你就调用了 一定会报空指针异常的