老師,為何報空指針錯誤???

老師,為何報空指針錯誤???

jsp代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

    <head>

        <meta charset="UTF-8">

        <title>新建留言</title>

        <link rel="stylesheet" href="css/bootstrap.min.css">

        <link rel="stylesheet" href="css/add.css">

    </head>

    <body>

        <nav class="navbar navbar-default">

            <div class="container">

                <div class="navbar-header">

                    <a class="navbar-brand" href="#">

                        慕课网留言板

                    </a>

                </div>

            </div>

        </nav>

        <div class="container">

            <div class="jumbotron">

                <h1>Hello, ${user.name}!</h1>

                <p>既然来了,就说点什么吧</p>

            </div>

            <div class="page-header">

                <h3><small>新建留言</small></h3>

            </div>

            <form class="form-horizontal" action="${pageContext.request.contextPath}/edit_msg" method="post">

            <input type="hidden" name="id" value="add">

                <div class="form-group">

                    <label for="inputTitle" class="col-sm-2 control-label">标题 :</label>

                    <div class="col-sm-8">

                        <input name="title" class="form-control" id="inputTitle" placeholder="title">

                    </div>

                </div>

                <div class="form-group">

                    <label for="inputContent" class="col-sm-2 control-label">内容 :</label>

                    <div class="col-sm-8">

                        <textarea name="content"  class="form-control" rows="3" id="inputContent" placeholder="Content"></textarea>

                    </div>

                </div>

                <div class="form-group">

                    <div class="col-sm-offset-2 col-sm-10">

                        <button type="submit" class="btn btn-primary">发布留言</button>&nbsp;&nbsp;&nbsp;

                    </div>

                </div>

                <div class="form-group">

                    <div class="col-sm-offset-2 col-sm-10">

                        <a class="btn btn-default" href="">查看留言</a>

                    </div>

                </div>

            </form>

        </div>

        <footer class="text-center" >

            copy@imooc

        </footer>

    </body>

</html>



servlet 代碼



package servlet;


import java.io.IOException;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;


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 domain.Msg;

import domain.User;

import services.MessageServices;


/**

 * Servlet implementation class Edit_msg

 */

@WebServlet("/edit_msg")

public class Edit_msg extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public Edit_msg() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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


}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

String method = request.getParameter("id");

String title = request.getParameter("title");

String content = request.getParameter("content");

                   User u=(User) request.getAttribute("user");

              MessageServices message = new MessageServices();

                int userid =0;

try {

userid = message.query(u.getName());

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

                 

                   String username = u.getName();

Msg m= new Msg();

m.setId(userid);

m.setUserName(username);

m.settitle(title);

m.setContent(content);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd-hh:mm:ss");

Date d =new Date();

String date=   sdf.format(d);

System.out.println(d);

m.setCreateTime(date);

if(method.equals("add")){

 

MessageServices ms = new MessageServices();

 

ms.add(m);

}

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

}


}

services代碼

package services;


import java.sql.SQLException;


import Dao.MessageDao;

import domain.Msg;

import domain.User;


public class MessageServices {


public void editMessage(){

}



public Integer query(String name) throws SQLException{

MessageDao md = new  MessageDao();

   User user=      md.query(name);

return user.getId() ;

}

public void add(Msg m) {


MessageDao md = new  MessageDao();

md.add(m);

}

}



dao代碼


package Dao;


import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


import Utils.JDBCUtils;

import domain.Msg;

import domain.User;


public class MessageDao {



ResultSet rs = null;

PreparedStatement ps =null;

Connection  conn =null;


public void add(Msg m) {


try {

conn  = JDBCUtils.getConnection();

String sql = "insert msg values(null,?,?,?,?,?)";

ps = conn.prepareStatement(sql);

ps.setInt(1, m.getUserId());

ps.setString(2, m.getUserName());

ps.setString(3, m.gettitle());

ps.setString(4, m.getContent());

ps.setString(5, m.getCreateTime());

ps.execute(sql);

JDBCUtils.release(ps, conn);

} catch (SQLException e) {

e.printStackTrace();

}

}


public User query(String name) throws SQLException {

conn  = JDBCUtils.getConnection();

String sql = "select * from user where name=?";

ps = conn.prepareStatement(sql);

ps.setString(1, name);

rs= ps.executeQuery();

if(rs.next()){

User u = new User();

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

return u;

}

JDBCUtils.release(rs, ps, conn);

return null;

}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2020-07-20 14:32:52

同学你好,报错提示是空指针异常,错误出现在Edit_msg的doPost()方法的55行,如:

http://img1.sycdn.imooc.com//climg/5f153a2209f0b08604640122.jpg

建议同学查看一下第55行是哪一行的代码,是哪个对象为null。

祝:学习愉快~

好帮手慕阿慧 2020-07-18 14:22:45

同学你好,

1、调用add方法传入的Msg对象没有设置userId属性,导致add方法中m.getUserId()为null。参考代码如下:

http://img1.sycdn.imooc.com//climg/5f1294f10995406703210104.jpg

2、插入数据,应该调用executeUpdate()方法,参考代码如下:

http://img1.sycdn.imooc.com//climg/5f12953009cc8ebe05920332.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕虎5419128 #1
    修改後還是報錯 java.lang.NullPointerException at servlet.Edit_msg.doPost(Edit_msg.java:55)
    2020-07-20 11:49:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师