私は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 {}
これは私が使用しているサーブレットです。
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);
}
}
}
すべてのコードを、JSPではなく、Javaソースファイルに置きます。 JSP内には、すでにセッションと呼ばれる暗黙のローカル変数があり、HTTPセッションを表しています。 JSPには、単一のJavaコード行しかないはずです。これらはビューコンポーネントであり、JSP EL、JSTL、およびその他のタグライブラリを使用してHTMLを生成するだけです。 –
@JBニジェットありがとうございます。私は、JSPがJavaコードをほとんど持ってはいけないという事実を認識しています。しかし、サーブレットに電子メール送信コードをどこに置くかを決めることができないような混乱があったので、代わりに最終的なJSPにすべてを入れようとしました。私はこのコードをどこに置くことができるかわからないので、ユーザーが正しいデータを提出するとすぐに、彼/彼女はイミデーションの電子メールを受け取ります。 – New2Java
さて、あなたのdoPost()メソッドのelseブロックからメールを送信するメトスを呼び出してください:これは、送信を処理するメソッド、送信が有効であることを知っている広告、そうですか? –