Oreilly.Com/Catalog/Jakarta

Total Page:16

File Type:pdf, Size:1020Kb

Oreilly.Com/Catalog/Jakarta Programming Jakarta Struts By Chuck Cavaness Table of Contents Preface The road to successful web applications is paved with the sweat and heartache of the many who came before us. The idea of taking a rich client application and allowing it to execute over the Internet was a great leap of faith, and maybe just a little shortsighted. By "web applications," I don't mean small, trivial applications that accept a form or two of input and push it into a database; I mean large applications that cross several tiers, use many different technologies, and cover the spectrum of analysis and design-pattern uses. The design and construction of these types of applications push developers to the limit of what's logically and physically possible. Myriad solutions have been thrown at the problems these applications present. Some of the solutions stuck, and some did not—and when a solution didn't serve the needs of the users, it was obvious. But as with human evolution, the valuable characteristics eventually were passed on, and the characteristics that failed to serve their intended purposes fell by the wayside. The user interface (UI) in Smalltalk-80™ was designed around the Model-View-Controller (MVC) framework. Over time, this framework has been adopted as a classic design pattern and used in many different scenarios. Other UI frameworks, such as the one written for Java™ Swing, use similar concepts. The architects of the JavaServer Pages™ (JSP) specification formally introduced the abstract idea of two types of models for web-based solutions: Model 1 and Model 2. The distinguishing feature between the two is that Model 2 uses a separate component to handle the controller responsibilities. This allows JSP to focus exclusively on rendering the view while using JavaBeans™ as the model, thereby effectively becoming an abstract implementation of a web-based MVC architecture. The Struts framework, created by Craig R. McClanahan and donated to the Apache Software Foundation (ASF) in 2000, is an open source implementation of Model 2 ideas. This book covers Version 1.1 of the Struts framework, but because backward compatibility was one of the design goals of 1.1, 1.0 Struts developers also will find value in reading this book. If you learn one thing from this book, it should be that frameworks such as Struts are a great time investment. If you are building applications, web-based or not, you should be using at least one framework, and as web frameworks go, Struts is one of the best. Organization This book begins with a preliminary discussion that lays the groundwork for the rest of the material. This discussion will be a refresher for some and completely new for others. From there, we explore the components of Struts's MVC implementation, including a look at the JSP custom tags that are included as part of the framework. Then, to round out your understanding of the value of the Struts framework, we look at several complicated but important topics related to building web-based applications. Chapter 1 This chapter discusses some preliminary concepts, such as the MVC pattern, Model 2, and the idea of a software framework. Although many developers may already be familiar with some or all of the ideas presented here, I wanted to ensure that all readers are starting from the same place. The concepts presented in this chapter help to lay the foundation for the rest of the book. Chapter 2 The Struts framework is based on the Java Servlet technology and, to a lesser extent, JavaServer Pages, and therefore is tightly coupled to a web container. For Struts developers, understanding how the web container processes client requests is fundamental to understanding the framework itself. This chapter discusses the components of the web container and the responsibilities of each. Chapter 3 This chapter provides an overview of the Struts framework; it does not attempt to cover all of the features or go into significant depth. It emphasizes how all the pieces fit into the MVC and Model 2 architecture presented in Chapter 1. Chapter 4 The Struts framework uses two separate but somewhat related types of configuration files, which must be configured properly before an application will function properly. Due to the popularity and flexibility of XML, both types of configuration files are based on XML. This chapter presents the syntax of the files. Chapter 5 The Struts framework uses a servlet to process incoming requests; however, it relies on many other components that are part of the controller domain to help it carry out its responsibilities. This chapter takes in-depth look at the components that are responsible for the controller functionality in the framework. Chapter 6 This chapter introduces the components that make up the model portion of a Struts application. The model represents the business data for an application and should closely resemble the real-world entities and business processes for the organization. This chapter explores the roles and responsibilities of the model components within the Struts framework and focuses on building an architecturally correct implementation for the Storefront application. Special attention is given to using a persistence framework that can be integrated into a Struts application easily and effortlessly. Chapter 7 Chapter 7 introduces the components that make up the view portion of the Struts framework. The framework uses the view components to render dynamic content for the client. Based primarily on JavaServer Pages, the components provide support for internationalized applications as well as for user-input acceptance, validation, and error handling, all of which make it easier for the developer to focus on business requirements. This chapter concludes the three-part discussion of how the Struts framework implements the MVC pattern. Chapter 8 This chapter looks at the different categories of tags and how they can help make developing applications with the Struts framework even easier. It is not meant to be an exhaustive reference for every tag that's part of the Struts tag libraries—that information can be found within the Struts user guide or JavaDocs. The real purpose of this chapter is to put forth the benefits of using the Struts tag libraries and to provide a few strategies that can help make the switch to using the tags less painful. Chapter 9 One of the biggest advantages of using a framework is the ability to extend and customize it based on the needs of the application. The Struts framework is no exception; it provides several important extension points for developers. This chapter takes a quick glance at several of those extension points and examines the benefits and drawbacks of extending the framework. Chapter 10 This chapter looks at how to use the Java exception-handling mechanism within your Struts applications to make them more robust and allow them to respond gracefully when things don't go as expected. Special attention is given to the differences between performing the exception handling programmatically and using the new declarative feature added to the Struts framework in Version 1.1. Chapter 11 This chapter introduces the Validator framework, which was created specifically to work with Struts components. The Validator allows you to declaratively configure validation routines for a Struts application without having to program special validation logic. Chapter 12 This chapter focuses on what it takes to make a Struts application available to customers from around the world, regardless of their language or geographical location. As is often the case in software development, planning ahead is the most important thing that you can do to help ensure success. After reading this chapter, you should be able to build Struts applications that can support a broad range of customers. Chapter 13 Chapter 13 covers the issues you need to consider when developing an interface between your Struts actions and an application tier. It focuses on interfacing to a model built using Enterprise JavaBeans™ (EJB). Chapter 14 This chapter looks at the Tiles framework, which now is part of the core Struts distribution. The Tiles framework is an advanced templating framework that reduces the amount of redundant code a web application contains and allows developers to better separate content from layout. Chapter 15 This chapter examines how the use of logging in your Struts applications can help you identify defects before the applications get into production and, if your software already is being used in production, how logging can help you identify problems and arrive at solutions much more quickly. Chapter 16 This chapter discusses the best practices for packaging and deploying a Struts application and what it takes to automate the build process for your environment. Special coverage is given to Ant, the Java-based build tool available from Jakarta. Chapter 17 This chapter explores the performance implications of using the Struts framework and its associated technologies to build web applications and discusses how certain design and programming decisions affect the overall performance of the applications. It covers performance, load, and stress testing, and the steps necessary to carry out each. Appendix A This appendix enumerates the new features within the 1.1 release. Appendix B This appendix discusses the steps for downloading and installing Struts in your environment. Appendix C This appendix lists several resources that can help increase your knowledge once you've mastered the concepts in this book. Conventions Used in This Book The following font conventions are used in this book: Italic is used for: • Unix pathnames, filenames, and program names • Internet addresses, such as domain names and URLs • New terms where they are defined Boldface is used for: • Names of GUI items (window names, buttons, menu choices, etc.) Constant width is used for: • Command lines and options that should be typed verbatim • Names and keywords in Java programs, including method names, variable names, and class names • XML element names and tags, attribute names, and other XML constructs that appear as they would within an XML document Indicates a tip, suggestion, or general note.
Recommended publications
  • Configuring & Using Apache Tomcat 4 a Tutorial on Installing and Using
    Configuring & Using Apache Tomcat 4 A Tutorial on Installing and Using Tomcat for Servlet and JSP Development Taken from Using-Tomcat-4 found on http://courses.coreservlets.com Following is a summary of installing and configuring Apache Tomcat 4 for use as a standalone Web server that supports servlets 2.3 and JSP 1.2. Integrating Tomcat as a plugin within the regular Apache server or a commercial Web server is more complicated (for details, see http://jakarta.apache.org/tomcat/tomcat-4.0-doc/). Integrating Tomcat with a regular Web server is valuable for a deployment scenario, but my goal here is to show how to use Tomcat as a development server on your desktop. Regardless of what deployment server you use, you'll want a standalone server on your desktop to use for development. (Note: Tomcat is sometimes referred to as Jakarta Tomcat since the Apache Java effort is known as "The Jakarta Project"). The examples here assume you are using Windows, but they can be easily adapted for Solaris, Linux, and other versions of Unix. I've gotten reports of successful use on MacOS X, but don't know the setup details. Except when I refer to specific Windows paths (e.g., C:\blah\blah), I use URL-style forward slashes for path separators (e.g., install_dir/webapps/ROOT). Adapt as necessary. The information here is adapted from More Servlets and JavaServer Pages from Sun Microsystems Press. For the book table of contents, index, source code, etc., please see http://www.moreservlets.com/. For information on servlet and JSP training courses (either at public venues or on-site at your company), please see http://courses.coreservlets.com.
    [Show full text]
  • Javaedge Setup and Installation
    APPENDIX A ■ ■ ■ JavaEdge Setup and Installation Throughout the book, we have used the example application, JavaEdge, to provide a practical demonstration of all the features discussed. In this appendix, we will walk you through setting up the tools and applications required to build and run JavaEdge, as well as take you through the steps needed to get the JavaEdge application running on your platform. Environment Setup Before you can get started with the JavaEdge application, you need to configure your platform to be able to build and run JavaEdge. Specifically, you need to configure Apache Ant in order to build the JavaEdge application and package it up for deployment. In addition, the JavaEdge application is designed to run on a J2EE application server and to use MySQL as the back-end database. You also need to have a current JDK installed; the JavaEdge application relies on JVM version 1.5 or higher, so make sure your JDK is compatible. We haven’t included instruc- tions for this here, since we are certain that you will already have a JDK installed if you are reading this book. However, if you do need to download one, you can find it at http://java. sun.com/j2se/1.5.0/download.jsp. Installing MySQL The JavaEdge application uses MySQL as the data store for all user, story, and comment data. If you don’t already have the MySQL database server, then you need to obtain the version applicable to your platform. You can obtain the latest production binary release of MySQL for your platform at http://www.mysql.com.
    [Show full text]
  • Version Control: a Case Study in the Challenges and Opportunities For
    Version Control: A Case Study in the Challenges and Opportunities for Open Source Software Development (Position Paper for 2nd Workshop on Open Source Software Engineering) Mark C. Chu-Carroll, David Shields and Jim Wright {mcc,shields,jwright}@watson.ibm.com IBM T. J. Watson Research Center 19 Skyline Drive, Hawthorne, NY 10522 Abstract variants of the kernel source tree [2] , and problems coordinating updates and the addition of The growth of the worldwide open source new features have been reported, as noted in a development effort, driven in part by the recent discussion of Virtual Memory Managers [3] . entrance of large corporations into the open source Torvalds has recognized these problems [4] , and arena, offers new opportunities to improve the recently reported that he is using the Bitkeeper software engineering tools available for that effort. version control system [5, 6, 7] . Indeed, the increasing difficulty of managing large Compiling the Linux kernel itself presents a open source projects, as well as that of integrating complicated configuration problem, recently related efforts into new programming addressed by Eric Raymond, the author of CML2 environments, represents a challenge that must be [8]," a configuration system ... that handles build- met if the rapid growth of open source software is option selection for Linux kernels" that is to continue. This position paper addresses these "scheduled to be integrated into the Linux kernel issues in the context of software version control. source tree between 2.5.1 and 2.5.2." (Text in quotes, here and later on, is from the referenced Version Control and the Linux Kernel web sites.) CML2 is written in Python and, according to the CML2 Announcement [9]: "For The Linux kernel, perhaps the most crucial piece of those of you who grumbled about adding Python to open source software, represents an interesting the build-tools set, Linux has uttered a ukase: example in that the kernel developers use a CML2's reliance on Python is not an issue" (See primitive form of version control.
    [Show full text]
  • A Test Suite Generator for Struts Based Applications Gregory M
    UNF Digital Commons UNF Graduate Theses and Dissertations Student Scholarship 2004 A Test Suite Generator For Struts Based Applications Gregory M. Jackson University of North Florida Suggested Citation Jackson, Gregory M., "A Test Suite Generator For Struts Based Applications" (2004). UNF Graduate Theses and Dissertations. 294. https://digitalcommons.unf.edu/etd/294 This Master's Thesis is brought to you for free and open access by the Student Scholarship at UNF Digital Commons. It has been accepted for inclusion in UNF Graduate Theses and Dissertations by an authorized administrator of UNF Digital Commons. For more information, please contact Digital Projects. © 2004 All Rights Reserved A TEST SUITE GENERATOR FOR STRUTS BASED APPLICATIONS By Gregory M. Jackson A project submitted to the Department of Computer and Information Sciences in partial fulfillment of the requirement for the degree of Master of Science in Computer and Information Sciences UNIVERSITY OF NORTH FLORIDA DEPARTMENT OF COMPUTER AND INFORMATION SCIENCES April2004 Copyright(©) 2004 by Gregory M. Jackson All rights reserved. Reproduction in whole or in part in any form requires the prior written permission of Gregory M. Jackson or designated representatives. 11 APPROVAL BY THE PROJECT COMMITTEE The project "A Test Suite Generator for Struts Based Applications" submitted by Gregory M. Jackson in partial fulfillment of the requirements for the degree of Master of Science in Computer and Information Sciences has been approved by the Project Committee: Sentence Deleted Arturo Sanch , Ph.D. Project Director Sentence Deleted Sentence Deleted Charles Winton, Ph.D. Graduate Director 111 ACKNOWLEDGEMENTS This project is dedicated to my father, Marshall Jackson, who always pushed me to work hard on everything I do and showed me that if I put my mind to it, anything is possible.
    [Show full text]
  • (CGPA) Examination May/June 2017 Programming in C (Revised) [Time: Three Hours] [Max.Marks:80]
    Total No. of Printed Pages:2 SUBJECT CODE NO:- P-11 FACULTY OF ENGINEERING AND TECHNOLOGY First Year MCA (CGPA) Examination May/June 2017 Programming in C (Revised) [Time: Three Hours] [Max.Marks:80] Please check whether you have got the right question paper. N.B i) Q.No.1 from section A and Q.No.8 from section B are compulsory. ii) Attempt any two questions from the remaining questions in each section SECTION A Q.1 Find the output of the following and also specify the reason. 08 a. #include<stdio.h> Void main() { Char C*2+= “A”; Printf(“\n %c”,C[0]); Printf(“\n %s”,C); } b. #include<stdio.h> void main() { Int x=4, y=0, z; While (x>=0) { If(x= =y) break; else Printf(“\n%d%d”,x,y); x- -; y++; } } Q.2 A What is constant & variables? Explain the rules for constructing integer & real point (float) constant 08 B Write a program to calculate overtime pay of 10 employees. Overtime is paid at the rate of rs.12.00 per hour 08 for overtime hour worked above 40 hours. Assume that employee do not work for fractional part of an hour. Q.3 A Explain all loop control statements in detail with proper example 08 B Write a program in C to accept a number & check whether it is Armstrong number or not. 08 Q.4 A What is an algorithm? Explain with example. 08 B Write a program to enter a number from user and calculate the sum of its digit. 08 SECTION B Q.5 A What is an array? Explain with its types.
    [Show full text]
  • WILEY Advantage Dear Valued Customer
    Y L F M A E T Team-Fly® The WILEY advantage Dear Valued Customer, We realize you’re a busy professional with deadlines to hit. Whether your goal is to learn a new technology or solve a critical problem, we want to be there to lend you a hand. Our primary objective is to provide you with the insight and knowledge you need to stay atop the highly competitive and ever- changing technology industry. Wiley Publishing, Inc. offers books on a wide variety of technical categories, including security, data warehousing, software development tools, and networking - everything you need to reach your peak. Regardless of your level of expertise, the Wiley family of books has you covered. • For Dummies – The fun and easy way to learn • The Weekend Crash Course –The fastest way to learn a new tool or technology • Visual – For those who prefer to learn a new topic visually • The Bible – The 100% comprehensive tutorial and reference • The Wiley Professional list – Practical and reliable resources for IT professionals In the book that you now hold in your hands, Darren Broemmer shares best practices and lessons learned for J2EE development. As you design and build a banking application with J2EE and design patterns, you'll also utilize metadata-driven configurable foundation components to help automate much of the development for Web-based business applications. And of course, the tools and technologies used to construct the sample application are not from any one vendor, but best of breed—Jakarta Struts, Servlets, JSP, XML, EJB, UML, WebLogic, WebSphere, and many more.
    [Show full text]
  • P6 EPPM Licensing Information User Manual 16 R2
    P6 EPPM Licensing Information User Manual 16 R2 September 2016 Contents Introduction............................................................................................. 7 Licensed Products, Restricted Use Licenses, and Prerequisite Products ................... 7 Primavera P6 Enterprise Project Portfolio Management License ................................. 7 Primavera P6 Enterprise Project Portfolio Management Web Services License ................ 9 Primavera P6 Progress Reporter ..................................................................... 10 Third Party Notices and/or Licenses .............................................................. 11 AndroidSwipeLayout ................................................................................... 11 aopalliance ............................................................................................. 11 Apache Chemistry OpenCMIS ......................................................................... 11 Apache Commons Net ................................................................................. 12 Apache Derby........................................................................................... 12 Apache ECS ............................................................................................. 12 Apache Jakarta Commons Library ................................................................... 12 Apache Tiles ............................................................................................ 12 Apache Xerces .........................................................................................
    [Show full text]
  • Entitlement Control Message Generator
    Open Source Used In ECMG 4.5.3 Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-156819513 Open Source Used In ECMG 4.5.3 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-156819513 Contents 1.1 ACE+TAO 5.5.10 + 1.5.10 1.1.1 Available under license 1.2 Apache Commons Codec 1.3. 1.2.1 Available under license 1.3 Apache Commons Lib Apache 2.0 1.3.1 Available under license 1.4 Apache Jakarta Commons Configuration 1.9 1.4.1 Available under license 1.5 Apache Jakarta Commons DBCP 1.4 1.5.1 Available under license 1.6 Apache Jakarta Commons Lang 3.1 1.6.1 Available under license 1.7 Apache Log4j 1.2.16 1.7.1 Available under license 1.8 apache-ant_within-cglib 1.6.5 1.8.1 Available under license 1.9 apache-log4j 1.2.15 1.9.1 Available under license 1.10 apache-log4j 1.2.15 :DUPLICATE 1.10.1 Available under license 1.11 args4j 2.0.12 1.11.1 Available under license 1.12 asm-all-3.3.1_within-cglib 3.3.1 1.12.1 Available under license 1.13 bcprov-jdk16
    [Show full text]
  • Web Component Development Using Java Web Component Development Using Java Learner’S Guide
    Web Component Development Using Java Web Component Development Using Java Learner’s Guide © 2014 Aptech Limited All rights reserved. No part of this book may be reproduced or copied in any form or by any means – graphic, electronic or mechanical, including photocopying, recording, taping, or storing in information retrieval system or sent or transferred without the prior written permission of copyright owner Aptech Limited. All trademarks acknowledged. APTECH LIMITED Contact E-mail: [email protected] First Edition - 2014 Dear Learner, We congratulate you on your decision to pursue an Aptech course. Aptech Ltd. designs its courses using a sound instructional design model – from conceptualization to execution, incorporating the following key aspects: ¾ Scanning the user system and needs assessment Needs assessment is carried out to find the educational and training needs of the learner Technology trends are regularly scanned and tracked by core teams at Aptech Ltd. TAG* analyzes these on a monthly basis to understand the emerging technology training needs for the Industry. An annual Industry Recruitment Profile Survey# is conducted during August - October to understand the technologies that Industries would be adapting in the next 2 to 3 years. An analysis of these trends & recruitment needs is then carried out to understand the skill requirements for different roles & career opportunities. The skill requirements are then mapped with the learner profile (user system) to derive the Learning objectives for the different roles. ¾ Needs analysis and design of curriculum The Learning objectives are then analyzed and translated into learning tasks. Each learning task or activity is analyzed in terms of knowledge, skills and attitudes that are required to perform that task.
    [Show full text]
  • Web Application Architecture: Principles, Protocols and Practices
    Web Application Architecture Principles, protocols and practices Leon Shklar Richard Rosen Dow Jones and Company Web Application Architecture Web Application Architecture Principles, protocols and practices Leon Shklar Richard Rosen Dow Jones and Company Copyright 2003 by John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex PO19 8SQ, England Telephone (+44) 1243 779777 Email (for orders and customer service enquiries): [email protected] Visit our Home Page on www.wileyeurope.com or www.wiley.com All Rights Reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except under the terms of the Copyright, Designs and Patents Act 1988 or under the terms of a licence issued by the Copyright Licensing Agency Ltd, 90 Tottenham Court Road, London W1T 4LP, UK, without the permission in writing of the Publisher with the exception of any material supplied specifically for the purpose of being entered and executed on a computer system for exclusive use by the purchase of the publication. Requests to the Publisher should be addressed to the Permissions Department, John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex PO19 8SQ, England, or emailed to [email protected], or faxed to (+44) 1243 770620. This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold on the understanding that the Publisher is not engaged in rendering professional services. If professional advice or other expert assistance is required, the services of a competent professional should be sought.
    [Show full text]
  • Java EE Containers
    HEWLETT-PACKARD EDUCATION SERVICES J2EE With Struts Framework http://www.hpesindia.com TABLE OF CONTENTS Chap. No. Chapter Name Page No. 1. Introduction to J2EE 2 2. Using JDBC API 18 3. Introduction to HTML 65 4. Web Applications & Java Servlet Technology 81 5. Inside Servlets 91 6. Advanced Servlets Part-1 113 7. Advanced Servlets Part-2 140 8. Advanced Servlets Part-3 151 9. JSP Basics 188 10. Advanced JSP 206 11. Working with JSTL 260 12. MVC Based Web Development with Struts 288 [HP Education Services] 1 01 Introduction to J2EE evelopers today increasingly recognize the need for distributed, transactional, and D portable applications that leverage the speed, security, and reliability of server-side technology. In the world of information technology, enterprise applications must be designed, built, and produced for less money, with greater speed, and with fewer resources. With the Java Platform, Enterprise Edition (Java EE), development of Java enterprise applications has never been easier or faster. The aim of the Java EE 5 platform is to provide developers a powerful set of APIs while reducing development time, reducing application complexity, and improving application performance. The Java EE 5 platform introduces a simplified programming model. With Java EE 5 technology, XML deployment descriptors are now optional. Instead, a developer can simply enter the information as an annotation directly into a Java source file, and the Java EE server will configure the component at deployment and runtime. These annotations are generally used to embed in a program data that would otherwise be furnished in a deployment descriptor.
    [Show full text]
  • Controlling Home Appliances Using Internet
    CONTROLLING HOME APPLIANCES USING INTERNET Project Report submitted in partial fulfillment of the requirement for the degree of Bachelor of Technology In Information Technology Under the Supervision of Mr. Amol Vasudeva Assistant Professor By ANIRUDH KAUSHIK (111478) Jaypee University of Information and Technology Waknaghat, Solan– 173234, Himachal Pradesh i Certificate This is to certify that project report entitled “Controlling Home Appliances Using Internet”, submitted by Anirudh Kaushik in partial fulfillment for the award of degree of Bachelor of Technology in Information Technology in Jaypee University of Information Technology, Waknaghat, Solan has been carried out under my supervision. This work has not been submitted partially or fully to any other University or Institute for the award of this or any other degree or diploma. Date: 8th May 2015 Mr. Amol Vasudeva (Assistant Professor) ii Acknowledgement No venture can be completed without the blessings of the Almighty. I consider it my bounded duty to bow to Almighty whose kindness has always inspired me on the right path. I would like to take the opportunity to thank all the people who helped us in any form in the completion of my project “Controlling Home Appliances using Internet”. It would not have been possible to see through the project without the guidance and constant support of my project guide Mr. Amol Vasudeva. For his coherent guidance, careful supervision, critical suggestions and encouragement I feel fortunate to be taught by him. I would like to express my gratitude towards Brig. (Retd) Balbir Singh, Director JUIT, for having trust in me. I owe my heartiest thanks to Prof.
    [Show full text]