【发布时间】:2011-11-01 04:31:00
【问题描述】:
我用 jQuery 创建了一个幻灯片放映。它通过 servlet 连接到数据库。所以,我必须调用 servlet 来运行幻灯片。我尝试使用 include 从 index.jsp 调用 servlet,但它没有找到 SlideShow servlet。我尝试使用 Ajax 调用 servlet,但它无法显示幻灯片。请问怎么打?
【问题讨论】:
我用 jQuery 创建了一个幻灯片放映。它通过 servlet 连接到数据库。所以,我必须调用 servlet 来运行幻灯片。我尝试使用 include 从 index.jsp 调用 servlet,但它没有找到 SlideShow servlet。我尝试使用 Ajax 调用 servlet,但它无法显示幻灯片。请问怎么打?
【问题讨论】:
只需直接通过URL而不是JSP文件调用servlet,在doGet()方法中完成工作,最后让servlet将请求转发给JSP,让它生成并发送HTML内容。
@WebServlet(urlPatterns={"/index"})
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Do your job here.
// ...
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
}
}
通过http://example.com/contextname/index而不是http://example.com/contextname/index.jsp调用它,并将JSP放在/WEB-INF文件夹中,以防止它在没有servlet干预的情况下直接打开。
您可以在doGet() 方法中进行预处理工作并将数据存储为请求属性。例如
List<Data> data = dataService.list();
request.setAttribute("data", data); // It'll be available by ${data} in JSP.
关于 Ajax 的故事,也许您只是错误地实现了它。你可以在这里找到一些例子:How to use Servlets and Ajax?
【讨论】: