-2

我已经映射了一个 servlet 和一个 jsp 表单。填写完表格后,我应该会得到一个确认页面,其中包含所填写内容的摘要,并且应该发送一封电子邮件(使用 gmail 远程),但到目前为止没有任何反应,甚至没有错误消息。它加载回注册表所在的 jsp 文件。任何想法为什么会发生这种情况?

过程中根本没有数据库交互。

这是 Servlet:

package eBooks.controller;

import eBooks.business.User;
import eBooks.util.MailUtil;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.mail.MessagingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;

public class ContactServlet extends HttpServlet{

protected void doPost(HttpServletRequest request,
                      HttpServletResponse response)
                      throws ServletException, IOException
{
    // get parameters from the request
    String fName = request.getParameter("fName_contact");
    String lName = request.getParameter("lName");
    String emailAddress = request.getParameter("emailAddress");
    String subject = request.getParameter("subject_contact");
    String messageArea = request.getParameter("messageArea");

    // Create a user object and store the object
    User user = new User(fName, lName, emailAddress, subject, messageArea);

    HttpSession session = request.getSession();
    session.setAttribute("user", user);

    // send email to user

    String to = emailAddress;
    String from = "somemail@gmail.com";
    String emailSubject = subject;
    String body = "Dear " + fName + ", \n\n"+
            "Thanks for contacting us. This is a confirmation to inform you that"
            + "we received your message.\n\n"
            + "Our team is reviewing your message and we will get back to you as soon"
            + "as possible. \n\n"
            + "Regards,\n\n"
            + "Matt \n"
            + "CEO";
    boolean isBodyHtml = false;

    try
    {
        MailUtil.sendMail(to, from, emailSubject, body, isBodyHtml);
    }
    catch(MessagingException e)
    {
        String errorMessage =
              "Error Unable to send email. " +
                "Check your Server (Glassfish) logs for details.<br/>" +
                "Note: You may need to configure your system again.<br/>"+ 
              "Error Message: " + e.getMessage();
        request.setAttribute("errorMessage", errorMessage);
        this.log(
                "Unable to send email. \n" +
                "Here is the email you tried to send \n"+
                "====================================\n"+
                "To:" + emailAddress + "\n"+
                "FROM: " + from + "\n" +
                "SUBJECT: " + subject + "\n"+
                "\n" +
                body + "\n\n");
    }

    // forward request and response to JSP page
    String url = "/WEB-INF/view/confirmation.jsp";
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
    dispatcher.forward(request, response);
}

}

这是联系表格:

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    <%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
    <head>


        <link rel="stylesheet" type="text/css" href="css/stylesheet.css">

        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

        <title>Contact</title>

    </head>

    <body>

    <div id="page-container">

<c:import url="/WEB-INF/includes/main-nav.jspf"/>

            <div id="header-content">     

                <h1> [ Contact ] </h1>
                <p>&nbsp;</p>
                <p>&nbsp;</p>

                <h2>Share your thoughts with us:</h2>


                <form action="contactEmail" method="post">

                        <p class="name">
                                <input type="text" name="fName" id="fName"
                                       value ="${User.fName}"/>

                                <label for="fName">First Name</label>
                        </p>

                        <p class="name">
                                <input type="text" name="lName" id="lName"
                                    value ="${user.lName}"/>
                                <label for="lName">Last Name</label>
                        </p>

                        <p class="email">
                                <input type="text" name="emailAddress" id="emailAddress"
                                    value="${user.emailAddress}"/>
                                <label for="emailAddress">E-mail</label>
                        </p>

                        <p class="web">
                                <input type="text" name="subject" id="subject"
                                       value="${user.subject}"/>
                                <label for="subject">Subject</label>
                        </p>

                        <p class="text-message">
                            <label for="messageArea">Your message: </label><br>
                            <br>                        
                            <textarea name="messageArea" id="messageArea" 
                                     >${user.message}</textarea>

                        </p>

                        <p class="submit">
                                <input type="button" 
                                       onClick="validate(this.form)" value="Submit">                
                        </p>

                    </form>

                <p>&nbsp;</p>


                <script language="JavaScript">
                    function validate(form){
                        if(form.fName.value==""){
                            alert("Please fill your first name");
                            form.fName.focus();
                        }
                        else if(form.lName.value==""){
                            alert("Please fill your last name");
                            form.lName.focus();
                        }
                        else if(form.subject.value==""){
                            alert("Please fill the subjetct");
                            form.subject.focus();                      
                        }
                        else if (form.messageArea.value==""){
                            alert("The message cannot be empty");
                            form.text_message_area.focus();
                        }

                        else{
                            form.submit();
                        } 
                    }
                </script>


            </div>


            <div id="content-assist">

                <div class ="padding">

                    <h2>We are located at:</h2>

                    <p>153 West 139th Street New York, NY<br>


                    </p>
                        <p>We are currently undergoing a 'face lift', so if you have any questions or would like more information about the services we provide please feel free to contact us.</p>

                    <h2>Give us a call:</h2>
                        <p>Phone:   212- 470-5024<br />
                        Fax:     (212) xxx xxxx<br />
                        Email:   <a href="mailto:info@noemailLuistest.com">info@LuisDomainTest.com</a><br />
                        ZIP: 10030, New York, USA</p>
                        <p><a href="contact.jsp">More contact information…&lt;/a></p>


                </div>


            </div>


    <c:import url="/WEB-INF/includes/footer.jspf"/>

