gpt4 book ai didi

java - getServletContext().getRealPath ("/")返回错误路径

转载 作者:行者123 更新时间:2023-12-01 11:37:18 25 4
gpt4 key购买 nike

背景:我想通过使用 Velocity 和 servlet 来学习 Web 开发。我使用 getServletContext().getRealPath("/") 查找 WEB-INF 的路径以及存储在/WEB-INF/templates/中的 .vm 文件;

但是返回的路径是:

E:\javaWorkSpcae\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\NewVelocity\templates\

我想要的是:

E:\javaWorkSpcae\NewVelocity\WebContent\WEB-INF\templates\hello.vm

我使用velocity-tools-1.4、tomcat1.7、jdk1.7

我使用的代码是:

package velocityHandler;

import java.util.Properties;
import java.util.Vector;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.servlet.VelocityViewServlet;

public class HelloHandler extends VelocityViewServlet{
private static final long serialVersionUID = 1L;
private VelocityEngine velo;

@Override
public void init() throws ServletException{

//velocity引擎对象
velo = new VelocityEngine();

//设置vm模板的装载路径
Properties prop = new Properties();
String path = this.getServletContext().getRealPath("/");
prop.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "templates");

System.out.println(path + "templates/");

try {
//初始化设置,下面用到getTemplate("*.vm")输出时
//一定要调用velo对象去做,即velo.getTemplate("*.vm")
velo.init(prop);
} catch (Exception e1) {
e1.printStackTrace();
}
}

@SuppressWarnings("unchecked")
@Override
protected Template handleRequest(HttpServletRequest request,
HttpServletResponse response, Context ctx) throws Exception{

String p1 = "Hoffman";
String p2 = "Song";
@SuppressWarnings("rawtypes")
Vector personList = new Vector();
personList.addElement(p1);
personList.addElement(p2);
ctx.put("theList", personList); //将模板数据 list放置到上下文环境context中

Template template = velo.getTemplate("hello.vm");
return template;
}
}

谁可以给我一个关于 servlet 和速度的简单信息,我在互联网上找不到好的例子。

最佳答案

getServletContext().getRealPath("/") 将为您提供应用程序部署位置的根目录,对于 eclipse 中的 tomcat 服务器,这将是您获得的路径,因为您的 eclipse tomcat服务器在该路径指示的目录中运行。

您要求的路径“/”是您在浏览器中键入“applicationpath/”时获得的路径。

关于java - getServletContext().getRealPath ("/")返回错误路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29840876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com