如何解决java dao查询中java.lang.NullPointerException?
本人初学者,不懂怎么修改,求大神帮我修改代码可用。
java.lang.NullPointerException com.highcom.dao.BaseDao.query(BaseDao.java:56) com.highcom.action.LoginServlet.doPost(LoginServlet.java:35) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) com.highcom.filter.ChinaFilter.doFilter(ChinaFilter.java:23)
BaseDao:
package com.highcom.dao;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class BaseDao {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
public void init(){
InputStream in = BaseDao.class.getResourceAsStream("jdbc.properties");
Properties pro = new Properties();
try {
pro.load(in);
Class.forName(pro.getProperty("Driver"));
conn = DriverManager.getConnection(pro.getProperty("Url"), pro.getProperty("User"), pro.getProperty("Pwd"));
st = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
public int update(String sql) {
this.init();
int a = 0;
try {
a = st.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
this.close();
return a ;
}
public ArrayList<Map<String,Object>> query(String sql) {
this.init();
try {
rs = st.executeQuery(sql);
// 执行查询返回结果集
} catch (Exception e) {
e.printStackTrace();
}
ArrayList<Map<String,Object>> list = new ArrayList<Map<String, Object>>();
try {
while (rs.next()) {
Map<String,Object> map = new HashMap<String,Object>();
for(int i =1;i<=rs.getMetaData().getColumnCount();i++) {
map.put(rs.getMetaData().getColumnName(i),rs.getObject(i));
}
list.add(map);
}
rs.close();
this.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
@SuppressWarnings("unchecked")
public ArrayList queryList(String sql) {
this.init();
ArrayList list = new ArrayList();
try {
rs = st.executeQuery(sql);
while(rs.next()){
for (int i = 1; i <=rs.getMetaData().getColumnCount(); i++) {
list.add(rs.getObject(i));
}
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
this.close();
return list;
}
private void close() {
try {
conn.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
LoginServlet类:
package com.highcom.action;
import java.io.IOException;
import java.util.ArrayList;
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;
import com.highcom.dao.BaseDao;
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String pwd = request.getParameter("password");
BaseDao bd = new BaseDao();
StringBuffer sql = new StringBuffer();
sql.append("select p_name from t_person where p_username='");
sql.append(username);
sql.append("'and p_pwd='");
sql.append(pwd);
sql.append("'");
ArrayList<Map<String,Object>> list = bd.query(sql.toString());
if(list.size()!=0){
String name = (String) list.get(0).get("p_name");
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("pwd", pwd);
session.setAttribute("name", name);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else {
response.sendRedirect("login.htm");
}
}
}
由最代码官方编辑于2016-4-19 21:21:55
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?