【问题标题】:using java function on jsp causes an error在 jsp 上使用 java 函数会导致错误
【发布时间】:2013-05-31 06:20:09
【问题描述】:

我正在做一个学校项目,我可以对这段代码使用一些帮助: 我正在尝试在 java 页面上调用此方法:

import java.io.UnsupportedEncodingException;
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.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

package Test;
public class SendMail {

    public static void () {

        final String username = "";
        final String password = "";

        Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");

        Session session = Session.getInstance(props,
          new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
          });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("shov.rz@gmail.com"));
            message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("shov.rz@gmail.com"));
            message.setSubject("Testing Subject");
            message.setText("Dear Mail Crawler,"
                + "\n\n No spam to my email, please!");

            Transport.send(message);

            System.out.println("Done");

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

我在一个jsp页面上调用这个函数:

<%@ page language="java" contentType="text/html; charset=windows-1255"
    pageEncoding="windows-1255"%>
    <%@page import="Test.SendMail" 
       SendMail.test(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

java 类已正确导入,但 eclipse 拒绝运行该程序。 我必须补充一点,我正在使用 eclipse galileo 和 apache tomcat。 我做错了吗?

【问题讨论】:

  • 当你“Eclipse 拒绝运行这个程序”时,这是什么意思?当您尝试运行它时会发生什么?你是如何尝试运行它的?您收到任何类型的错误消息吗?

标签: java apache jsp tomcat server-side


【解决方案1】:

我怀疑这是问题所在:

charset=windows-1255

我建议您改用 UTF-8。它会更便携。

(没有明显迹象表明您甚至正在从页面调用该方法。)

顺便说一句,目前您有一个与您的类同名的方法 - 我会强烈不鼓励您这样做。除此之外,Java 约定是使用camelCase 作为方法名。

【讨论】:

  • 我添加了我忘记的调用函数部分。
  • @user2445729:如果你包含它,它仍然会导致问题吗? (如果是这样,那么显然该方法是无关紧要的。)
  • 我计算机上的代码有点不同,但这是我得到的异常:在 jsp 文件中的第 5 行发生错误:/trial.jsp 方法 test() 未定义类型 SendMail 2: pageEncoding="UTF-8"%> 3: 4:
【解决方案2】:

成功编译代码后,将其放在 web-inf/classes/ 文件夹下。 将编译此类所需的所有jar文件放在web-inf/lib文件夹下。

在jsp页面中你应该有这个

......

SendMail.send();

%>
.....

【讨论】:

  • eclipse 拒绝编译代码。它引发异常: jsp 文件中的第 5 行发生错误:/trial.jsp 方法 test() 未定义类型 SendMail 2: pageEncoding="UTF-8"%> 3: 4:
【解决方案3】:

您似乎正在尝试调用名为test() 的方法。您的类有一个名为 send() 的方法。

另外,因为它是一个静态方法,所以你不需要类的实例来调用它。只需致电SendMail.send();

【讨论】:

  • 是的,我更改了名称并取消了 obj 对象,因为这是一个静态方法。
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多