返回首页


我花了我的大部分时间。NET技术(SharePoint时,ASP,永丰... ...),但我知道,J2EE是非常强大的头号技术在企业中应用的世界,所以我决定,我应该学习J2EE的一些基本知识。您可以下载{A}
这是一个简单的教程上quot;,如何构建简单的企业DBquot顶部的Web应用程序使用Java持久性API,JSF中,NetBeans和Derby数据库。我们将创建应用程序,允许管理quot;公司和他们的Productsquot;首先,您需要的NetBeans 6.7.1 {A2}。我用6.7.1,因为它支持与逆向工程和代码生成的UML建模工具。包是迄今尚未移植到新版本的NetBeans。J2EE应用服务器 - 我用的GlassFish 2.1 Derby数据库(Java DB是Sun的这个开源数据库的版本)
您可以下载NetBeans捆绑已经包括了一切。只要记住,这是测试的6.7.1/GlassFish 2.1版本和较新版本的一些设置可能无法正常工作。技术放大器;推荐阅读Java持久性API - 将有助于我们与对象 - 关系映射 - 它将把Java对象在数据库中的表。实体Bean - 代表的对象(公司,产品)和其字段(名称,描述),后来由于数据表中的列代表。会话Bean - 而是代表所有可与实体Bean(创造新产品,产品的公司名单... ...)的行动JSF - 加速GUI创建一个易于使用的Web应用程序框架。我用1.2版本,这是JSP(下层为建立动态Web应用程序技术)上建立的。创建项目
在NetBeans中选择New - GT;新的项目GT的Java EE - GT;企业应用程序。后来,你会被要求到指定的应用服务器,在这里你可以选择安装GlassFish实例。
{S0}
,在最后一个标签,您可以指定为EJB和Web应用程序模块的名称。这是因为NetBeans将创建两个模块。 EJB模块会照顾你的quot;型号和Controlquot,Web应用程序模块将照顾quot; Viewquot;
如果你想与NetBeans UML工具比选择新的项目GT实体Bean模型,你UML - GT; Java平台模型- GT;完成,并且以后你可以创建类图。开始与建模
首先,我们要创建实体Bean - 代表一些现实世界的实体,将存储在数据库中的对象。在我们的应用程序有2:公司及产品。下面是我们要创建的类图。
{S1}
,从这个图中,我们可以生成实体类。右键单击UML项目- GT;生成代码。你应该得到以下类:

public class Company {



    private int id;

    private String description;

    private String name;

    private List<product> products;



    public Company () {

    }



    public int getId () {

        return id;

    }



    public void setId (int val) {

       id = val;

    }

 

    public String getName () {

        return name;

    }



    public void setName (String val) {

       name = val;

    }



    public List<product> getProducts() {

        return products;

    }



    public void setProducts(List<product> products) {

        this.products = products;

    }



    public String getDescription () {

        return description;

    }



    public void setDescription (String val) {

        this.description = val;

    }

}

{C}
你也可以写的类和使用逆向工程获得的类图。从类创建实体Bean
要转换的实体Bean的类,你必须做两个简单的步骤 - 添加注释和实现Serializable接口。
public class Company implements Serializable {



    @Id

    @GeneratedValue(strategy=GenerationType.IDENTITY)

    @Column(name="companyID",nullable=false)

    private int id;



    @Column(name="companyDescription")

    private String description;



    @Column(name="companyName")

    private String name;



    @ManyToMany

    private List<product> products;

    

    ...and all the setters and getter...

}

这是相当不言自明的。类被注解为@实体,并有至少有一个@ Id字段。然后,我们可以指定将在数据库中创建的列的名称,而且生成的ID值的策略。
你会发现,有NetBeans的灯泡告诉你,没有持久性单元 - 现在我们将创建一个。
{S2}创建持久性单元
持久性单元将执行对象 - 关系映射为我们。要创建一个,我们将首先创建一个数据库。
在quot; Servicesquot;窗格本地化数据库- GT的Java DB - GT;创建数据库和指定的要求细节。
{S3}
现在,当我们有数据库,我们可以创建数据库连接,这将是持久性单元用于连接到DB。
数据库 - >新建连接。
{S4}的
现在回去,然后右击您的应用程序的EJB模块,并选择New - GT;持久性单元。
{五}
,我们继续与会话bean之前,我们将准备一个命名查询。命名查询以后编译SQL和使用的持久性单元的静态查询。我们将使用一个简单的查询表中的所有公司。我们把上面的类定义的查询。
@Entity

@NamedQuery(

    name="Company.getAllCompanies",

    query="SELECT c FROM Company c"

)

public class Company implements Serializable {



}

现在你已经完成持久性单元,你可以尝试部署项目。当然还有到目前为止,创建没有的功能,但在部署数据库应为您创建。您可以在"服务"选项卡中检查导致数据库。
{中六}会话Bean
现在我们将创建一个会话Bean,这将为我们可以执行我们的实体Bean的方法和行动。
转到企业Bean - GT;新GT比指定包的会话Bean,和离开的标准设置。
{七}
你可以看到,新创建的bean实现的接口与quot; Localquot。
现在我们将添加的第一种方法将返回数据库中的所有公司。 NetBeans的告诉你如何做到这一点 - 上下文菜单 - >插入代码- GT;添加Bussiness方法。
{S8}
该方法将被定义在实施创建的接口和方法存根。现在,您可以编辑像这样的代码:
@Stateless

public class SalesSessionBean implements SalesSessionLocal {



    @PersistenceContext

    private EntityManager em;

    

