现在的位置: 首页 > 综合 > 正文

EJB3 Web 客户端——NetBeans IDE和Sun应用服务器

2013年09月11日 ⁄ 综合 ⁄ 共 5415字 ⁄ 字号 评论关闭
 

第一步:创建Web应用
选择【File】à【New Project】,在弹出的界面中间部分选择【Web】,然后选择右边的【Web Application】。
在接下来的界面中输入工程的名字:helloWeb,选择【Next】进入下一个界面。
在该界面中,选择Web应用使用的框架,如果不选择,直接点击【Finish】。
第二步:导入用到的要访问的EJB的接口
过程与Application客户端中导入接口的过程相同:
选择【Source Packages】,点击右键,选择【New】à【Java Packges】,输入包名:session.hello,点击【Finish】。
 
把HelloSessionRemote.java拷贝到session.hello包中。
第三步:创建访问EJB的Servlet
创建存放Servlet的包,hello.servlet
在该包上点击右键,选择【New】à【Servlet】
之后弹出下面的界面:
输入类的名字HelloServlet,点击【Finish】,进入下面的配置界面。
可以采用默认设置,注意:Servlet的访问路径是/HelloServlet,之后点击【Finish】。之后会生成HelloServlet的代码,生成的代码如下:
/*
 * HelloServlet.java
 *
 * Created on 2007419, 下午10:29
 */
 
package hello.servlet;
 
import java.io.*;
import java.net.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
 
/**
 *
 * @author Administrator
 * @version
 */
public class HelloServlet extends HttpServlet {
   
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        /* TODO output your page here
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet HelloServlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet HelloServlet at " + request.getContextPath () + "</h1>");
        out.println("</body>");
        out.println("</html>");
         */
        out.close();
    }
   
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
 
对生成的代码进行修改
注入EJB,代码如下:
    @EJB
private HelloSessionRemote hello;
 
需要导入EJB和HelloSessionRemote,代码如下:
import javax.ejb.EJB;
import session.hello.*;
 
编写测试代码,代码如下:
    public void test(PrintWriter out){
        out.println(hello.hello());
    }
 
把processRequest方法中的代码:
/* TODO output your page here
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet HelloServlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet HelloServlet at " + request.getContextPath () + "</h1>");
        out.println("</body>");
        out.println("</html>");
         */
       
替换成下面的代码:
test(out);
 
完整的代码如下:
/*
 * HelloServlet.java
 *
 * Created on 2007419, 下午10:29
 */
 
package hello.servlet;
 
import java.io.*;
import java.net.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
 
import javax.ejb.EJB;
import session.hello.*;
 
 
/**
 *
 * @author Administrator
 * @version
 */
public class HelloServlet extends HttpServlet {
   
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
   
    @EJB
private HelloSessionRemote hello;
// 注意:只能注入实例变量(不能使用static变量)
 
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
       
        test(out);
       
        out.close();
    }
   
    public void test(PrintWriter out){
        out.println(hello.hello());
    }
 
   
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
部署Web应用
选择工程,点击右键,选择【Deploy Project】。
访问Web应用
地址:http://localhost:8080/helloWeb/HelloServlet
第三步:创建访问EJBJSP
JSP的创建过程与Servlet的创建过程基本相同。使用向导创建一个JSP文件:hello.jsp。
参考代码如下:
<%@ page contentType="text/html"%>
<%@ page pageEncoding="gb2312"%>
<%@ page import="session.hello.*,javax.naming.*"%>
<%!
    private HelloSessionRemote helloSession= null;
    public void jspInit() {
        try {
            InitialContext ic = new InitialContext();
           helloSession = (HelloSessionRemote)
                ic.lookup(HelloSessionRemote.class.getName());
        } catch (Exception ex) {
        System.out.println(ex.getMessage());
        }
    }
    public void jspDestroy() {
        helloSession = null;
    }
%>
<html>
    <head>
        <title>Hello</title>
    </head>
    <body bgcolor="white">
<%
    out.println("访问会话Bean得到的结果:"+helloSession.hello());
%>
   </body>
</html>

 

【上篇】
【下篇】

抱歉!评论已关闭.