Avatar billede tokai Nybegynder
04. marts 2010 - 18:36 Der er 12 kommentarer og
1 løsning

har 2 submit knapper hvis jeg udkommentere den ene i min Servlet virker det fint

Men hvis prøver at adskille koden i min servlet får jeg en null pointer exception

kode i Servlet

dette fungerer fint
//denne kode henter data fra hmtlside tabellen
        if(request.getParameter("hent data").equals("hent data")){
        System.out.println("kommer her");
            Connection con = null;
        int id;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
                    "d");

            if (!con.isClosed())
                System.out.println("Successfully connected to "
                        + "MySQL server using TCP/IP...");
            String i = request.getParameter("group");
            id    = new Integer(i).intValue();
           
            PreparedStatement ps = con.prepareStatement("select title,overskrift,tekst from htmlside where id = ?");
            ps.setInt(1, id);
           
            ResultSet res = ps.executeQuery();
            String title ="";
            String overskrift ="";
            String tekst = "";
            while(res.next()) {
            title = res.getString("title");
            overskrift = res.getString("overskrift");
            tekst = res.getString("tekst");   
            }
           
            HttpSession ses = request.getSession();
           
            ses.setAttribute("tekst", tekst);
            ses.setAttribute("title", title);
            ses.setAttribute("overskrift", overskrift);
            ses.setAttribute("radioButtonId", id + "");
           

        } catch (Exception e) {
            System.err.println("Exception: " + e.getMessage());
        } finally {
            try {
                if (con != null)
                    con.close();
            } catch (SQLException e) {
            }
        }//end hent data
           
           
       
           
           
           
            response.sendRedirect("controller.jsp");

dette giver nullpoint exception

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
       
        if(request.getParameter("indsend").equals("indsend")) {
            System.out.println(true);
            response.sendRedirect("controller.jsp");
        }
       
        System.out.println(request.getParameter("indsend"));
       
        System.out.println("hent data "+request.getParameter("hent data"));
       
       
        //denne kode henter data fra hmtlside tabellen
        if(request.getParameter("hent data").equals("hent data")){
        System.out.println("kommer her");
            Connection con = null;
        int id;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
                    "d");

            if (!con.isClosed())
                System.out.println("Successfully connected to "
                        + "MySQL server using TCP/IP...");
            String i = request.getParameter("group");
            id    = new Integer(i).intValue();
           
            PreparedStatement ps = con.prepareStatement("select title,overskrift,tekst from htmlside where id = ?");
            ps.setInt(1, id);
           
            ResultSet res = ps.executeQuery();
            String title ="";
            String overskrift ="";
            String tekst = "";
            while(res.next()) {
            title = res.getString("title");
            overskrift = res.getString("overskrift");
            tekst = res.getString("tekst");   
            }
           
            HttpSession ses = request.getSession();
           
            ses.setAttribute("tekst", tekst);
            ses.setAttribute("title", title);
            ses.setAttribute("overskrift", overskrift);
            ses.setAttribute("radioButtonId", id + "");
           

        } catch (Exception e) {
            System.err.println("Exception: " + e.getMessage());
        } finally {
            try {
                if (con != null)
                    con.close();
            } catch (SQLException e) {
            }
        }//end hent data
           
           
       
           
           
           
            response.sendRedirect("controller.jsp");   
        }

    }
