An instance of JSF + Spring + Hibernate (original translation)

xiaoxiao2021-03-06  44

JSF uses the original address: http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html uses JavaServer Faces (JSF), Spring Framework and Hibernate to create a real web application content summary Using JSF to create a real web application is not a meaningful task, this article describes how to integrate JSF with SPING Framework and Hibernate, and give the best practices and designs using these technologies to build this real web application. Guidance JavaServer Faces (JSF) technology is a new user interface framework for the J2EE application, which is ideal for an MVC-View-Controller architecture application. There are already a lot of articles to introduce JSF. However, many articles are at the level of theoretical research, and there is no challenge to develop a real business development. Many problems have not been resolved, for example, how is JSF to fully suit the MVC architecture? How does JSF integrate with other Java frameworks? Should business logic in the JSF's backing beans? How to deal with security issues in JSF? The most important thing is how do you use JSF to build a real web application? This article involves all of these issues. It shows you how to integrate other specific Java frameworks, Spring Framework and Hibernate, which demonstrates how to create a web application called JCATALOG, an online product catalog system. This article describes the JCATALOG examples, introduces every stage of web application design, including business needs collection, analysis, technical selection, high-rise architecture, and detailed design. This article discusses good and bad technologies in JCATALOG, demonstrating some key methods and steps in application design. This article is written to Java architects that are engaged in J2EE Web applications, developers, not for JSF, Spring Framework, and Hibernate entry tutorial. If you are not familiar with these areas, please refer to the final resource link in the article. Example The functional requirements of the application This article is an example of a real web application. The example is the basis for the discussion of the application architecture to determine the application architecture. I started by introducing the needs of the JCATALOG project. I am talking here to the back of the article throughout the article is to demonstrate technical selection and architecture design. The first step in designing web applications is to collect system features, this example application is a typical e-commerce application. Users can browse the product catalog and view product details, and the administrator can manage the catalog. Features can also increase, for example, in order to develop a mature e-commerce system, the functionality of inventory management and order processing can be added. Use examples to analyze the functional requirements for going to access the example application, Figure 1 is a diagram of the application of the application. Figure 1 is an example of an example of an example of a participant in a system and a participant that can be performed. 7 cases in example applications must be implemented. User in participants browse the product catalog and see product details. Once the user connects to the system as Administrator, he can create new products, edit the existing product, delete old products.

Business rules JCATALOG must meet the following business rules: Each product has a unique product ID that each product belongs to a directory product ID Once you are created, you can't change the designs and implementation of the product, we do the following assumptions. English is the default language; no more than 500 product catalogs in the international directory are not required to update unverified page flow Figure 2 shows all JCATALOG pages and their conversions.

Figure 2 Page flowchart application has two sets of pages: public Internet and administrators' internal network. Enterprise Internet is only valid for users who have successfully logged in to the system. The product profile is public, it is included in an HTML frame as the contents of the product catalog. The product list is a special directory that can only be seen by the administrator, which contains links to create, edit, and delete products. Figure 3 is a model of a directory page. Ideally, all of each page all controls and the necessary content detailed models should be included in the demand document. Figure 3 Directory Page Model Advanced Architecture Design Next Design is a high-level architecture design for web applications, which includes finely dividing the application into a functional component, and divide these components into the layers of the respective. Advanced architecture design is designed for use in use. Multi-layer architecture A multi-layer architecture divides the entire system into a clear unit - client, representation, business logic, integrated layer, and corporate information system (EIS), guaranteed clear responsibility and maintainability And scalability. The three or multi-layer systems have been proven to have more upgraded and flexibility than customers-server systems without business logic layers. The client is where the data model is consumed and rendered. For a web application, the customer layer is usually a web browser. Browser-based thin customers do not include logic; it relies on the representation layer. Indicates that the layer uses the business logic layer as a user service, it knows how to deal with a customer request, how to combine the business logic layer and how to choose the next attempt to display. The business logic layer contains an application's business objects and business services. It accepts requests from the representation layer, based on request processing business logic, as an intermediary that accesses the EIS layer resource. Business logic layer components use many system level services, such as security management, things management, and resource management. The integrated layer is a bridge between the business logic layer and the EIS layer. It encapsulates the logic combined with the EIS layer. Sometimes the combination of the integrated layer and the business logic layer is mentioned as the intermediate layer. Application data is persisted in the EIS layer, including relational databases, object-oriented databases, and legacy systems. JCATALOG architecture design Figure 4 shows how JCATALOG's advanced architecture design and how it is suitable for multi-layer architecture.

