java - 来自控件的 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());
解决方案
仅当会话 cookie 用于识别该会话时,会话才会相同。如果客户端未存储会话 cookie,则 getSession() 每次都会创建一个新会话,并且 session.getAttribute() 将返回 null,就像您看到的情况一样。
推荐阅读
- python - Telethon client.conversation() 不起作用
- python - 在 python 程序中使用 su 执行命令
- php - PHP:使用laravel将json数组插入mysql
- django-rest-framework - Django rest框架多搜索
- javascript - 使用把手单击图像时显示视频?
- python - 如何使用 mathplotlib 绘制 CSV 文件?
- selenium - Roku WebDriver 设置是否适用于我的 Java 框架
- php - PHP 我无法在显示 PDF 文件的 HTML 页面上显示按钮
- java - 重写时如何正确调用超类方法?
- firebase - Google Firestore - 没有分页的 REST API