最后一个页面允许您输入有关请求参数的信息。在本示例中,我们将使用一个名为 userInput 的参数:
 |
图20 |
单击 Finish 生成 AdServlet 类:
 |
图21 |
现在,我们需要修改 servlet。首先,添加以下注入 AdSession bean 的行,这样我们可以在 servlet 的 doGet() 方法中访问它:
import javax.ejb.EJB; ... public class AdServlet extends HttpServlet { @EJB(name="AdSession") private AdSession adSession; ... }
|
在本示例中,我们希望 doGet() 方法返回一个 Ajax 响应,该响应将包含从 AdEntity 实例中提取的信息。userInput 参数的值传递给 AdSession bean 的 selectAd() 方法。业务方法返回一个 AdEntity 实例,通过 setAttribute() 将该实例存储到请求作用域中。之后,doGet() 设置 Content-Type 和 Cache-Control 头,并包括由 AdResponse.jsp 页面生成的内容。以下是 AdServlet 类的完整源代码:
package ajaxejb; import javax.ejb.EJB; import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public class AdServlet extends HttpServlet { @EJB(name="AdSession") private AdSession adSession; public void init(ServletConfig config) throws ServletException { super.init(config); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userInput = request.getParameter("userInput"); AdEntity adEntity = adSession.selectAd(userInput); request.setAttribute("adEntity", adEntity); response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/xml"); request.getRequestDispatcher("/AdResponse.jsp") .include(request, response); } }
|
创建响应页面
在 Applications 导航器中,右键单击 ajaxejb 项目的 Web Content 文件夹并单击 New。在 New Gallery 窗口的左侧面板中,展开 Web Tier 节点并选择 JSP。然后,在该窗口的右侧面板中选择 JSP 并单击 OK:
 |
图22 |