在jsp中调用java文件

在jsp中调用java文件,java,jsp,email,Java,Jsp,Email,我正在创建一个网页,希望在其中使用gmail smtp发送邮件。我尝试使用jsp页面,但没有成功,因此我在核心java中创建了一个代码,该代码成功发送电子邮件。现在我希望在jsp页面中使用此java代码。我尝试了,但出现错误 java代码: import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentic

我正在创建一个网页,希望在其中使用gmail smtp发送邮件。我尝试使用jsp页面,但没有成功,因此我在核心java中创建了一个代码,该代码成功发送电子邮件。现在我希望在jsp页面中使用此java代码。我尝试了,但出现错误

java代码:

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

public class SSL {
    public static void main(String [] args){
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("prakash.d2222","password");
                }
            });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("from@no-spam.com"));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("prakash_d22@rediffmail.com"));
            message.setSubject("hi");
            message.setText("12345" +
                    "\n\n No spam to my email, please!");

            Transport.send(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}
我的jsp代码

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

                <html>
                <body>
                <jsp:useBean id="link" scope="application" class = "SSL.class" />
<jsp:setProperty name="link" property="*" />

                </body>
                </html>

因此,请帮助我,因为我是jsp新手。

考虑以下建议:

  • .class
    文件必须放在WEB-INF/class下
  • 不要在默认包中创建类

  • 我在您的类中看不到任何
    getter/setter
    方法,因此无需在jsp页面中使用
    操作,也不包括对
    类的扩展

    <jsp:useBean id="link" scope="application" class="com.me.SSL" />
    
    您必须在JSP页面中调用show()方法:

    <jsp:useBean id="link" scope="application" class="com.me.SSL" />
    <%
      link.show();
    %> 
    
    
    


    考虑以下建议:

  • .class
    文件必须放在WEB-INF/class下
  • 不要在默认包中创建类

  • 我在您的类中看不到任何
    getter/setter
    方法,因此无需在jsp页面中使用
    操作,也不包括对
    类的扩展

    <jsp:useBean id="link" scope="application" class="com.me.SSL" />
    
    您必须在JSP页面中调用show()方法:

    <jsp:useBean id="link" scope="application" class="com.me.SSL" />
    <%
      link.show();
    %> 
    
    
    


    直接的问题是,在“class=…”属性中使用的是文件名而不是类名。由于您的类是在默认包中声明的(因为您的类中没有
    声明),因此您应该将
    useBean
    编写为:

    <jsp:useBean id="link" scope="application" class="SSL" />
    
    
    

    如果您还没有这样做,您应该确保“SSL.class”文件位于webapp的类路径上。例如,它可能位于“/WEB-INF/classes/”目录中,也可能位于“/WEB-INF/lib/”中的JAR文件中。直接的问题是,在“class=…”属性中使用的是文件名而不是类名。由于您的类是在默认包中声明的(因为您的类中没有
    声明),因此您应该将
    useBean
    编写为:

    <jsp:useBean id="link" scope="application" class="SSL" />
    
    
    

    如果您还没有这样做,您应该确保“SSL.class”文件位于webapp的类路径上。例如,它可能位于“/WEB-INF/classes/”目录中,也可能位于“/WEB-INF/lib/”中的JAR文件中

    public class SSL {
    
     public  void SendMail(){
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
    
            Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("prakash.d2222","password");
                    }
                });
    
            try {
    
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress("from@no-spam.com"));
                message.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse("prakash_d22@rediffmail.com"));
                message.setSubject("hi");
                message.setText("12345" +
                        "\n\n No spam to my email, please!");
    
                Transport.send(message);
    
                System.out.println("Done");
    
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    只需创建一个自定义bean类,该类将与您的类一起工作SSL,并将其命名为sslimpelcenter

    你们班在哪里

    public class SSLImpelmenter
    {
       private SSL objSSL = new SSL();
    
       //getter setter methods for objSSL
    }
    
    现在在JSP中

    //Add import for SSL Class
    //Now Use useBean tag
    <jsp:useBean id="link" scope="application" class = "SSLImpelmenter" />
    
    SSL objSSLJSP = link.getObjSSL(); 
    objSSLJSP.SendMail();
    
    //为SSL类添加导入
    //现在使用useBean标记
    SSL objSSLJSP=link.getObjSSL();
    objSSLJSP.SendMail();
    
    Firslt修改您的类SSL

    public class SSL {
    
     public  void SendMail(){
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
    
            Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("prakash.d2222","password");
                    }
                });
    
            try {
    
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress("from@no-spam.com"));
                message.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse("prakash_d22@rediffmail.com"));
                message.setSubject("hi");
                message.setText("12345" +
                        "\n\n No spam to my email, please!");
    
                Transport.send(message);
    
                System.out.println("Done");
    
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    只需创建一个自定义bean类,该类将与您的类一起工作SSL,并将其命名为sslimpelcenter

    你们班在哪里

    public class SSLImpelmenter
    {
       private SSL objSSL = new SSL();
    
       //getter setter methods for objSSL
    }
    
    现在在JSP中

    //Add import for SSL Class
    //Now Use useBean tag
    <jsp:useBean id="link" scope="application" class = "SSLImpelmenter" />
    
    SSL objSSLJSP = link.getObjSSL(); 
    objSSLJSP.SendMail();
    
    //为SSL类添加导入
    //现在使用useBean标记
    SSL objSSLJSP=link.getObjSSL();
    objSSLJSP.SendMail();
    
    请参阅以下链接。请参阅以下链接。我使用的是tom cat 6,在web inf中没有classes文件夹。我要创建一个吗?我现在做了更改,显示没有错误,但仍然没有发送邮件。@AVD,我们应该使用bean方法在JSP页面中执行操作,该页面是一个bean类,在getter方法中提供SSL对象的引用。我使用的是tom cat 6,web inf中没有classes文件夹。我创建了一个吗?我现在做了更改,显示没有错误,但仍然没有发送邮件。@AVD,我们应该使用bean方法在JSP页面中执行操作,JSP页面是一个bean类,提供getter方法中SSL对象的引用。