2017-07-26 33 views
-2

我有這段代碼,我試圖用JAVA Mail API發送郵件。在eclipse中運行這段代碼時,我得到的錯誤是「在該行發現多個註釋:重複本地變量會話」。我已經聲明會話變量只有一次然後爲什麼我得到這個錯誤?爲什麼我在這裏得到「重複的局部變量錯誤」?

try{ 
    String host="smtp.gmail.com"; 
    String to="[email protected]"; 
    final String user="[email protected]"; 
    final String password="*********"; 
    Properties properties = System.getProperties(); 
    properties.setProperty("mail.smtp.host",host); 
    properties.put("mail.smtp.auth", "true"); 

    Session session = Session.getDefaultInstance(properties, 
    new javax.mail.Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
    return new PasswordAuthentication(user,password); 
    } 
    }); 
    MimeMessage message = new MimeMessage(session); 
    message.setFrom(new InternetAddress(user)); 
    message.addRecipient(Message.RecipientType.TO, 
          new InternetAddress(to)); 

    message.setSubject("Thank you subscriber"); 
    message.setContent("<table><tr><td>Name</td><td>+name+</td></tr><tr><td>Address</td><td>+Addr+</td></tr><tr><td>Age</td><td>+age+</td></tr><tr><td>Qualification</td><td>+Qual+</td></tr><tr><td>Percentage</td><td>+Persent+</td></tr><tr><td>Passout</td><td>+Year+</td></tr></table>","text/html"); 

    Transport.send(message); 
    System.out.println("message sent...."); 
} 
catch (MessagingException ex) {ex.printStackTrace();} 
finally {} 

這是我正在使用的servlet。

package com.registration; 

import java.io.IOException; 
import java.io.PrintWriter; 

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

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

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public RegistrationController() { 
     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 { 
     // TODO Auto-generated method stub 

     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     String name = request.getParameter("fullname"); 
     String Addr = request.getParameter("address"); 
     String age = request.getParameter("age"); 
     String Qual = request.getParameter("qual"); 
     String Persent = request.getParameter("percent"); 
     String Year = request.getParameter("yop"); 
     if(name.isEmpty()||Addr.isEmpty()||age.isEmpty()||Qual.isEmpty()||Persent.isEmpty()||Year.isEmpty()) 
     { 
      RequestDispatcher rd = request.getRequestDispatcher("registration.jsp"); 
      out.println("<font color=red>OOPS!! YOU MISSED OUT SOME FIELDS. FILL THEM AGAIN</font>"); 
      rd.include(request, response); 
     } 
     else 
     { 
      RequestDispatcher rd = request.getRequestDispatcher("home.jsp"); 
      rd.forward(request, response); 
     } 
    } 


} 
+2

將所有這些代碼放在它所屬的Java源文件中,而不是JSP。在JSP內部,已經有一個名爲session的隱式局部變量,代表HTTP會話。 JSP應該沒有任何一行Java代碼。它們是視圖組件,因此只能使用JSP EL,JSTL和其他標記庫生成HTML。 –

+0

謝謝@JB Nizet。我意識到JSP不應該擁有JAVA代碼。但是因爲我很困惑,因爲我無法決定將電子郵件發送到servlet的代碼的位置,所以我試圖將這一切都放到最終的JSP中。我不確定我可以在哪裏放置此代碼,以便用戶提交正確的數據後,他/她會收到一封直接的電子郵件。 – New2Java

+0

那麼,請調用方法從doPost()方法的else塊發送電子郵件:這是處理提交的方法,廣告是您知道提交有效的地方,對吧? –

回答

0

jsp有一個內置的會話變量,您可以實際使用。所以,既然你在重複使用它,你會得到重複的錯誤。

這相當於在servlet中執行Session session = request.getSession();

+0

您的代碼屬於一個servlet或一個單獨的java類,實際上不在jsp文件中。 JSP應該更多地處理生成UI。 –

+0

是@Joey我知道這個事實,JSP不應該塞滿Java代碼。由於這只是出於好奇,我試圖嘗試如何發送電子郵件,所以我只是在做。下次開始,我會將我的代碼保存在不同的類中... btw任何建議如何使用該會話?我應該如何修改該代碼? – New2Java

+0

將所有這些代碼放在一個servlet類中,並且您可以按原樣使用會話代碼。 –

相關問題