Figure 4 Advanced Architecture Diagram application uses a multi-layer non-distributed architecture, Figure 4 shows the application layer and the selection of each layer of technology. It is also used for the deployment diagram of the application. For a configurable architecture, representing the layer, the business logic layer, and the integrated layer are positioned in the same Web container. The well-defined interface isolates the responsibilities of each layer. Configurable architecture makes the application simple and upgraded. For the representation layer, experience tells us that the best practice is to choose an existing, validated web application framework, which is a customized framework than the design. We have several web application frameworks to choose from, for example, Struts, Webwork, and JSF. For the JCATALOG project, we use JSF. For business logic layers, it is not using EJB (Enterprise JavaBeans) to use Pojo (Plain Old Java Objects). If the application is distributed, the EJB has a remote interface is a good choice. Because JCATALOG is a typical web application that does not have a remote access request, Pojo is used to implement the business logic layer with the help of the Spring framework. Pure JDBC (Java Database Connectivity): This is the most flexible implementation method; however, the low-level JDBC and bad JDBC code work are troublesome, and do not do it. Entity Beans: Entity Beans of a Conta, Container-Managed Persistence (CMP, Container-Managed Persistence) is an expensive approach to isolating data access code and processing O / R (object-relational) Mapping data persistence. It is a solution-centric solution in application servers. An Entity Bean is not tightened with a specific database, but the application and EJB container are coupled. O / R Mapping Framework: An O / R-shaped framework implements data persistence in an object-oriented approach. A object-based application is easy to develop and highly lightweight. There are several frames in this field - Java Data Objects, Hibernate, Toplink. Cocobase is a new example. In the example application we use Hibernate. Now, let us discuss the problem of combining every layer of the application. Because JSF is relatively talking about a new technology, I emphasize its use. The performance layer and the JavaServer Faces (JSF) performance layer collect user input, rendering data, control page navigation, instead of the user with the business logic layer interaction. The performance layer can also verify the user input and maintain the session state of the application. The following chapter, I discuss the design considerations and patterns of the performance layer and the reasons for the performance layer I choose JSF to implement the JCATALOG project. Model-View-Controller (MVC) MVC is the interactive application architecture design pattern recommended in the Java Blue Book (BluePrints). The MVC is designed to design concerns, thus reducing the duplication, centralized control of the code, making the application more scalable. MVC also helps developers use different technical collection, focusing their core technologies, and cooperating with clear interfaces. MVC is the architecture model of the performance layer. JavaServer FaceJSF is a user interface component framework based on Java-based web application server. JSF includes an API representing a UI component and manages its status; processing events, server checks, data conversions; definition page navigation; support international and accessibility; provide all of these features extension capabilities. It also includes two label libraries customized for JSP, one for representing a UI component within the JSP page, an object component for configuring the server. JSF and MVCJSF are well suited for MVC-based performance layer architecture. It provides a clear division between action and performance.

It affects the UI components and web layer concepts, do not limit you to use specific script technology or tag language. JSF BACKING Beans is the Model layer (later chapters about the backing beans more content). They also include action, which is an extension of the control layer, and proxy user requests for business logic layers. Note that the business logic layer can also be mentioned as a Model layer from the architecture of the overall application. The JSP page with the JSF custom label is the view layer. Faces servlet provides the function of the controller. Why use JSFJSF more than just another web framework, the following is different features of JSF and other web frameworks: like Swing as an object-oriented web application development: the server-based UI component model, with event monitoring and operators, start Object-oriented Web application development. BACKING-BEAN management: Backing Beans is the United JavaBeans Components and UI components in the page. BACKING-BEAN Management UI Component Object Definitions and objects perform application special processes and separation of control data. JSF performs storage and manages these backing-bean instances within the correct range. Scalable UI Component Model: The JSF UI component is an element that makes up the JSF application user interface configurable, can be reused. You can extend standard UI components and develop more complex components. For example, the menu bar and the tree member are used. Flexible performance model: A rendere divides features and views of a UI component. Multiple rendrer can be created to define different appearances of the same components on the same or different clients. Scalable transformation and calibration model: Based on standard converters and checkmen, you can develop customized converters and checkmen that provide the best model protection. Although JSF is very powerful, it is still not mature. Components, converters, and checkrs are basic in JSF. Each verification model cannot handle multiple-to-many checks between components and checkmen. In addition, the JSF custom label cannot be seamless with JSTL (JSP Standard Tag Library). In the following part, I discussed several key aspects and design decisions when using JSF implementation JCATALOG projects. First discuss the definition and use of Managed Beans and Backing Beans in JSF. Then, I introduce how to handle security, pagination, cache, file upload, check, and error messages in JSF. Managed Bean, View Object and Domain Object ModelJSF have introduced two new terms: Managed Bean and Backing Bean. JSF offers a powerful Managed-Bean factory. JavaBean object management executed by JSF is called Managed Beans. A Managed bean describes how a bean is created and managed. It does not use the functionality of beans. The BACKING bean defines the union of page features and processing logic and UI components. Each Backing-bean property is bound to one of the component instance or it. A Backing Bean also defines a collection of functions that can be performed, for example, the data of the calibration component, the processing component triggered event, and the component activation, and the navigation related execution process. A typical JSF application connects a backing bean in each page of the application. However, sometimes in the real world, forcing a backing bean and a pair one-on-one relationship is not an ideal solution. It can cause such problems to repeat like code. In the real-world scene, several pages may need to share the same backing bean in the background. For example, in the JCATALOG project, the CreateProduct and EditProduct pages share the same productBean definition. A try object is a model object that is explicitly used in the layer. It contains logic that must be displayed in data and verify user input, processing events, and a logical layer.

