我需要创建一个小文件实用程序类,以便从windows桌面的命令行运行。代码已经完成,但是,在回顾了如何打包它之后,它需要一个来自主应用程序的自定义框架才能运行。不要问为什么,因为这需要一段时间才能回答,只要把这作为一个有效的假设就行了。
无论如何,现在他们希望jsp调用这个类,但他们仍然希望它更像是一个单独的实用程序,即使它是主代码库的一部分。他们还希望它调用实用程序中的main方法,这对我来说听起来不像是好的设计,但他们不想将其更改为servlet类。
程序只需要接受一些参数,然后它基本上是对文件的一步操作,然后它就结束了。不是真正的jsp类型的请求/响应场景,但我不是编写需求的人。
从设计的角度来看,对于一个简单的实用程序,有没有更好的方法来做到这一点?
谢谢,
詹姆斯
发布于 2011-09-22 23:42:05
如果你真的不能改变设计,你可以导入类并调用它(只有当它在webapp的类路径中时才有效)。
YourMainClass.main(new String[] {"some", "arguments"});
或者派生一个进程并执行它(实际上不推荐这样做,因为新进程将分配另一堆内存,这与服务器当前使用的内存一样多!)。
Runtime.getRuntime().exec("java -cp /path/to/root com.example.YourMainClass some arguments");
这两种方法都可以在scriptlet (讨厌)中完成,或者最好只在Servlet中完成。
发布于 2011-09-22 23:42:58
让main
方法调用服务/库方法。JSP可以调用相同的服务/库方法。不需要显式调用main
;从一开始就让它变得干净。
发布于 2014-05-26 15:19:31
这是我的JavaMail.java**,它是一个包含Main方法的java类。
Public Class JavaMAil{
String d_email = "abc@gmail.com",//you email address
d_password = "XXXX", //your email password
d_host = "smtp.gmail.com",
d_port = "465",
m_to = "xyz@gmail.com ", // Target email address
m_subject = "Testing",
m_text = "Hey, this is a test email.";
public JavaMail() {
Properties props = new Properties();
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.host", d_host);
props.put("mail.smtp.port", d_port);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
//props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
try {
SMTPAuthenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
MimeMessage msg = new MimeMessage(session);
msg.setText(m_text);
msg.setSubject(m_subject);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
Transport.send(msg);
} catch (Exception mex) {
mex.printStackTrace();
}
}
public static void main(String[] args) {
JavaMail blah = new JavaMail();
}
private class SMTPAuthenticator extends javax.mail.Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(d_email, d_password);
}
}
}
**This is my mail.jsp**
And It is jsp it Invokes Main method from the class called JavaMail
<%@ page import="mail.JavaMail" %>
<%
JavaMail obj = new JavaMail();
%>
https://stackoverflow.com/questions/7517476
复制相似问题