我的项目目录如下所示。
Web Application
|__Web Pages
| | |__img
| | |__membershipcard.png
| |__ImageCreator.jsp
|
|__Source Packages
|__Functions
|__CardCreator.java
我有一个Java函数,它读取位于img文件夹中的Image,Java类如下所示。
public class CardCreator {
public static String MembershipCard() throws IOException {
String ImgUrl = "";
Image image = null;
// Read from an input stream
InputStream is = new BufferedInputStream(new FileInputStream("web/img/membershipcard.png"));
image = ImageIO.read(is);
Graphics g = image.getGraphics();
Graphics i = image.getGraphics();
g.setFont(new Font("TimesRoman", Font.PLAIN, 15));
g.setColor(Color.BLACK);
g.drawString("123456789", 334, 63);
g.drawString("Roger", 196, 138);
g.drawString("5", 299, 163);
g.drawString("05", 63, 221);
g.drawString("2015", 90, 221);
i.setFont(new Font("TimesRoman", Font.BOLD, 15));
i.setColor(Color.BLACK);
i.drawString("9874564", 395, 196);
g.dispose();
ImageIO.write((RenderedImage) image, "png", new File("test2.png"));
ImgUrl = "Hello";
return ImgUrl;
}
}
我像这样从我的ImageCreator.jsp页面调用这个函数,它返回由Java函数创建的图像的URL。
<%
String ImgUrl = new CardCreator().MembershipCard();
%>
我无法访问位于我提到的文件夹中的图像文件,以及如何在另一个文件夹中输出结果图像,在该文件夹中我希望保存所有卡片。
请帮帮我。
发布于 2015-07-29 11:24:10
您可以使用ServletContect's realPath
,方法是将它作为参数从调用的jsp传递给MembershipCard
public class CardCreator {
public static String MembershipCard(String path) throws IOException {
String ImgUrl = "";
Image image = null;
// Read from an input stream
InputStream is = new BufferedInputStream(new FileInputStream(path + "/img/membershipcard.png"));
...
return ImgUrl;
}
和JSP
<%
String ImgUrl = CardCreator.MembershipCard(pageContext.getServletContext().getRealPath("/"));
%>
由于您现在有了Application Context
的位置,所以使用它来保存您希望JSP也可以访问的文件。
更好的方法是有一个单独的类来维护整个应用程序中的这些公共变量,而不是将它作为参数传递给方法。
https://stackoverflow.com/questions/31698421
复制相似问题