Avatar billede tokai Nybegynder
04. marts 2010 - 18:47 #1
dette giver nullpoint exception

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

    //her er problemet
        if(request.getParameter("indsend").equals("indsend")) {
            System.out.println(true);
            response.sendRedirect("controller.jsp");
        }
       
        System.out.println(request.getParameter("indsend"));
       
        System.out.println("hent data "+request.getParameter("hent data"));
       
       
        //denne kode henter data fra hmtlside tabellen
        if(request.getParameter("hent data").equals("hent data")){
        System.out.println("kommer her");
            Connection con = null;
        int id;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
                    "d");

            if (!con.isClosed())
                System.out.println("Successfully connected to "
                        + "MySQL server using TCP/IP...");
            String i = request.getParameter("group");
            id    = new Integer(i).intValue();
           
            PreparedStatement ps = con.prepareStatement("select title,overskrift,tekst from htmlside where id = ?");
            ps.setInt(1, id);
           
            ResultSet res = ps.executeQuery();
            String title ="";
            String overskrift ="";
            String tekst = "";
            while(res.next()) {
            title = res.getString("title");
            overskrift = res.getString("overskrift");
            tekst = res.getString("tekst");   
            }
           
            HttpSession ses = request.getSession();
           
            ses.setAttribute("tekst", tekst);
            ses.setAttribute("title", title);
            ses.setAttribute("overskrift", overskrift);
            ses.setAttribute("radioButtonId", id + "");
           

        } catch (Exception e) {
            System.err.println("Exception: " + e.getMessage());
        } finally {
            try {
                if (con != null)
                    con.close();
            } catch (SQLException e) {
            }
        }//end hent data
Avatar billede arne_v Ekspert
04. marts 2010 - 18:49 #2
I hvilken linie får du den NullPointerException ?
Avatar billede tokai Nybegynder
04. marts 2010 - 18:53 #3
java.lang.NullPointerException
    servlets.ControllerServlet.doPost(ControllerServlet.java:103)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Avatar billede tokai Nybegynder
04. marts 2010 - 18:55 #4
java.lang.NullPointerException
    at servlets.ControllerServlet.doPost(ControllerServlet.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Avatar billede tokai Nybegynder
04. marts 2010 - 18:59 #5
java.lang.NullPointerException
    servlets.ControllerServlet.doPost(ControllerServlet.java:100)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717
Avatar billede arne_v Ekspert
04. marts 2010 - 19:01 #6
Og hvilke linier er linie 100 og linie 103 ?
Avatar billede tokai Nybegynder
04. marts 2010 - 19:11 #7
jeg er lost hvordan får jeg eclipse til at vise linie numre
Avatar billede arne_v Ekspert
04. marts 2010 - 19:19 #8
Når du står på en linie vises linie og kolonne nummer nede i bunden.

Pil ned indtil du når det rigtige nummer.
Avatar billede tokai Nybegynder
04. marts 2010 - 19:22 #9
package servlets;

import java.io.IOException;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Servlet implementation class ControllerServlet
*/
public class ControllerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

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

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    *      response)
    */
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
//        Connection con = null;
//        int id;
//        try {
//            Class.forName("com.mysql.jdbc.Driver").newInstance();
//            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
//                    "vlot9024");
//
//            if (!con.isClosed())
//                System.out.println("Successfully connected to "
//                        + "MySQL server using TCP/IP...");
//            String i = request.getParameter("id");
//            id    = new Integer(i).intValue();
//           
//            PreparedStatement ps = con.prepareStatement("select tekst from htmlside where id = ?");
//            ps.setInt(1, id);
//           
//            ResultSet res = ps.executeQuery();
//            String tekst = "";
//            while(res.next()) {
//            tekst = res.getString("tekst");   
//            }
//           
//            HttpSession ses = request.getSession();
//           
//            ses.setAttribute("tekst", tekst);
//            ses.setAttribute("radioButtonId", id + "");
//           
//
//        } catch (Exception e) {
//            System.err.println("Exception: " + e.getMessage());
//        } finally {
//            try {
//                if (con != null)
//                    con.close();
//            } catch (SQLException e) {
//            }
//           
//            String s = request.getParameter("indsend");
//            String s2 = request.getParameter("pis");
//            System.out.println(s);
//            System.out.println(s2);
//           
//            System.out.println("group =" + request.getParameter("c"));
//           
//           
//           
//            response.sendRedirect("controller.jsp");   
    //    }

    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    *      response)
    */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
       
       
       
       
       
       
        //denne kode henter data fra hmtlside tabellen
        if(request.getParameter("hent data").equals("hent data")){
        System.out.println("kommer her");
            Connection con = null;
        int id;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
                    "vlot9024");

            if (!con.isClosed())
                System.out.println("Successfully connected to "
                        + "MySQL server using TCP/IP...");
            String i = request.getParameter("group");
            id    = new Integer(i).intValue();
           
            PreparedStatement ps = con.prepareStatement("select title,overskrift,tekst from htmlside where id = ?");
            ps.setInt(1, id);
           
            ResultSet res = ps.executeQuery();
            String title ="";
            String overskrift ="";
            String tekst = "";
            while(res.next()) {
            title = res.getString("title");
            overskrift = res.getString("overskrift");
            tekst = res.getString("tekst");   
            }
           
            HttpSession ses = request.getSession();
           
            ses.setAttribute("tekst", tekst);
            ses.setAttribute("title", title);
            ses.setAttribute("overskrift", overskrift);
            ses.setAttribute("radioButtonId", id + "");
           

        } catch (Exception e) {
            System.err.println("Exception: " + e.getMessage());
        } finally {
            try {
                if (con != null)
                    con.close();
            } catch (SQLException e) {
            }
        }//end hent data
            if(request.getParameter("indsend") != null) {
            System.out.println(request.getParameter("indsend"));
            }
           
           
           
            response.sendRedirect("controller.jsp");   
        }

    }

}
linie 143
Avatar billede arne_v Ekspert
04. marts 2010 - 19:29 #10
linie 143 er:

