我正在使用运行Jetty和Java的GAE。我在一个单片java文件中有一个工作的servlet。我想开始把它分成不同的类。
此时我真的只想将大部分代码放入另一个类中,并根据输入的想法在不同的类中生成不同的网页。
现在,在/Servlet.java中,我有:
package webapp
public class servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
...
try {
temp.process(root, resp.getWriter());
} catch (TemplateException e) {
throw new IOException("Error while processing Freemarker template", e);
}
}
当我尝试使用:
创建一个新类时public classA {
public void generatePageA() {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
...
resp.setContentType("text/html; charset=UTF-8");
try {
temp.process(root, resp.getWriter());
} catch (TemplateException e) {
throw new IOException("Error while processing Freemarker template", e);
}
}
}
然后回到servlet.java中我尝试使用
调用ClassA中的函数ClassA.doGet();
但是我在令牌之后得到语法错误请求标识符。
答案 0 :(得分:1)
用于调用ClassA.doGet();你需要把它变成静态,
public classA {
public static void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=UTF-8");
try {
temp.process(root, resp.getWriter());
} catch (TemplateException e) {
throw new IOException("Error while processing Freemarker template", e);
}
}
}
您还必须传递以下参数:
package webapp
public class servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
ClassA.doGet(req,resp);
}
}
如果您希望在完整堆栈跟踪后发布更多信息,那么我们可以提供更好的支持
答案 1 :(得分:1)
看起来你的doGet()方法在你的generatePageA()方法结束之前就开始了。 ClassA.doGet()是对方法的静态引用。该方法要么是静态的,要么需要像这样实例化类对象
new ClassA().doGet();
在像eclipse这样的IDE中工作会实时显示这些错误,并且它通常会提供有关如何修复的建议。 希望有所帮助