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

第一步:创建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】
EJB3 Web 客户端——NetBeans IDE和Sun应用服务器
之后弹出下面的界面:
EJB3 Web 客户端——NetBeans IDE和Sun应用服务器
输入类的名字HelloServlet,点击【Finish】,进入下面的配置界面。
EJB3 Web 客户端——NetBeans IDE和Sun应用服务器
可以采用默认设置,注意: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>