求解

liu75231 2020-04-18 06:31:04
写了个注册页面到数据库
一直出错
空指针异常

java.lang.NullPointerException
production.jdbc.JDBCUtil.edit(JDBCUtil.java:28)
production.service.UserService.addUser(UserService.java:19)
production.UserServlet.register(UserServlet.java:62)
production.UserServlet.doGet(UserServlet.java:39)
production.UserServlet.doPost(UserServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
package production.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCUtil {
public static ResultSet queryForAll( String sql , Object[] objs){
Connection conn = getConnect();
ResultSet rs = null ;
try {
PreparedStatement psmt = conn.prepareStatement(sql);
for (int i = 0; i < objs.length; i++) {
psmt.setString(i+1, objs[i].toString());
}
rs = psmt.executeQuery();
} catch (SQLException e) {
System.out.println("执行sql语句时发生异常:错误码" + e.getErrorCode() + "," + e.getMessage());
}
return rs;
}
public static int edit(String sql , Object[] params ){
Connection conn = getConnect();
int result = 0 ;
try {
PreparedStatement psmt = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
psmt.setString(i+1, params[i].toString());
}
result = psmt.executeUpdate();
} catch (SQLException e) {
System.out.println("执行sql语句时发生异常:错误码" + e.getErrorCode() + "," + e.getMessage());
}
return result ;
}

private static Connection getConnect() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/company"
+ "?characterEncoding=utf-8", "root", "password");
} catch (ClassNotFoundException e) {
System.out.println("加载数据库驱动异常:" + e.getMessage());
} catch (SQLException e) {
System.out.println("获取数据库链接异常:" + e.getMessage());
}
return conn;
}

}


package production.service;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import production.Production;
import production.jdbc.JDBCUtil;
import production.User;


public class UserService {

public void addUser(User user) {
String sql = "insert into user (username, password , phone ,email ) " + " values ( ? , ? , ? , ?) ";
JDBCUtil.edit(sql, new Object[]{user.getUsername(),user.getPassword(), user.getPhone(),user.getEmail()});
}

public boolean checkUser(String username, String password) throws SQLException {
// TODO Auto-generated method stub
String sql = "select * from user where username = ? and password = ? " ;
ResultSet rs = JDBCUtil.queryForAll(sql, new Object[]{username , password} );
while(rs.next()){
return true;
}
return false;
}
public List<Production> queryUserList(Map hashMap) throws SQLException {
List<Production> userList = new ArrayList<>();
String sql = "select * from user where 1=1 ";
String whereSql = "";
Object[] params = new Object[hashMap.size()];
Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
int index = 0 ;
for (Map.Entry<String, String> entry : entrySet) {
whereSql += " and "+ entry.getKey() + " like ? " ;
params[index] = entry.getValue();
index++;
}
ResultSet rs = JDBCUtil.queryForAll(sql + whereSql, params);
while(rs.next()){
Production user = new Production();
user.setId(rs.getInt("id"));
user.setProname(rs.getString("proname"));
user.setUsername(rs.getString("username"));
user.setProyield(rs.getDouble("proyield"));
user.setEvaluate(rs.getString("evaluate"));
user.setChoose(rs.getString("choose"));
userList.add(user);
}
return userList;
}

}
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import production.User;
import production.service.UserService;

/**
* Servlet implementation class UserServlet
*/
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public UserServlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String act = request.getParameter("act");
if("register".equals(act)){
register(request,response);
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
private void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
System.out.println("用户名:" + username);
System.out.println("密码:" + password);
System.out.println("电话:" + phone);
System.out.println("邮箱:" + email);
//向数据库中添加数据
User user = new User(username , password , phone , email );
UserService service = new UserService();
service.addUser(user);
request.setAttribute("msg", "注册成功");
RequestDispatcher rd = request.getRequestDispatcher("html/login.jsp");
rd.forward(request, response);

}

}

...全文
125 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-04-20
  • 打赏
  • 举报
回复
引用 2 楼 liu75231 的回复:
获取数据库链接异常 这是什么问题
看你的驱动加载程序 Class.forName("com.mysql.jdbc.Driver"); conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/company" + "?characterEncoding=utf-8", "root", "password"); 你这加载驱动是mysql5.0的版本,mysql8.0的话,先确认一下mysql的版本吧 Class.forName("com.mysql.cj.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
weixin_42406618 2020-04-20
  • 打赏
  • 举报
回复
System.out.println("用户名:" + username); System.out.println("密码:" + password); System.out.println("电话:" + phone); System.out.println("邮箱:" + email); 你这几个打印出来都有值?
liu75231 2020-04-18
  • 打赏
  • 举报
回复
获取数据库链接异常
这是什么问题
纯技术男人 2020-04-18
  • 打赏
  • 举报
回复
debugger看看

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