b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

ejb3 programmer guide_programmer》_programmer 壁纸(2)

电脑杂谈  发布时间:2019-09-05 17:16:07  来源:网络整理

现在,我们应该编写selectAd() 方法的主体。

实际应用程序将使用AdSession bean 的方式借助 Web 界面来建立、更新和删除AdEntity 实例。selectAd() 方法将使用查询方式借助某些算法将客户的兴趣匹配到从检索到的 ad。然而在本文中,我们将进行简化以关注主题。selectAd() 方法将从用户输入中选取一个随机单词,然后返回一个新的AdEntity 实例:

package ajaxejb;
...
import java.util.Random;
import java.util.StringTokenizer;
...
public class AdSessionBean implements AdSession {
    ...
    public AdEntity selectAd(String userInput) {
        String keyword = "nothing";
        if (userInput != null && userInput.length() > 0) {
            StringTokenizer st = new StringTokenizer(
                userInput, ",.?!'& \t\n\r\f");
            int n = st.countTokens();
            if (n > 0) {
                int k = new Random().nextInt(n);
                for (int i = 0; i < k; i++)
                    st.nextToken();
                keyword = st.nextToken();
            }
        }
        AdEntity ad = new AdEntity();
        ad.setKeyword(keyword);
        ad.setUrl(keyword + ".com");
        ad.setContent("Buy " + keyword + " from " + ad.getUrl());
        return ad;
    }
}

在本部分中,我将使用 JDeveloper 创建控制器 servlet。然后,我将介绍怎么使用相关性注入,如何调用 EJB 的方式或者怎么针对 Ajax 客户端生成响应。

在Applications 导航器中,右键点击ajaxejb 项目并单击New。在New Gallery 窗口的右侧面板中,展开Web Tier 节点并选取Servlets。然后,在该窗口的左侧面板中选取HTTP Servlet 并单击OK:

图 16

跳过Create HTTP Servlet 向导的 Welcome 页面,选择Servlet 2.4\JSP 2.0 (J2EE 1.4):

图 17

输入AdServlet 作为 servlet 类的名称,为 servlet 类选择ajaxejb 程序包,选择XML 内容类别并点击Next:

ejb3 programmer guide_programmer》_programmer 壁纸

图 18

向导的下一个页面允许您配置 servlet 映射:

图 19

最后一个页面允许您键入有关请求参数的信息。在本实例中,我们将使用一个名为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

跳过Create JSP 向导的 Welcome 屏幕,输入AdResponse.jsp 作为 JSP 页面的名称:

图 23

Create JSP 向导的下一步允许您选取一个错误处理选项:

图 24

在第三步中,您可以选取将在本页面中使用的 JSP 库。在本实例中,在右侧面板中选取JSTL Core 1.1,使用箭头图标将其移到右边面板中:

图 25

第四步允许您提供其它页面选项。由于AdResponse.jsp 页面用于生成一个 Ajax 响应,因此选用 None 作为 HTML Version 并保留 Title 为空:

图 26

单击Finish 按钮生成 JSP 页面:

图 27

删除 JDeveloper 生成的 HTML 内容,添加下面行以产生一个链接:

<a href='<c:out value="${requestScope.adEntity.url}"/>'>
    <c:out value="${requestScope.adEntity.content}"/>
</a>

上面使用的AdEntity 实例设置为AdServlet 类中的一个请求属性。

生成AdServlet 类以后,JDeveloper 还建立了包括 servlet 映射信息的web.xml 应用程序描述符:

<web-app ...>
    ...
    <servlet>
        <servlet-name>AdServlet</servlet-name>
        <servlet-class>ajaxejb.AdServlet</servlet-class>
    </servlet>
    ...
    <servlet-mapping>
        <servlet-name>AdServlet</servlet-name>
        <url-pattern>/adservlet</url-pattern>
    </servlet-mapping>
    ...
</web-app>

必须将 Web 应用程序版本从2.4 更改为2.5,将路径文件名从web-app_2_4.xsd 更改为web-app_2_5.xsd,这样您才可以在AdServlet 类中使用相关性注入:

    <web-app ...
        xsi:schemaLocation=".../web-app_2_5.xsd"
        version="2.5" ...>
      ...
    </web-app>

programmer》_ejb3 programmer guide_programmer 壁纸

如果您不修改 Web 应用程序版本,EJB 将不会注入,应用程序将导致一个NullPointerException。

在本部分中,我将构建一个 JSF 页面并将使用 JDeveloper 添加 ADF Faces 组件。之后,我将介绍怎么借助传递 ADF Faces 组件的状态来读取控制器 servlet 的 JavaScript 代码。JSF 页面将使用从 Ajax 响应检索到的信息进行升级。

在Applications 导航器中,右键单击ajaxejb 项目的Web Content 文件夹并单击New。在New Gallery 窗口的右侧面板中,展开Web Tier 节点并选取JSF。然后,在该窗口的左侧面板中选取JSF JSP 并单击OK:

图 28

跳过Create JSF JSP 向导的 Welcome 屏幕,输入AdForm.jsp 作为 JSF 页面的名称:

图 29

Create JSF JSP 向导的下一步允许您选取一个组件绑定选项:

图 30

在第三步中,您可以选取将在 JSF 页面中使用的 JSP 库。默认状况下选取JSF Core 和JSF HTML。在本例子中,我们还将使用 ADF Faces 组件。因此,在右边面板中选取ADF Faces Components 和ADF Faces HTML,使用箭头图标将其移到右边面板中:

图 31

第四步允许您提供其它页面选项。在 Title 域中输入Ajax-JSF Page:

图 32

单击Finish 按钮生成 JSF 页面:

图 33

由于这是该应用程序的第一个 JSF 页面,因此 JDeveloper 将构建faces-config.xml 文件并在web.xml 文件中配置Faces Servlet:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-121815-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...