这是确认jsp:

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">      

        <link rel="stylesheet" type="text/css" href="css/stylesheet.css">

        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

        <title>Dashboard</title>
    </head>
    <body>

<div id="page-container">

    <c:import url="/WEB-INF/includes/main-nav.jspf"/>


    <div id="confirmation-top">     

            <h2>[ Confirmation ]</h2>


        </div>


        <div id="confirmation">     

            <h2> Awesome! We got your message </h2>

            <p>Thanks for contacting us. Your message has been submitted and it
            will be reviewed by our specialist in the order in which it was received.</br>
            <br>    

            A confirmation email has been sent to ${sessionScope.user.emailAddress} </p>

            <form action="index.jsp">
                <input type="submit" value="/index.jps" name="home_btn" />
            </form>

                <p>
                    <i>${requestScope.errorMessage}</i>
                </p>

            <br>
        </div>

    <c:import url="/WEB-INF/includes/footer.jspf"/>

这是 emailUtil:

    package eBooks.util;



import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Address;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailUtil {

    //private static String mailhost = "smtp.gmail.com";

    public static void sendMail(String to, String from, String body, 
                                String subject, boolean bodyIsHtml)
                                throws MessagingException
    {

        // 1 - get session 
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtps");
        props.put("mail.smtps.host", "smtp.gmail.com");
        props.put("mail.smtps.port", 465);
        props.put("mail.smtps.auth", "true");
        props.put("mail.smtps.quitwait", "false");
        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);

        // 2 - create a message
        Message message = new MimeMessage(session);
        message.setSubject(subject);
        if(bodyIsHtml)
            message.setContent(body, "text/html");
        else
            message.setText(body);

        // 3 - address the message
        Address fromAddress = new InternetAddress(from);
        Address toAddress = new InternetAddress(to);
        message.setFrom(fromAddress);
        message.setRecipient(Message.RecipientType.TO, toAddress);

        // 4 - send the message
        Transport transport = session.getTransport();
        transport.connect("somemail2@gmail.com", "password123");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

}

这是 servlet xml:

    <!-- the definition fo r the servlets -->
<servlet>
    <servlet-name>ContactServlet</servlet-name>
    <servlet-class>eBooks.controller.ContactServlet</servlet-class>
</servlet>
<!-- the mapping for the servlets -->
<servlet-mapping>
    <servlet-name>ContactServlet</servlet-name>
    <url-pattern>/WEB-INF/view/contactEmail</url-pattern>
</servlet-mapping>
4

1 回答 1

0

您是否检查过 servlet 是否被调用?

问题出在这里 <form action="contactEmail" method="post"> ,你的映射说 <url-pattern>/WEB-INF/view/contactEmail</url-pattern>

尝试改变

<url-pattern>/contactEmail</url-pattern>

于 2012-05-17T05:54:12.433 回答