BACKING BEAN is a view object based on a JSF application. In this article, the BACKING BEAN and view objects are the exchangeable terminology. Compare the ActionForm and Action in Struts, developing the BACKING Beans in JSF to follow the best practices for object-oriented design. A backing bean not only contains view data, but also includes data related to data. In Struts, Action and ActionForm include data and logic separation. We all heard about the extensive object model. So, what is the difference between domain object model and view object? In a simple web application, a domain object model can be used for all layers, however, in some complex web applications, a separate view object model needs to be used. The domain object model is about business objects and should be classified into the business logic layer. It contains business data and business logic related to a particular business object. A view object contains a representation of specific data and behavior. The PRODUCTLISTBEAN of the JCATALOG project provides a good example. It contains data and logical details, for example, and data and logic related to paging. The disadvantage of separating view objects from the domain object model is that the data mapping must occur between the two object models. In the JCATALOG project, ProductBeanBuilder and UserBeanBuilder use reflected Commons BeanUtils to implement data mapping. Currently, JSF has no built-in security feature. The safety requirements of the example are basic: the authentication required by the user connected to the administrator is based on the username and password, and does not require authorization. The method of several processing user authentication in JSF has been proposed: Use a base backing bean: This solution is simple. However, it binds the BACKING Beans with a special heritage level. Use JSF ViewHandler Decorator: This method makes the security logic plus a special Web layer technology. Use A Servlet Filter: A JSF application is different from other Java-based web applications. It uses a filter to handle authentication check in an appropriate place. This approach makes the authentication logic in the web application. In an example application, the SecurityFilter class handles user authentication. Currently, the protected resources are only three pages, in order to simply, they are hardly encoded in the Filter class. It can be improved by extending security rules and put protected resources in the configuration file. Paging applications The directory page requires paging. The performance layer can handle paging, which means that all data must be re-stored in this layer. Page can also be processed in the business logic layer, the integrated layer or even the EIS layer. The assumption of the JCATALOG project is no more than 500 products in the catalog. All product information is suitable for saving in user session. Paging logic exists in a ProductListBean class. Parameters related to paging "Products per page" through the JSF's Managed-Bean tool configuration. Cache caching is one of many important technologies that improve performance in web applications. The cache can be done in many layers within the application architecture. When a layer in the architecture reduces the layer below it, the cache is very beneficial. The JSF Managed-Bean tool makes it easier to achieve a cache in the performance layer. By changing the range of a Managed BEAN, the data contained in the Managed BEAN can be cached in a different range. Example The application uses a secondary cache. The first level is slow in the business logic layer. CachedCatalogServiceImpl class maintains read / write cache of all products and directories. Spring management class is a separate service bean. So, the first-level cache is an application range read / write cache. For simple paging logic and future application speed increase, the product within the session range of the performance layer is also cached. Each user maintains his SESSION inside its own ProductListBean. Disadvantages are to take up system memory and old data.

