首页 > 解决方案 > 来自控件的 java.lang.NullPointerException 来自 gmail 到 servlet 页面

问题描述

Web.jsp

<form action="SMail" method="post">
			Email: <input type="text" name="email" required /> <br>
			<br> Password: <input type="text" name="psw" required /> <br>
			<br> <input type="submit" value="submit" />
</form>

邮件.java

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String eemail = request.getParameter("email");
    String spsw = request.getParameter("psw");

    HttpSession session1 = request.getSession();
    session1.setAttribute("semail", eemail);

    try {
        String from = "xxx@gmail.com";
        String host = "smtp.gmail.com";

        Properties properties = System.getProperties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "465");
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.auth", "true");

        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {

            protected PasswordAuthentication getPasswordAuthentication() {

                return new PasswordAuthentication("xxx@gmail.com", "xxx");

            }

        });

        // Used to debug SMTP issues
        session.setDebug(true);

        // Create a default MimeMessage object.
        MimeMessage message = new MimeMessage(session);

        // Set From: header field of the header.
        message.setFrom(new InternetAddress(from));

        // Set To: header field of the header.
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(eemail));

        // Set Subject: header field
        message.setSubject("Successful Registartion");

        // Now set the actual message
        // message.setText("Hello");
        message.setContent(
                "<h4>Confirmation registration by clicking the below link <br><br> <a href='http://localhost:6335/WebApp/Web'>Click me</a><h4>",
                "text/html");

        System.out.println("sending...");
        // Send message
        Transport.send(message);
        System.out.println("Sent message successfully....");

    } catch (Exception e) {
        System.out.println(e);
    }
}

网页.java

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter w = response.getWriter();

    HttpSession session1 = request.getSession();
    w.println(session1.getAttribute("semail").toString());
    System.out.println(session1.getAttribute("semail").toString());
}


java.lang.NullPointerException
at Web.doGet(Web.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)
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)

我希望在 Web.java 中打印会话属性(即电子邮件)。但我得到 NullPointer Exception 。当控件不转到 gmail 时打印会话属性。是否因为当控制从 gmail 返回到 Web servlet 时,会话属性变为 Null 我在代码中哪里出错了。我已经完成了所有解决方案,但它不起作用。请有人可以帮助我使用正确的代码来打印 Web.java 中的会话属性

NullPointerException at line:
w.println(session1.getAttribute("semail").toString());

标签: java

解决方案


仅当会话 cookie 用于识别该会话时,会话才会相同。如果客户端未存储会话 cookie,则 getSession() 每次都会创建一个新会话,并且 session.getAttribute() 将返回 null,就像您看到的情况一样。


推荐阅读