[英]How can I break down this servlet.java into more classes?
我正在使用運行Jetty的GAE和Java。 我在一個整體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.doGet();
但是我在標記后請求標識符時遇到語法錯誤。
用於調用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);
}
}
如果您需要更多信息來發布完整的堆棧跟蹤,那么我們可以提供更好的支持
看起來您的doGet()方法在您的generatePageA()方法結束之前開始。 而且ClassA.doGet()是對方法的靜態引用。 該方法要么需要是靜態的,要么需要像這樣實例化類對象
new ClassA().doGet();
在像eclipse這樣的IDE中進行操作將實時向您顯示這些錯誤,並且通常會提供有關修復方法的建議。 希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.