In a duration of a user session, if the administrator updates the directory, the user may see the old directory data. However, based on this assumption, more than 500 products in the catalog, and the directory update is not frequent, we should be able to endure these shortcomings. File Upload Currently, file upload is not supported in the JSF's Sun reference implementation. Struts has a good file upload capacity, however, the Struts appearance integration library must be used. In the JCATALOG project, a picture is associated with each product. After a user creates a new product, you must upload the picture associated with it. The picture is saved inside the file system of the application server. Product ID is a picture name. Example application Upload API using , servlet, and Jakarta universal files to implement a simple file long transmission function. This feature uses two parameters: product image path and image upload result page. They are all configured by ApplicatonBean. Please refer to the details of the FileUploadServlet class. The standard verification of the verification JSF is simple and basic and cannot meet the real needs. Developing your own JSF check is easy. I use custom labels in the example application to develop SELECTEDITEMSRANGE checks. It UISelectMany UI by checking the number of components selected item: More details Refer to the example application. Error messages are customized in JSF, you can set the resource package to customize the error message when converting and checking. Resource package is provided which faces-config.xml: catalog.view.bundle.Messages The error message's key-value pairs are added to the Message.properties file: #conversion error messagesjavax .facs.component.uiinput.conversion = INPUT DATA IS Not in The Correct Type.

#validation error messagejavax.faces.component.uiinput.required = Required value is Missing. Business logic layer and Spring Framework business objects and business services are in the business logic layer. A business object not only contains data, but also logic associated with a particular object. In the example application, three business objects are identified: Product, Category and User. Business services combine with business objects, providing advanced business logic. A standard service interface layer that contains direct use of the service interface should be defined. With the help of Spring Framework, Pojo implements the JCATALOG project business logic layer. There are two business services: CatalogService contains business logic related to directory management, and UserService contains user management logic. Spring is based on the Control Inversion Concept (IOC, Inversion of Control). The Spring feature used in the example application includes: Bean Management With Application Contexts: Spring can effectively organize our intermediate objects, vertical processing. Spring can avoid decomposition of an entity function, facilitating object-oriented design implementation, for example, interface design. Declarative Transaction Management: Spring uses AOP (Aspect-Oriented Programming) to describe declarative transactions that do not use EJB containers. This method, transaction management can be applied to any Pojo. Spring transaction management is not binded to JTA (Java Transaction API), using different things policy work. In the example application, declare transactions in Hibernate in an example application. Data-Access Exception Hierarchy: Spring provides an exception hierarchy that is worth replacing SQLException. Using Spring data access exception hierarchy, Spring data access exception translator must be defined in the Spring configuration file inside: In an example application, if the ID of a new product is repeated, a DataIntegrityViolationException will be thrown. This exception will be captured and thrown as DuplicateProductidexception. This method, DuplicateProductidexception can handle different data access exceptions. Hibernate Integration: Spring does not force us to use its powerful JDBC abstract features. It is well integrated with O / R mapping framework, especially hibernate. SPING provides a valid, secure Hibernate session operation. Operate the configuration sessionFactories and JDBC data sources in the application context to make the application easy to test. Integrated layers and HibernateHibernate are an open source O / R mapping framework that reduces the need to use JDBC API. Hibernate supports all mainstream SQL database management systems.

Hibernate Query Language is the smallest extension of SQL-oriented objects, providing an elegant bridge in the world. Hibernate provides data recovery and update tools, transaction management, data connection pools, Programmatic and Declarative Queries, declared entity relationship management. Hibernate and other O / R mapping frames are smaller than invasive. Generating bytecode when reflecting and running, SQL is generated at the beginning of the system. It allows us to develop a persistent object that meets Java habits, including joint, inheritance, polymorphism, aggregation, and Java collection framework. The business object in the example application is POJO and does not require the special interface of Hibernate. Data Access Object (DAO) JCATALOG project uses DAO mode. This mode is abstract and encapsulated all access to the data source. There are two DAO interfaces in the application. CatalogDao and Userdao. Their implementations are HibernateCatalogDaoIMPL and HibernateUserDaoIMPL containing Hibernate-related management and persistence data logic. Implementing design now, let me string everything and implement the JCATALOG project. You can download the full source code for the application in the list of resources. Database Design We create a specified directory structure for example applications, which contains 4 tables, as shown in Figure 5 Data structure

Class design diagram 6 illustrate the class diagram of the JCATALOG project

Figure 6

