- 19
- 0
代码一:
package com.main.service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.PrintWriter;
public class ReadData {
public static void main(String[] args) {
try {
testSaxReader("person");
System.out.println("---------");
testSaxReader("隶属度");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testSaxReader(String item) throws DocumentException, FileNotFoundException {
SAXReader saxReader = new SAXReader();
System.out.println("工程路径:"+System.getProperty("user.dir"));//问题所在
FileInputStream file = new FileInputStream("src/0625.xml");
Document doc = saxReader.read(file);
Element menu = doc.getRootElement();
System.out.println(menu.getName());
org.dom4j.Node person=menu.selectSingleNode("/Menu//Item[@Title='"+item+"']");
String nodeValue = person.getText();
System.out.println(nodeValue);
File fp=new File("./data/"+item+".txt");
PrintWriter pfp= new PrintWriter(fp);
pfp.print(nodeValue);
pfp.close();
}
}
代码一有main方法,System.out.println("工程路径:"+System.getProperty("user.dir"));打印出来的结果是工程路径:E:\workspace\outer\javaConnectR,是我项目的路径。
代码二:
package com.main.service;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.Rserve.RConnection;
import com.main.util.Rservel;
public class Execute extends JFrame{
private static final long serialVersionUID=1L;
static Image img;
public REXP getRobj() throws Exception{
System.out.println("getRobj()");
RConnection c=Rservel.getRConnection();
c.eval("library(RColorBrewer)");
c.eval("H <- c(7,12,28,3,41)");
c.eval("colors<-brewer.pal(5,'Set1')");
c.parseAndEval(" barplot(H,rep(1,5),col=colors);dev.off()");
xp=c.parseAndEval("r=readBin('test.jpg','raw',3000*3000);unlink('test.jpg');r");
return xp;
}
public void createPlot(REXP xp, JFrame f,String path)throws Exception{
try {
Image image=Toolkit.getDefaultToolkit().createImage(xp.asBytes());
BufferedImage bufferedImage=toBufferedImage(image);
System.out.println("工程路径:"+System.getProperty("user.dir"));
ImageIO.write(bufferedImage, "JPG", new File(path+"/outImg/98.jpg"));//
} catch (IOException e) {
e.printStackTrace();
}
}
public BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
return (BufferedImage)image;
}
image = new ImageIcon(image).getImage();
BufferedImage bimage = null;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
int transparency = Transparency.OPAQUE;
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(
image.getWidth(null), image.getHeight(null), transparency);
} catch (HeadlessException e) {
}
if (bimage == null) {
int type = BufferedImage.TYPE_INT_RGB;
bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
}
Graphics g = bimage.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
return bimage;
}
}
package com.main.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
import com.main.service.Execute;
/**
* Servlet implementation class ExecuteR
*/
@WebServlet("/ExecuteR")
public class ExecuteR extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ExecuteR() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String RSentences=request.getParameter("data");//这个例子必须到页面点击
//System.out.println(filePath);
String path=getServletContext().getRealPath("/");
System.out.println("servlet路径:"+path);
Execute wc=new Execute();
REXP xp;
try {
xp = wc.getRobj();
wc.createPlot(xp,wc,path)
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
代码二:没有main方法,是一个java类,通过servlet调用,System.out.println("工程路径:"+System.getProperty("user.dir"));打印出来结果是工程路径:E:\BE\eclipse\eclipse,是我安装eclipse的路径,不是项目路径;代码String path=getServletContext().getRealPath("/");打印出来结果是:servlet路径:E:\workspace\eclipse_jee_mars2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\javaConnectR\
1.请问为什么会有这样的区别??
2.我希望代码二里的ImageIO.write(bufferedImage, "JPG", new File(path+"/outImg/98.jpg"));new File里的路径是和代码一System.getProperty("user.dir"));打印出来的路径E:\workspace\outer\javaConnectR一致,为项目路径。请问该怎么解决??
- 共 0 条
- 全部回答
-
黄土守山人 普通会员 1楼
在Java中,你可以在Servlet的配置文件中设置Servlet的处理路径。这样,当用户请求到Servlet时,服务器就会从这个配置文件中指定的路径开始查找Servlet的类。
例如,如果你的Servlet位于
/servlets目录下,你可以这样配置:xml <web-app> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> <init-param> <param-name>myParam</param-name> <param-value>value</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/servlets/myServlet</url-pattern> </servlet-mapping> </web-app>在这个例子中,当用户请求到
/servlets/myServlet这个路径时,服务器就会开始查找com.example.MyServlet类。如果找到了,就会调用这个类的doGet方法。如果你的Servlet位于不同的目录下,你可能需要在配置文件中指定多个Servlet的路径。例如,你可能有两个Servlet,一个位于
/servlets目录下,另一个位于/subServlets目录下。你可以这样配置:xml <web-app> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> <init-param> <param-name>myParam</param-name> <param-value>value</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/servlets/myServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>subServlets/myServlet</servlet-name> <url-pattern>/subServlets/myServlet</url-pattern> </servlet-mapping> </web-app>在这个例子中,当用户请求到
/subServlets/myServlet这个路径时,服务器就会开始查找com.example.MyServlet类,如果找到了,就会调用这个类的doGet方法。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