    public List<company> getAllCompanies() {

        List<company> companies = em.createNamedQuery(

            "Company.getAllCompanies").getResultList();

        return companies;

    }

}

请注意,我们定义这是一个类,管理持久化上下文的EntityManager的。持久化上下文是一篮子管理实体(对象的代表公司,产品...).这是由实体管理托管类是实体Bean。在该方法中,你可以看到,我们都调用我们之前创建的命名查询。 支持Bean
现在我们将创建一个会话Bean和JSP网站代表GUI之间的中间层 - 这一层是一个backing bean。 backing bean的管理,是从实际的JSP页面访问的是一个Java类。在Web模块中创建新类(新GT Java类),并命名它SalesBack。现在这里是执行:
public class SalesBack {



    @EJB

    SalesSessionLocal ssl;

    

    public List<company> getAllCompanies(){

        return ssl.getAllCompanies();

    }

}

你可以看到这个类基本上引用会话Bean(小心你要引用的接口,而不是实际执行)。比的方法,我们简单地调用会话Bean的方法。从这一点看来,这一层是没有必要的,但实际上它是安静的帮助你将在后面看到。Faces配置
为了能够使用,只是在JSP页面中创建备份豆,您将需要进行一些修改faces - config.xml文件。打开该文件并添加到faces - config元素的以下内容:
<managed-bean>

           <managed-bean-name>sales</managed-bean-name>

           <managed-bean-class>sales.back.SalesBack</managed-bean-class>

           <managed-bean-scope>session</managed-bean-scope>

</managed-bean>

是一定要检查的backing bean的类(包括包名)。稍后,您可以参考的backing bean作为quot; salesquot;在JSP页面。JSF页面
现在,我们将呈现什么样的优势/组件带来的Java Server Faces,以及如何使用它们。首先,我们将创建一个简单的页面,只显示了在数据库中存储的所有公司在的表。在Web模块中创建一个新的JSP页面中使用JSF。 (新GT; JSF JSP页面)。创建页面后,你可以看到它包含两个@ taglib指令引用JSF框架的标签。
JSP技术可以延长,由quot;自定义tagsquot。当我们注册使用的taglib目录的前缀,我们将介绍JSF框架的所有自定义标签。第一组与前缀quot; fquot名为quot; Corequot;引用独立渲染器(例如,转换器,验证器)的所有组件。第二组前缀quot; hquot;名为"HTMLquot;介绍所有的HTML标签和组件带来JSF创建漂亮的GUI和图形用户界面功能(按钮,表格,网格...).
好了,现在让放的代码将显示表的公司。
            <h1><h:outputtext value="Companies List"></h:outputtext></h1>

            <h:datatable value="#{sales.allCompanies}" var="item">

                <h:column>

                    <f:facet name="header"><h:outputtext value="Name"></h:outputtext>

                    <h:outputtext value="#{item.name}">

                </h:outputtext>

                <h:column>

                    <f:facet name="header"><h:outputtext value="Description">

                    </h:outputtext>

                    <h:outputtext value="#{item.description}">

                </h:outputtext>

            </f:facet>

</h:column></f:facet></h:column></h:datatable>

JSF的主要优势是,它可以让我们一些HTML组件的内容绑定到backing bean的属性/领域。因为在我们的backing bean的方法称为quot; getAllCompaniesquot;比在这里我们可以参考这种方法作为quot;#{sales.allCompanies} quot;这是绑定的quot; LT; datatablegt; quot;通过设置值属性的组件。注意,第二个属性VAR让你设置quot;一排的绑定集合; namequot。后来在列定义,你可以解决在收集这个名字(这里"itemquot;)公司。面临web.xml中的servlet配置
OK,现在你已经创建的JSP文件是一次尝试。之前,你将不得不告诉应用服务器,如果用户导航到你的页面,该页面包含面元素,并使用Faces servlet处理。打开web.xml和改变这样的Faces Servlet的设置:
<servlet>

        <servlet-name>Faces Servlet</servlet-name>

        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

        <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

        <servlet-name>Faces Servlet</servlet-name>

        <url-pattern>*.jsf</url-pattern>

</servlet-mapping>

的重要组成部分是映射配置。基本上你说的话,每个文件结束JSF将面临的Servlet处理。现在,如果创建的文件的名称是quot; companies.jspquot,比在浏览器中,您将参考​​由quot; companies.jsfquot;现在运行该项目,并在浏览器类型的quot; companies.jsfquot;你应该得到以下结果。
{S9}
显然,公司的表是空的。所以,尽管使用的NetBeans(服务- GT,数据库)运行一些SQL INSERT语句,你应该能够看到在表中插入数据。
INSERT INTO SALES.COMPANY (companyname, companydescription) values('First company', 

    'Sales bananas');

INSERT INTO SALES.COMPANY (companyname, companydescription) values('Second company',

    'Sales oranges');

{S10}
确定在未来的职位,我将完成这项申请,并提供一些额外的功能,以编辑该公司的详细信息,添加和删除一个公司的产品。
{A3}|一月Fajfr

回答

评论会员:游客 时间:2012/01/26
我的Web编程新手,我请求链接尼斯在同一脚本语言和票据的教程我也很高兴有从头在VS2008Express和MacromediaDreamweaverMX中的一个网站建设的教程
Gmust
评论会员:!至少尝试 时间:2012/01/26
honga
评论会员:游客 时间:2012/01/26
感谢您的投票。这是我的第一个博客由CP消耗,我会尝试以获得更好的
。tuancm
评论会员:测试 时间:2012/01/26
tuancm
评论会员:ABC 时间:2012/01/26