Interface programming runs throughout the design. In the performance layer, four beans are used: ProductBean, ProductListBean, UserBean and MessageBean. The business logic layer contains two services (CatalogService and Uservice) and three business objects (Product, Category, and User). The integrated layer includes two DAO interfaces and their Hibernate implementation. Spring Application Contexts contains many Object Beans for the management business logic layer and integrated layer. ServiceLocator combines JSF and business logic layers. Wire everything UP Because of this limit of this article, we only look at one use case. CreateProduct uses examples to demonstrate how to string everything together to build an application. Before in-depth details, let us use a sequence diagram (Figure 7) to demonstrate the integration of all end-to-end:

Figure 7 Sequence diagram of CreateProduct use case now, let us discuss how to implement more details of CREATEPRODUCT case by introduction of each layer. The implementation of the performance layer is included in the creation of a JSP page, defines page navigation, creates and configuring backing beans, combining JSF with business logic. JSP Page: CreateProduct.jsp is a page that creates a new product. It includes a UI component and a ProductBean bundled with these components. ValidateItemsRange Custom Label Test the number of users to select the directory. There is at least one directory for each new product. Page Navigation: Navigation for Applications Defines in the application's configuration file, Faces-navigation.xml. CreateProduct defined navigation rules are: * createproduct / TO-View-id> /createproduct.jsp "from-outcome> Success /uploadimage.jsp Retry /createproduct.jsp Cancel /productlist.jsp backing bean: ProductBean not only contains the properties of the UI components and data maps in the page, but also Contains three Actions: CreateAction, EditAction, and DeleteAction. This is the code of the CreateAction () method: public string create () {Try {product product = ProductBeanBuilder.createProduct (this);

// Save the product. This.ServiceLocator.getCatalogService (). SaveProduct (product);

// Store The Current Product ID Inside The session bean. // for the use of image uploader. FaceSUTILS.GETSESSIONBEAN (). SetCurrentProductId (this.id);

// Remove the productList inside the cache this.logger.debug ( "remove ProductListBean from cache");. FacesUtils.resetManagedBean (BeanNames.PRODUCT_LIST_BEAN);} catch (DuplicateProductIdException de) {String msg = "Product id already exists"; this .logger.info (msg); FaceSUTILS.ADDERRORMESSAGE (MSG); Return NavigationResults.Retry;} catch (Exception E) {string msg = "could not save product"; this.logger.Error (MSG, E); FaceSutils. AdderrorMessage (MSG ": Internal Error");

Return NavigationResults.Failure;} String msg = "Product with Of" this.id "WAS CREATED SUCCESSFULLY."; this.logger.debug (msg); FaceSutils.AddInfomessage (MSG);

Return navigationResults.success;} In this action, a Product Business object based on ProductBean is established. ServiceLocator Query CatalogService. Finally, CreateProduct's request is delegated to the CatalogService of the business logic layer. Managed-bean declaration: ProductBean must configure in the JSF configuration resource file Faces-management-bean.xml:

Backing bean that contains product information. productBean catalog.view.bean.ProductBean < / managed-bean-class> request ID # {param.productId} < / value> ServiceLocator # {service> ProductBean There is a range of requests, which means that if the ProductBean is generated by the JSF in the JSP page to execute the task of each request to create a ProductBean instance. The managed ID attribute is assembled with ProductID. JSF gets the parameters from the request, sets the Managed Property. Integration Between Presentation and Business-Logic Tiers: ServiceLocator Abstract Query Services logic. In the example application, ServiceLocator is defined as an interface. JSF managed bean interface is implemented as ServiceLocatorBean, it queries from the Spring application context: ServletContext context = FacesUtils.getServletContext (); this.appContext = WebApplicationContextUtils.getRequiredWebApplicationContext (context); this.catalogService = (CatalogService) this.lookupService (CATALOG_SERVICE_BEAN_NAME) This.userService = (userService) this.lookupService; ServiceLocator is defined as an attribute in the baseBean. JSF Managed Bean is easy to connect serviceLocator to those Managed Beans that must be accessed. Using Inversion Of Control (IOC, Control Inverse) Business Logic Light Defines Business Object, Creating Service Interfaces and Implementation, configuring these objects in Spring to form this layer of tasks. Business objects: Because Hibernate provides persistence, Product and Category business objects provide Getter and Setter methods for all properties they contain. Business Services: The CatalogService interface defines all services related to directory management:

public interface CatalogService {public Product saveProduct (Product product) throws CatalogException; public void updateProduct (Product product) throws CatalogException; public void deleteProduct (Product product) throws CatalogException; public Product getProduct (String productId) throws CatalogException; public Category getCategory (String categoryId ) throws CatalogException; public List getAllProducts () throws CatalogException; public List getAllCategories () throws CatalogException;} CachedCatalogServiceImpl services interface comprising a setter CatalogDao object. Spring connects CachedCatalogServiceImpl and CatalogDAO. Because we provide an interface, it is not very close to the implementation. Spring configuration: The following is the CatalogService Spring comfiguration: <- - Hibernate Transaction Manager Definition!>