if(request.getParameter("indsend") != null) {

Det lyder mystisk at den skulle give NPE - request skulle aldrig være null.
Avatar billede tokai Nybegynder
04. marts 2010 - 20:59 #11
nu har jeg lavet 2 forms, den form der skal opdatere data, men det sker ikke kan du se fejlen arne

package servlets;

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 javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Servlet implementation class UpdateDataServlet
*/
public class UpdateDataServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public UpdateDataServlet() {
        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
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    *      response)
    */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // <jsp:useBean id="title" class="java.lang.String" scope="session"/>
        // <jsp:useBean id="overskrift" class="java.lang.String"
        // scope="session"/>
        // <jsp:useBean id="tekst" class="java.lang.String" scope="session"/>
        HttpSession ses = request.getSession();
        String title = (String) ses.getAttribute("title");
        String overskrift = (String) ses.getAttribute("overskrift");
        String tekst = (String) ses.getAttribute("tekst");
        String radioButtonId = (String) ses.getAttribute("radioButtonId");

        System.out.println(title);
        System.out.println(overskrift);
        System.out.println(tekst);
        System.out.println(radioButtonId);
       
        Connection con = null;
       
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///flex", "root",
                    "vlotds");

            if (!con.isClosed())
                System.out.println("Successfully connected to "
                        + "MySQL server using TCP/IP...");
           
           
            int id = new Integer(radioButtonId).intValue();
            PreparedStatement ps = con
                    .prepareStatement("update htmlside set title=?,overskrift=?,tekst=? where id =?");
            ps.setString(1, title);
            ps.setString(2, overskrift);
            ps.setString(3, tekst);
            ps.setInt(4, new Integer(radioButtonId).intValue());

            ps.executeUpdate();
           

        } catch (Exception e) {
            System.err.println("Exception: " + e.getMessage());
        } finally {
            try {
                if (con != null)
                    con.close();
            } catch (SQLException e) {
            }
            response.sendRedirect("controller.jsp");
        }
    }

}
Avatar billede tokai Nybegynder
04. marts 2010 - 22:25 #12
problem solved men hvis du vil have point smid et svar
Avatar billede tokai Nybegynder
05. marts 2010 - 00:32 #13
jkl
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester