【问题标题】:Using a Java class in JSP在 JSP 中使用 Java 类
【发布时间】:2012-08-14 14:34:37
【问题描述】:

我有一个包含有用代码的 Java 文件,我想在我的 JSP 文件中调用该 Java 代码。我已经尝试过了,例如我正在使用一个 Java 文件,它成功地将电子邮件发送到一个邮件 ID。但是,如果我在 JSP 页面中调用它,它的运行不会出错,但不会发送电子邮件。

Java 代码:

package com.me;
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","**********");
            }
          });

        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("Testing Subject");
          message.setText("Dear Mail Crawler," +
                "from core java");
          Transport.send(message);

          System.out.println("Doneit");

        } catch (MessagingException e) {
          throw new RuntimeException(e);
        }
    }
}

而我的 JSP 代码是:

<html>
<body>
  <jsp:useBean id="link" scope="application" class = "com.me.SSL" />            
  <% out.println("ok"); %>    
</body>
</html>

和 tom cat 文件夹配置是

webapps\root\web-inf
                   |
                   -classes\com\me\SSL.class
                   |                   
                   -lib\mail.jar

【问题讨论】:

    标签: java jsp email tomcat jakarta-mail


    【解决方案1】:

    你可以使用

    <jsp:useBean id="link" scope="application" class = "com.me.SSL" />          
    <jsp:setProperty name="link" property="prop" value=""/>
    <% out.println("ok"); %>    
    

    并修改代码

    public class SSL {
      String prop;
    
      public String getProp() {
        return prop;
      }
    
      public void setProp(String prop) {
        this.prop = prop;
        main(null);
      }
    
      public static void main(String[] args) {
        Properties props = new Properties();
    

    这意味着你在设置属性时调用main方法。

    如果你没有使用jsp:useBean

    <%@ page import="com.me.SSL" %>
    <html>
    <body>
      <% new SSL().main(null); out.println("ok"); %>    
    </body>
    </html>
    

    【讨论】:

    • 不,无论如何我已经更新了我在问题中的完整代码,任何帮助表示赞赏。
    • +1 并感谢您的正确解释,它从 2 天开始就可以正常工作。
    • 是否可以在jsp本身中编写此代码而不是调用java文件?只是出于好奇而问。
    • 你能给我任何链接,我可以得到更多的细节。
    • 在 JSP 中使用 scriptlet 也经常违背逻辑与表示分离的原则。
    【解决方案2】:

    您应该尝试调用 SSL 类中的方法。从您的代码看来,您只是在创建 jsp:usebean 来获取对象的实例。

    试试 ${link.MethodName}

    【讨论】:

    • 可是我用的是main(),怎么叫?
    • 此链接stackoverflow.com/questions/6395621/… 中的检查点 2。它解释了如何创建 taglib 函数并在 jsp 中使用它,或者您可以像从 java 代码中调用任何其他方法一样调用 main 方法,但是使用小脚本。 。除非您将任何参数传递给 main 方法,否则传递 null 是可以的。
    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2010-09-19
    相关资源
    最近更新 更多