<-! Transactional proxy for the Catalog Service -> PROPAGATION_REQUIRED, readOnly < / prop> Propagation_required Propagation_required PropAgation_required < / Property> Spring Declarations Transaction Management is set in CatalogService. CatalogService, which can achieve different CatalogDao. Spring creates and manages the CatalogService, which does not require a factory. Now, the business logic layer is ready, let us integrate it with the integrated layer. The following is the configuration of HibernateSessionFactory:

<-! Hibernate SessionFactory Definition -> catalog / model / businessobject /Product.hbm.xml catalog / model / businessObject / category.hbm.xml catalog / model / businessobject / user.hbm.xml net.sf.hibernate.diaalect.mysqldiaalect True < / prop> true net.sf.hibernate.cache.HashtableCacheProvider < / Property> CatalogDao integrates Hibernate and Spring using HibernateTemplate. Below is the configuration of HibernateTemplate:

Integrated layer Hibernate uses an XML configuration file to map the business object to the relational database. In the JCATALOG project, product.hbm.xml represents the mapping of the Product business object. Category.hbm.xml is used for business objects Category. Profiles and the appropriate business objects in the same directory. Below is Product.hbm.xml:

catalogdao Spring uses the HibernateTemplate connection: Conclusion This article introduces how JSF is integrated into Spring Framework and Hibernate, A real application is established. The combination of these three technologies provides a reliable web application development framework.

A multi-layer architecture should be the advanced architecture of a web application. JSF is well suited for MVC design mode, which can be used to implement a representation layer. The Spring framework can be used to manage business objects, providing declarative transaction management and resource management. Spring is very good in combination with Hibernate. Hibernate is a powerful O / R mapping framework that provides services for integrated layers. The techniques of each layer can be replaced by dividing the web application into different layers and interface-oriented programming. For example, in the representation layer Struts, the JSF can replace Hibernate in the integrated layer JDO. The integration between the application layer is not meaningless, using the Inversion of Control and Service Locator design model make this work easily. JSF provides other frameworks, such as the lack of Struts. However, this does not mean that you should discard Struts immediately and start using JSF. In any case, your project uses JSF as your web framework, depending on the status and functional needs of your project and the views of team experts. Resources

Download the JCATALOG Project Sample Application: http://www.javaworld.com/javaworld/jw-07-2004/jsf/jw-0719-jsf.zip

Official JavaServer Faces Site: http://java.sun.com/j2ee/javaserverfaces/index.jsp

A Good JSF Tutorial Can Be Found In The J2EE 1.4 Tutorial (Chapter 17 To 21): http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

More articles and books on jsf: http://jsfcentral.com/reading/index.html

Official Spring Framework Site: http://www.springframework.org

Good introduction to the Spring Framework by rod johnson: http://www.theserverside.com/articles/article.tss?l=springframework

Rod Johnson's book Expert One-on-One J2EE Design and Development (Wrox, October 2002; ISBN: 0764543857) is the corner stone of the Spring Framework: http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764543857. HTML

OFFICSIAL HIBERNATE: http://www.hibernate.org

Online documentation of hibernate: http://www.hibs/reference/en/html/

Introduction to the Integration Between The Spring Framework and Hibernate: http://hibernate.bluemars.net/110.html

"Designing Enterprise Applications with the J2EE Platform, Second Edition" is a good introduction to the multitiered architecture and MVC design pattern: http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/index.htmlCommons BeanUtils: http: // Jakarta.apache.org/commons/beanutils/

Commons fileupload: http://jakarta.apache.org/commons/fileupload/

For more on JavaServer Faces, read the following JavaWorld articles by David Geary: "A First Look at JavaServer Faces, Part 1" (November 2002) "A First Look at JavaServer Faces, Part 2" (December 2002) "JavaServer Faces, Redux "(November 2003) Browse The JavaServer Pages Section of JavaWorld's Topical Index: http://www.javaworld.com/channel_content/jw-jsp-index.shtml

Browse the Enterprise Java Section of JavaWorld's Topical Index: http://www.javaworld.com/channel_content/jw-enterprise-index.shtml

转载请注明原文地址:https://www.9cbs.com/read-75310.html

New Post(0)