qq_43390459 2019-05-25 20:05 采纳率: 50%
浏览 331

用MVC模式注册登录到到数据库中报505

严重: Servlet.service() for servlet [Servlet.registerServlet] in context with path [/javaee_mvc_03] threw exception
java.lang.NullPointerException
at Dao.userDao.register(userDao.java:65)
at Servlet.registerServlet.doPost(registerServlet.java:41)
at Servlet.registerServlet.doGet(registerServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

相关代码:
##userDao.java
package Dao;

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

import bean.User;
import conn.DBconn;

public class userDao implements InterfaceUser{
@Override
public List getAllUsers(){
List list = new ArrayList();
Connection conn = DBconn.getConn();
String sql = "select * from thing";
try {
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("name"));
user.setPassword(rs.getString("password"));
list.add(user);
}
rs.close();
pst.close();
} catch(SQLException e){
e.printStackTrace();
}
return list;
}

@Override
public User userLogin(String username, String passwords) {
    User user = null;
    PreparedStatement pst = null;
    Connection conn = DBconn.getConn();
    String sql = "select * from thing where name= ? and password= ?";
    try{
        pst = conn.prepareStatement(sql);
        pst.setString(1,username);
        pst.setString(2,passwords);
        ResultSet rs = pst.executeQuery();
        if (rs.next()){
            user = new User();
            user.setUsername(rs.getString("name"));
            user.setPassword(rs.getString("password"));
        }
        pst.close();
    }catch (SQLException e){
        e.printStackTrace();
    }
    return user;
}
@Override
public boolean register(User user){
    Connection conn = DBconn.getConn();
    String sql = "insert into thing(id, name, password) values(?,?,?)";
    int i = 0;        
    try{
        PreparedStatement pst = conn.prepareStatement(sql);
        pst.setInt(1, user.getId());
        pst.setString(2, user.getUsername());
        pst.setString(3, user.getPassword());
        i = pst.executeUpdate();
        pst.close();
    } catch (SQLException e){
        e.printStackTrace();
    }
    return i > 0;
}

@Override
public boolean updateUser(User user){
    Connection conn = DBconn.getConn();
    String sql = "UPDATE thing SET name=?, password=? where id=?";
    int i = 0;
    try{
        PreparedStatement pst = conn.prepareStatement(sql);**//报错在这**
        pst.setString(1, user.getUsername());
        pst.setString(2, user.getPassword());
        pst.setInt(3,user.getId());
        i = pst.executeUpdate();
        pst.close();
    } catch(SQLException e){
        e.printStackTrace();
    }
    return i > 0;
}

@Override
public boolean deleteUser(User user){
    Connection conn = DBconn.getConn();
    String sql = "DELETE FROM thing where id = " + user.getId();
    int i = 0;
    try{
        PreparedStatement pst = conn.prepareStatement(sql);
        i = pst.executeUpdate();
        pst.close();
    }catch (SQLException e){
        e.printStackTrace();
    }
    return i > 0;
}}

## registerServlet.java
package Servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.userDao;
import bean.User;

@WebServlet("/registerServlet")
public class registerServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public registerServlet() {
        super();
    }

    public void destroy() {
        super.destroy();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);**//报错在这**
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");    
        String name = request.getParameter("username"); 
        String pwd = request.getParameter("password");  
        User user = new User();
        user.setUsername(name);
        user.setPassword(pwd);
        userDao ud = new userDao();
        if(ud.register(user)){  **//报错在这**
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }
        else {
            response.sendRedirect("index.jsp");
        }
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }
}

登录功能也差不多是这样,捣鼓了4天还是搞不定。。。
  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2019-05-25 21:50
    关注

    java.lang.NullPointerException
    at Dao.userDao.register(userDao.java:65)
    这行代码空指针了,检查下这里的代码,看看那个对象是空的,加上判断语句,然后打断电逐步调试。
    最有可能是数据库连接的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器