我正在使用Google App Engine编写应用程序。 该应用程序现在可以接收电子邮件,我可以在控制台中看到这些。
我想要的是前端(guestbook.jsp)中可以看到三个变量(摘要,地址和文本)。 我尝试了各种选项(参见注释代码),但没有一个向我展示前端的信息。 到现在为止,我只尝试传递一个变量(摘要)。
稍后我想将信息存储在数据库中。
的Servlet
package com.example.mail;
import java.io.IOException;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.*;
import javax.mail.Address;
public class MailHandlerServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try{
MimeMessage message = new MimeMessage(session, req.getInputStream());
String summary = message.getSubject();
Address[] addresses = message.getFrom();
String text = message.getContent().toString();
System.out.println("Subject: " + summary);
System.out.println("Sender: " + addresses);
System.out.println("Text: " + text);
req.setAttribute("summary",summary);
req.getRequestDispatcher("/mail.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
mail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css"/>
</head>
<body>
Hello World!
<p>E-Mail Summary '${summary}'.</p>
</body>
</html>
Web.xml中:
<servlet>
<servlet-name>mailhandler</servlet-name>
<servlet-class>com.example.mail.MailHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mailhandler</servlet-name>
<url-pattern>/_ah/mail/string@appid.appspotmail.com</url-pattern>
</servlet-mapping>
如果有人可以帮助我会很好。
答案 0 :(得分:0)
您需要使用request.setAttribute("summary", summary);
添加摘要作为请求属性,并且由于重定向不是服务器端,它的客户端,属性不再显示,您需要使用req.getRequestDispatcher("mail.jsp").forward(req, resp);