وبلاگ بلیان

Advanced Java programming

معرفی کتاب «Advanced Java programming» نوشتهٔ Uttam Kumar Roy در سال 2015. این کتاب در 1 صفحه، فرمت pdf، زبان انگلیسی ارائه شده است. «Advanced Java programming» در دستهٔ بدون دسته‌بندی قرار دارد.

Advanced Java Programming is a textbook specially designed for undergraduate and postgraduate students of Computer Science, Information Technology, and Computer Applications (BE/BTech/BCA/ME/M.Tech/MCA). Divided into three parts, the book provides an exhaustive coverage of topics taught in advanced Java and other related subjects. It first introduces important language features such as Reflection, JNI, template, AWT and swing, Security etc. The second part primarily focuses on core network programming concepts such as sockets, RMI, Mail, XML-RPC etc. The state-of-the-art concepts such as SOAP, Applet, Servlet, JSP, JDBC, Hibernate, JMS, J2EE, JNDI, CORBA, JSF etc. have been discussed in the last part. The content is enhanced with numerous illustrations, examples, program codes, and screenshots. With its lucid presentation and inclusion of numerous real-world examples and codes, the book will be equally useful for Java professionals Content: PART I: INSIDE JAVA 1 1. Java Tools 3 1.1 Introduction 3 1.2 Javadoc 3 1.3 Javap 7 1.4 Jcmd 9 1.5 Jhat 12 1.6 Jdb 13 1.7 Jar 18 1.7.1 Syntax 19 1.7.2 Creating a JAR File 19 1.7.3 Viewing Contents of a JAR File 20 1.7.4 Extracting the Content 20 1.7.5 Updating a JAR File 21 1.7.6 Manifest File 21 2. Exception Handling 26 2.1 Exceptions 26 2.2 Handling Exceptions 27 2.3 An Example 28 2.4 Types of Exceptions 28 2.4.1 Checked Exceptions 29 2.4.2 Unchecked/Runtime Exceptions 29 2.5 Catching Exception 29 2.6 Tracing Stack 30 2.6.1 Multiple Catch Blocks 30 2.6.2 throw 31 2.6.3 throws 33 2.6.4 finally 34 2.6.4.1 An example 35 2.6.4.2 Some properties 36 2.6.5 try-with-resources Statement 37 2.6.6 Nested try-catch 39 2.7 Custom Exception Classes 40 3. Multi-threading 45 3.1 Introduction 45 3.2 Main Thread 45 3.3 Using Sleep 46 3.4 Creating Thread 47 3.4.1 Extending Thread 47 3.4.2 Implementing Runnable 48 3.5 Interrupting Thread 49 3.6 Suspending and Resuming 51 3.7 Thread Priority 52 3.8 Using join() 53 3.9 Synchronization 55 3.9.1 Synchronization and Atomicity 59 4.13 Accessing GC from Java Program 83 4.13.1 Inspecting GC Parameters 83 4.13.2 Explicit Garbage Collection 84 4.13.3 finalize() 84 4.14 Appendix 84 5. Collection Framework 92 5.1 Introduction 92 5.2 Benefits 93 5.3 Collection Interfaces 94 5.4 Collection Implementation 95 5.4.1 Set 95 5.4.1.1 HashSet 96 5.4.1.2 LinkedHashSet 97 5.4.2 SortedSet 98 5.4.2.1 TreeSet 98 5.4.3 List 98 5.4.3.1 ArrayList 99 5.4.3.2 LinkedList 100 5.4.4 Queue 100 5.4.4.1 LinkedList 101 5.4.4.2 PriorityQueue 102 5.4.5 Map 102 5.4.5.1 HashMap 103 5.4.5.2 LinkedHashMap 104 5.4.6 SortedMap 105 5.4.6.1 TreeMap 105 5.5 Algorithms 105 5.5.1 Sorting 106 5.5.1.1 Custom sort 106 5.5.2 Shuffling 106 5.5.3 Manipulation 107 5.5.3.1 Reversing 107 5.5.3.2 Swapping 107 5.5.3.3 Copying 107 5.5.3.4 Filling 107 5.5.3.5 Adding 107 5.5.4 Searching 108 5.5.5 Finding Extreme Values 108 5.5.6 Counting Frequency 108 6. Generic Programming 113 6.1 Introduction 113 6.2 Motivation 114 6.3 Solution 114 6.4 Collection Framework and Generics 116 6.5 Type Naming 117 6.6 Generic Methods and Constructors 117 6.7 Type Inference 118 6.7.1 Generic Methods 118 6.7.2 Constructors 119 6.7.3 Classes 19 6.8 Bounded Type Parameters 119 6.8.1 Multiple Bounds 120 6.9 Generics and Sub-type 121 6.10 Wildcards 122 6.10.1 Upper-bound Wildcard 123 6.10.2 Lower-bound Wildcard 124 6.10.3 Unbounded Wildcard 124 6.10.4 Wildcard and Sub-typing 125 6.11 Type Erasure 125 6.12 Backward Compatibility 126 6.13 Restrictions on Generics 127 6.13.1 Cannot Specify Primitive Type Arguments 127 6.13.2 Cannot Declare Static Fields of Type Parameters 127 6.13.3 Cannot Create Instances of Type Parameters 127 6.13.4 Cannot Use instanceof 128 6.13.5 Cannot Create Generic Arrays 128 6.13.6 Limitations on Exception 128 6.13.7 Cannot Use .class 129 7. Reflection 133 7.1 Introduction 133 7.1.1 Pros and Cons of Reflection 133 7.2 Classes 134 7.2.1 Class 134 7.2.1.1 Using getClass() 134 7.2.1.2 Using .class 135 7.2.1.3 Using forName() 135 7.2.1.4 Using TYPE field 136 7.2.2 Modifier 136 7.3 Inspecting Class 137 7.3.1 Getting Class Information 137 7.3.2 Getting Class Modifiers 138 7.3.3 Finding Implemented Interfaces 138 7.3.4 Finding Inheritance Hierarchy 139 7.3.5 Finding Annotations 139 7.4 Finding Class Members 140 7.4.1 Getting Fields 140 7.4.2 Getting Methods 142 7.4.3 Getting Constructors 143 7.5 Working with Class Members 143 7.5.1 Field Type 143 7.5.2 Field Modifiers 144 7.5.3 Accessing Fields 144 7.5.3.1 Accessing forbidden fields 145 7.5.3.2 Modifying final fields 145 7.5.4 Method Modifiers 146 7.5.5 Method Information 146 7.5.6 Invoking Methods 147 7.5.6.1 Accessing forbidden methods 147 7.5.7 Debugging with Reflection 148 7.5.8 Getting Constructor Modifiers 149 7.5.9 Instantiating Objects 149 7.5.10 Arrays 150 7.5.10.1 Checking array types 150 7.5.10.2 Creating new arrays 151 7.6 Dynamic Proxy 151 7.6.1 Designing Dynamic Proxy 151 7.6.2 Invocation Handlers 153 7.7 Disadvantage of Reflection 155 8. Java Native Interface 158 8.1 Introduction 158 8.2 Java Program with C/C++ 159 8.2.1 Writing Java Program 159 8.2.2 Compiling Java Program 160 8.2.3 Create Header File 160 8.2.4 Implement Native Method 161 8.2.5 Create Shared Library 162 8.2.6 Running the Program 162 8.3 Using C++ 163 8.4 Syntax Difference in C/C++ 163 8.5 Using Java Package 164 8.5.1 JNI Types and Data Structures 165 8.6 Passing Arguments 167 8.6.1 Passing Primitives 167 8.6.2 Passing Strings 168 8.6.3 Passing Primitive Array 169 8.7 Accessing Java Code from Native Program 171 8.7.1 Passing Object Array 172 8.8 Creating Objects 174 8.9 Exception Handling in JNI 174 8.10 Appendix 177 9. AWT and Swing 182 9.1 Introduction 182 9.2 AWT Class Hierarchy 183 9.2.1 Component 183 9.2.2 Container 183 9.2.3 Controls 185 9.3 Creating Container 185 9.3.1 Empty Frame 185 9.3.2 Frame with a Title 185 9.4 Adding Components 186 9.4.1 Adding a Label 186 9.4.2 Adding a Button 186 9.5 Layout 187 9.5.1 FlowLayout 187 9.5.2 GridLayout 187 9.5.3 BorderLayout 188 9.6 Using Panel 189 9.7 Text Field 189 9.8 TextArea 190 9.9 List 190 9.10 Checkbox 191 9.11 Check Box Group 191 9.12 Choice 192 9.13 Event Handling 192 9.13.1 Event Sources 192 9.13.2 Event Classes 192 9.13.3 Event Listeners 194 9.13.4 Example 194 9.13.5 Adapter Classes 197 9.14 Dialog Boxes 198 9.14.1 Simple Dialog 198 9.14.2 File Dialog 199 9.15 ScrollBar 200 9.16 Menu 200 9.16.1 Popup Menu 201 9.17 Swing 202 9.17.1 Containment Hierarchy 203 9.17.2 Adding Components 203 9.17.3 JTextField 203 9.17.4 JPasswordField 204 9.17.5 JTable 204 9.17.6 JComboBox 205 9.17.7 JProgressBar 205 9.17.8 JList 206 9.17.9 JTree 207 9.17.10 JColorChooser 209 9.17.11 Dialogs 210 9.17.12 Appendix A: Methods of Important Event Listener Interfaces 212 10. Java and XML 217 10.1 Introduction 217 10.2 XML and DOM 217 10.3 DOM Nodes 219 10.4 The Node Interface 221 10.4.1 Node Properties 221 10.5 Document Node 225 10.5.1 Document Node Properties 225 10.5.2 Document Node Methods 225 10.6 Element Node 227 10.6.1 Element Node Properties 227 10.6.2 Element Node Methods 227 10.7 Text Node 228 10.7.1 Text Node Properties 228 10.7.2 Text Node Methods 228 10.8 Attr Node 229 10.8.1 Attr Node Properties 229 10.9 Parsing XML 229 10.9.1 Creating Document 230 10.9.2 Navigating DOM Tree 230 10.9.2.1 Using root node 230 10.9.2.2 Getting all child nodes 231 10.9.2.3 Using getElements ByTagName 232 10.9.2.4 Using getElementById 233 10.9.2.5 Getting attributes of an element 233 10.9.2.6 Viewing DOM 235 10.9.3 Manipulating DOM Tree 236 10.9.3.1 Creating a node 236 10.9.3.2 Setting an attribute 237 10.9.3.3 Adding a node 237 10.9.3.4 Inserting a node 238 10.9.3.5 Deleting a node 239 10.9.3.6 Cloning a node 240 10.9.4 Java DTD Validation 241 11. Input/Output 247 11.1 Introduction 247 11.2 Streams 247 11.2.1 Byte Stream 249 11.2.2 Character Stream 251 11.2.3 Bridging Stream 251 11.2.4 Buffered Stream 252 11.2.4.1 Buffered byte stream 252 11.2.4.2 Buffered character stream 252 11.2.5 Reading from Keyboard 253 11.2.5.1 Reading character 253 11.2.5.2 Reading string 253 11.2.6 Console 254 11.3 Formatting 254 11.4 Data Streams 255 11.5 Object Stream 255 11.6 Reading/writing Arrays via Streams 256 11.7 Pipes 256 11.8 File I/O 258 11.9 Path 258 11.9.1 Creating a Path 258 11.9.2 Retrieving Path Information 258 11.9.3 Path Operations 259 11.9.3.1 Removing redundancy 259 11.9.3.2 Converting to URI 259 11.9.3.3 Joining paths 259 11.9.4 Comparing Paths 259 11.10 File 260 11.10.1 Checking Existence 260 11.10.2 Creating File 260 11.10.3 Deleting File 260 11.10.4 Copying a File 260 11.10.5 File Attribute 261 11.10.6 Reading, Writing, Creating Files 261 11.10.7 Random Access Files 262 11.10.8 W orking with Directories 263 11.10.8.1 Listing Directory Contents 263 11.10.9 Walking Directory Tree 263 11.10.10 Watching Directory 264 PART II: NETWORK PROGRAMMING 271 12. Basic Networking 273 12.1 Java and the Net 273 12.2 Java Networking Classes and Interfaces 273 12.3 Getting Network Interfaces 274 12.3.1 Getting Interface Addresses 275 12.3.2 Getting Interface Properties 276 12.4 URL 277 12.4.1 Creating URL 277 12.4.2 Parsing URL 277 12.4.3 Web Page Retrieval 278 12.5 URLConnection 279 12.6 HttpURLConnection 280 12.6.1 URLEncoder/URLDecoder 281 12.7 Proxy 283 12.7.1 Using Command Line Arguments 283 12.7.2 Using System Properties 283 12.7.3 Using Proxy Class 283 12.8 ProxySelector 283 13. Socket Programming 287 13.1 Introduction 287 13.2 Client/server Programs 288 13.3 Sockets 289 13.3.1 Types of Socket 290 13.3.2 Ports 290 13.3.3 Socket Address 290 13.3.4 Socket Address and Java 291 13.3.5 Reserved Ports 291 13.4 TCP Sockets 292 13.4.1 The ServerSocket Class 294 13.4.2 The Socket Class 296 13.4.3 An Application 297 13.4.4 Complete Example 298 13.4.5 Running Example Program 299 13.4.6 Handling Multiple Client Requests 300 13.4.6.1 Iterative solution 300 13.4.7 Concurrently Solution 302 13.4.8 Sending and Receiving Objects Using TCP 306 13.4.8.1 Serializing an object 306 13.4.8.2 Reconstructing objects 308 13.4.9 An Example 309 13.4.10 Writing the Server 310 13.4.10.1 Writing interfaces 310 13.4.10.2 Implementing interfaces 310 13.4.10.3 Implementing server 311 13.4.10.4 Implementing client 312 13.4.10.5 Running the example 313 13.5 UDP Sockets 313 13.5.1 Datagram Packets 315 13.5.2 Datagram Server 315 13.5.3 Datagram Client 317 13.5.4 Receiving Multiple Datagrams 319 13.5.5 Sending and Receiving Objects Using UDP 321 13.5.6 Sending an Object 321 13.5.7 Reconstructing the Object 322 13.5.8 Running the Application 323 13.6 Multicasting 323 13.7 Multicast Sockets 323 13.7.1 Multicast Addresses 324 13.7.2 MulticastSocket Class 325 13.7.3 Sending Data 326 13.7.4 Receiving Data 326 13.7.5 Complete Example 327 13.7.6 Another Multicasting Example 328 13.7.7 A Text Conference Example 330 13.8 Appendix A (Useful Methods of ServerSocket Class) 332 13.8.1 Constructors 332 13.8.2 Methods 332 13.9 Appendix B (Useful Methods of Socket Class) 334 13.9.1 Constructors 334 13.9.2 Methods 335 13.10 Appendix C (Useful Methods of DatagramSocket Class) 338 13.10.1 Constructors 338 13.10.2 Methods 338 13.11 Appendix D (Useful Methods of DatagramPacket Class) 341 13.11.1 Constructors 341 13.11.2 Methods 342 13.12 Appendix E (Useful Methods of MulticastSocket Class) 343 13.12.1 Constructors 343 13.12.2 Methods 343 14. Remote Method Invocation 348 14.1 Introduction 348 14.2 Remote Method Invocation 348 14.2.1 Application Components 349 14.2.2 Basic Steps 350 14.3 Java RMI Interfaces and Classes 351 14.4 An Application 352 14.4.1 Writing an Interface 352 14.4.2 Writing Implementation class 354 14.4.2.1 Implementing the remote interface 354 14.4.2.2 Providing method implementation 355 14.4.2.3 Writing Constructor 356 14.4.3 Writing an RMI Server 356 14.4.3.1 Creating a remote object 357 14.4.3.2 Exporting the object 357 14.4.3.3 Registering the stub 360 14.4.4 Writing an RMI Client 361 14.5 Compiling the Program 363 14.5.1 Compiling Server 363 14.5.2 Compiling Client 363 14.6 Generating Stub Classes 364 14.7 Running the Program 364 14.7.1 Start Server 364 14.7.2 Start Client 365 14.7.3 Understanding Object Registry 365 14.7.4 Using RMI URL 367 14.8 Callback 369 14.8.1 Creating Interfaces 370 14.8.2 Implementing Interfaces 371 14.8.3 Writing the Server 371 14.8.4 Writing the Client 372 14.8.5 Compiling the Application 372 14.8.6 Running the Application 372 14.9 Another Callback Application 373 14.10 Dynamic Object Activation 375 14.10.1 Basic Idea 375 14.10.2 Implementation 375 14.10.3 The Activation Protocol 375 14.10.4 An Example 376 14.10.4.1 Writing implementation class 376 14.10.4.2 Writing server class 377 14.10.4.3 Compiling and running the program 379 14.11 Dynamic Class Downloading 379 14.12 An Example 380 14.12.1 Writing an RMI Server 381 14.12.1.1 Write an interface 381 14.12.1.2 Implement the interface 381 14.12.1.3 Implement the server 382 14.12.2 Writing a Client 384 14.12.3 Compiling the Program 385 14.12.3.1 Creating interface classes 386 14.12.3.2 Compiling server 386 14.12.3.3 Compiling client 387 14.12.4 Running the Application 387 14.12.5 Start Client 388 15. Java Mail API 392 15.1 E-mail 392 15.2 JavaMail API 392 15.3 Installing JavaMail API 393 15.4 Sending Emails 393 15.4.1 Creating a Session Object 394 15.4.2 Compose a Message 395 15.4.3 Sending the Mail 396 15.4.4 Compiling and Running the Program 397 15.5 Sending Emails Directly Using Socket 397 15.6 Secured SMTP 398 15.6.1 Using SSL 399 15.6.2 Using TLS 399 15.6.3 Providing Authentication Information 400 15.7 Email Message Revisited 403 15.7.1 MIME 403 15.7.2 Single-part Message 404 15.7.3 Multi-part MIME Message 405 15.7.4 Composing a Mixed Message 406 15.7.5 Compiling the Program 407 15.8 Email with HTML Content 408 15.9 Accessing Email 409 15.9.1 POP 409 15.9.2 IMAP 410 15.9.3 Secured Mail Access 411 15.9.4 JavaMail API Support 411 15.9.5 Reading Email 411 15.9.6 Using Authenticator 413 15.10 Deleting Mails 413 15.11 Replying to Mails 414 15.12 Forwarding Mails 414 15.13 Copying Emails 415 15.14 List of SMTP, POP3 and IMAP Servers 416 16. Applets 421 16.1 Client Side Java 421 16.2 Life Cycle 422 16.2.1 init() 423 16.2.2 start() 423 16.2.3 paint() 424 16.2.4 stop() 425 16.2.5 destroy() 425 16.3 Writing an Applet 426 16.4 Generating Class File 426 16.5 Running the Applet 426 16.5.1 The Applet Tag 426 16.6 Security 430 16.7 Utility Methods 431 16.8 Using Status Bar 432 16.9 AppletContext Interface 432 16.10 Document Base and Code Base 433 16.11 Passing Parameter 434 16.11.1 Retrieving Parameter 434 16.12 Event Handling 435 16.13 Communication Between Two Applets 436 16.13.1 Using getApplet() Method 436 16.13.2 Using getApplets() Method 437 16.13.3 A Sample Application 438 16.14 Loading Web Pages 439 16.15 Interacting with JavaScript Code 440 17. Java XML-RPC 445 17.1 Introduction 445 17.2 XML-RPC Operational Principle 446 17.3 Data Types 447 17.3.1 Basic Data Types 447 17.3.2 Compound Data Types 449 17.4 XML-RPC Messages 451 17.4.1 Request Message 452 17.4.2 Response Message 453 17.4.3 Fault Message 454 17.5 Java XML-RPC 454 17.6 Installing the Apache XML-RPC Java Library 455 17.7 XML-RPC versus Java Data Types 455 17.8 Example 456 17.8.1 Writing the Server 456 17.8.2 Writing the Client 457 17.8.3 Running the Application 459 17.9 Dynamic Proxies 460 17.10 Using XmlRpcServlet 462 17.11 Using ServletWebServer 464 17.12 Introspection 466 17.12.1 Example 467 17.12.1.1 Listing methods 468 17.12.1.2 Finding method signature 469 17.12.1.3 Getting help 470 17.13 Limitations of XML-RPC 471 18. Java and Soap 475 18.1 Introduction 475 18.2 Differences with XML-RPC 475 18.3 Soap Architecture 476 18.4 SOAP Flavors 477 18.5 SOAP Messages 477 18.6 SOAP Binding 479 18.7 RPC Using SOAP 479 18.8 Web Service 480 18.9 JAX-WS 480 18.9.1 Developing Web Service 481 18.9.2 Deploying Web Service 482 18.9.3 Invoking Web Service 483 18.9.4 Tracking SOAP messages 485 18.9.5 Using WSDL 486 18.9.6 Document Style 489 18.9.7 Using Tomcat to Deploy Web Service 490 18.9.8 Using Ant to Build War File 492 18.9.9 Asynchronous Client 493 18.9.9.1 Polling 494 18.9.9.2 Callback 495 PART III: ENTERPRISE JAVA 501 19. Security 503 19.1 Introduction 503 19.2 Java Security Architecture 504 19.2.1 Language Security 504 19.2.2 Basic Security 504 19.2.3 Java Cryptography Architecture (JCA) 505 19.2.3.1 Secret-key cryptography 505 19.2.3.2 Public-key cryptography 506 19.2.4 Public Key Infrastructure (PKI) 506 19.2.4.1 Public key certificates 506 19.2.4.2 Certificate format 506 19.2.4.3 Digital signature 507 19.2.4.4 Key and certificate store 507 19.2.5 PKI Tools 507 19.3 Secure Communication 508 19.4 SSL 508 19.4.1 What does SSL do? 508 19.4.2 How does it do? 508 19.4.3 An Example 509 19.4.3.1 Writing the server 509 19.4.3.2 Writing the client 510 19.4.3.3 Compiling and running the application 510 19.4.4 Using Client Authentication 514 19.4.5 Using KeyStore 515 19.4.6 Ignoring Server Certificates 517 19.4.7 Working with HTTPS 517 19.5 keytool Revisited 519 19.5.1 KeyStore 519 19.5.2 Keystore Entries 520 19.5.2.1 Truststore 520 19.5.3 Keystore Aliases 520 19.5.4 Public Key Generation 520 19.5.5 Changing Password 521 19.5.6 Generating a Certificate Chain 521 19.5.7 Generating a Certificate Using Openssl 522 19.6 Generating Keys 524 19.6.1 Public Key Generation 524 19.6.2 Private Key Generation 524 19.7 Working with Keystore 525 19.7.1 Reading Keystore 525 19.7.2 Extracting Private Keys from Keystore 525 19.7.3 Storing Private Key and Certificate in Keystore 526 19.8 Working with Certificates 526 19.8.1 Reading Certificate Information 527 19.8.2 CREATING CERTIFICATE 527 19.8.3 Converting Certificates 528 19.8.4 SignedObject 529 19.8.5 SealedObject 531 19.8.6 GuardedObject 534 19.9 Secure RMI 535 19.9.1 Writing Custom Socket Factories 538 19.10 Secure XML-RPC 539 19.10.1 Using XmlRpcServlet 539 19.10.2 Using Secure XML-RPC 540 19.11 Signing and Verifying JAR 542 19.11.1 Signing JAR 542 19.11.1.1 Signature (.SF) file 543 19.11.1.2 Signature block file 544 19.11.2 Verifying JAR 544 19.12 Multiple Signatures for a JAR File 544 19.13 Access Control 545 19.13.1 Installing Built-in Security Manager 546 19.13.2 Policy Files 546 19.13.3 Policy File Syntax 547 19.13.3.1 Keystore entry 547 19.13.3.2 Grant entry 548 19.13.3.3 Permission entry 549 19.13.4 Custom Permission Class 549 19.14 An application 550 20. Servlet 557 20.1 Server-side Java 557 20.2 Advantages Over Applets 558 20.3 Servlet Alternatives 558 20.3.1 Common Gateway Interface (CGI) 558 20.3.2 Proprietary APIs 558 20.3.3 Active Server Pages (ASP) 559 20.3.4 Server-side JavaScript 559 20.4 Servlet Strengths 559 20.4.1 Efficient 559 20.4.2 Persistent 559 20.4.3 Portable 559 20.4.4 Robust 559 20.4.5 Extensible 559 20.4.6 Secure 560 20.4.7 Cost-effective 560 20.5 Servlet Architecture 560 20.6 Servlet Life Cycle 561 20.6.1 init() 562 20.6.2 service() 562 20.6.3 destroy() 562 20.6.4 Other Methods 563 20.7 GenericServlet 563 20.8 HttpServlet 563 20.9 First Servlet 564 20.9.1 Installing Apache Tomcat Web Server 565 20.9.2 Building and Installing Servlet 566 20.9.3 Invoking Servlet 567 20.10 Passing Parameters to Servlets 568 20.10.1 Passing Parameters Directly to a Servlet 568 20.10.2 Passing Parameters Directly to a Servlet 568 20.11 Retrieving Parameters 569 20.12 Server-Side Include 571 20.13 Cookies 574 20.13.1 Limitations of Cookies 575 20.14 Filters 575 20.14.1 Deploying Filter 577 20.15 Problems with Servlet 577 20.16 Security Issues 578 20.17 Appendix A: List of SSI Servlet Variables 578 21. Java Server Pages 583 21.1 Introduction and Marketplace 583 21.2 JSP and HTTP 584 21.3 JSP Engines 584 21.3.1 Tomcat 584 21.3.2 Java Web Server 586 21.3.3 WebLogic 586 21.3.4 WebSphere 586 21.4 How JSP Works 586 21.5 JSP and Servlet 587 21.5.1 Translation and Compilation 587 21.6 Anatomy of a JSP Page 590 21.7 JSP Syntax 591 21.8 JSP Components 591 21.8.1 Directives 591 21.8.1.1 Page directive 592 21.8.1.2 Include directive 594 21.8.2 Comments 594 21.8.3 Expressions 595 21.8.4 Scriptlets 595 21.8.4.1 Conditional processing 596 21.8.5 Declarations 596 21.8.6 Scope of JSP Objects 597 21.8.7 Implicit Objects 598 21.8.8 Variables, Methods, and Classes 600 21.8.8.1 Synchronization 601 21.8.9 Standard Actions 602 21.8.10 Tag Extensions 606 21.8.10.1 Tag type 606 21.8.10.2 Writing tags 606 21.8.11 Iterating a Tag Body 609 21.8.12 Sharing Data Between JSP Pages 611 21.9 Beans 612 21.9.1 useBean 612 21.9.2 setProperty 613 21.9.3 getProperty 613 21.9.4 Complete Example 613 21.9.5 Other Usage 614 21.10 Session Tracking 614 21.10.1 Hidden fields 614 21.10.2 URL Rewriting 616 21.10.3 Cookies 616 21.10.4 Session API 617 21.11 Users Passing Control and Data between Pages 619 21.11.1 Passing Control 619 21.11.2 Passing Data 619 21.12 Sharing Session and Application Data 620 22. Java Database Connectivity (JDBC) 625 22.1 Introduction 625 22.2 JDBC Drivers 625 22.2.1 JDBC-ODBC Bridge (Type 1) 626 22.2.2 Native-API, Partly Java (Type 2) 626 22.2.3 Middleware, Pure Java (Type 3) 626 22.2.4 Pure Java Driver (Type 4) 626 22.3 JDBC Architecture 626 22.4 JDBC Classes and Interfaces 627 22.5 Basic Steps 627 22.6 Loading a Driver 628 22.7 Making a Connection 629 22.8 Execute SQL Statement 631 22.9 SQL Statements 631 22.9.1 Simple Statement 632 22.9.2 Atomic Transaction 635 22.9.3 Pre-compiled Statement 637 22.9.4 SQL Statements to Call Stored Procedures 638 22.10 Retrieving Result 640 22.11 Getting Database Information 641 22.12 Scrollable and Updatable ResultSet 642 22.12.1 Scrollability Type 643 22.12.2 Concurrency Type 643 22.12.3 Examples 643 22.13 Result Set Metadata 647 23. Hibernate 657 23.1 Introduction 657 23.2 Installing Hibernate 658 23.3 Basic Steps 658 23.4 Writing POJO Class 658 23.5 Creating a Table 659 23.6 Writing a Hibernate Application 659 23.7 Compiling and Running Application 663 23.8 Using Annotation 664 23.9 Environment Setup for Hibernate Annotation 664 23.10 Book Application Using Annotation 664 23.11 Function of Different Annotations 665 23.12 Object Life Cycle 666 23.13 Hibernate Query Language 667 23.13.1 From 667 23.13.2 Select 667 23.13.3 Where 668 23.13.4 Filtering 668 23.13.5 Order by 668 23.13.6 Group by 668 23.13.7 Parameter Binding 668 23.13.8 Update 669 23.13.9 Delete 669 23.13.10 Insert 669 23.13.11 Aggregate Methods 70 23.14 Using Native SQL Query 670 23.15 Named Queries 670 23.15.1 Defining Named Queries 671 23.15.2 Calling Named Queries 672 23.16 Generating DDL 673 23.17 Syntax of O/R Mapping File 674 23.18 Generator Class 676 23.19 Hibernate Tools 677 23.19.1 Using Hibernate Tools with Ant 677 23.19.2 Ant Task 678 23.19.3 Configuring Task 678 23.19.4 Exporters 679 23.19.5 Controlling Reverse Engineering 683 23.19.6 Controlling POJO Code Generation 685 24. Java Naming and Directory Interface 692 24.1 Naming Concepts 692 24.1.1 Naming Convention 693 24.1.2 Naming Context 693 24.1.3 Binding 693 24.2 Directory Concepts 694 24.2.1 Directory Context 694 24.3 Java Naming and Directory Interface 694 24.4 An Example 695 24.4.1 Writing the Server 695 24.4.2 Writing the Client 696 24.4.3 Running Application 696 24.5 Specifying JNDI Properties 697 24.6 Name Servers 697 24.7 Using ApacheDS 698 24.7.1 Installing and Starting ApacheDS 698 24.7.2 JNDI Properties for ApacheDS 699 24.8 Calculator RMI Application Using LDAP 699 24.9 Calculator RMI-IIOP Application Using JNDI 699 24.9.1 Server 699 24.9.2 Client 700 24.9.3 Running the Application 700 24.10 Naming Operations 700 24.10.1 Adding, Replacing and Removing Binding 701 24.10.2 Looking Up 701 24.10.3 Renaming 701 24.10.4 Listing 702 24.10.4.1 Using list() 702 24.10.4.2 Using listBindings() 702 24.11 Working with Subcontext 703 24.12 Working with Directory 703 24.12.1 Reading Attributes 703 24.12.2 Binding with Attributes 704 24.12.3 Creating Subcontext with Attributes 705 24.12.4 Adding Attributes 705 24.12.5 Modifying Attributes 706 24.12.6 Removing Attributes 706 24.12.7 Batch Operation on Attributes 707 24.12.8 Search 707 24.12.8.1 Basic search 707 24.12.8.2 Filters 709 25. Java Message Service 714 25.1 Messaging 714 25.2 JMS API 714 25.3 JMS Components 715 25.4 Messaging Models 715 25.4.1 Point-to-Point 716 25.4.2 Publish/Subscribe 716 25.5 Message Consumption 717 25.5.1 Synchronous 717 25.5.2 Asynchronous 717 25.6 Programming Model 717 25.7 Installing Open MQ 720 25.8 Writing JMS Application 722 25.9 Writing a P2P Producer 722 25.9.1 Running Example 723 25.10 Writing a P2P Synchronous Consumer 724 25.11 Writing a P2P Asynchronous Consumer 725 25.12 Writing a Pub/Sub Producer 726 25.13 Writing a Pub/Sub Synchronous Consumer 726 25.14 Running this Example 727 25.15 Writing a Pub/Sub Asynchronous Consumer 727 25.16 Browsing Queue 728 25.17 Using JNDI 729 25.18 Reliability Mechanisms 731 25.18.1 Acknowledgement 732 25.18.2 Message Persistence 732 25.18.3 Message Priority 732 25.18.4 Message Expiration 732 25.18.5 Temporary Destinations 733 25.19 Transacted Session 733 26. Introduction to J2EE 739 26.1 Overview of J2EE 739 26.2 Introduction to JavaBeans 740 26.2.1 Properties 741 26.2.2 Accessor Methods 741 26.3 Bean Builder 741 26.4 Advantages of JavaBeans 742 26.5 BDK Introspection 742 26.5.1 Design Patterns 743 26.6 Properties 744 26.6.1 Simple Properties 744 26.6.2 Bound Properties 745 26.6.3 Constrained Properties 748 26.6.3.1 Implementing constrained property support 748 26.6.3.2 Implementing constrained property Listener 749 26.6.3.3 Example 750 26.6.4 Indexed Properties 751 26.7 BeanInfo Interface 752 26.8 Persistence 756 26.9 Customizer 758 26.10 JavaBeans API 759 26.11 EJB 761 26.11.1 Benefits of EJB 761 26.11.2 Usage Scenario 761 26.11.3 EJB Architecture 761 26.11.4 Session Beans 762 26.11.4.1 Stateless session beans 762 26.11.4.2 Stateful session beans 762 26.11.5 Entity Beans 762 26.11.6 Message Driven Beans 763 26.12 Introduction to Struts Framework 763 26.12.1 Basic Idea 763 27. Java and CORBA 770 27.1 Introduction 770 27.2 CORBA Architecture 770 27.2.1 IDL 771 27.2.2 ORB 771 27.2.3 IIOP 771 27.2.4 IOR 771 27.3 Java IDL 772 27.4 Developing CORBA Applications 772 27.4.1 Write an Interface Using IDL 772 27.4.2 Mapping IDL Interface to Java 773 27.4.3 Implementing the Interface 774 27.4.4 Writing the Server 774 27.4.4.1 Binding IOR to naming service 775 27.4.5 Writing the Client 776 27.5 Compiling Applications 777 27.6 Running the Application 777 27.7 Using Properties 778 27.8 Stringified Object Reference 779 27.9 Using URL 780 27.9.1 Using corbaloc 780 27.9.2 Using corbaname 781 27.10 Using Tie 782 27.11 Persistent Objects 782 27.11.1 Running Persistent Application 784 27.12 Callback 784 27.13 Using Dynamic Invocation Interface (DII) 787 27.14 Using Dynamic Skeleton Interface (DSI) 789 27.14.1 Basic Steps 789 27.14.2 An Example 789 27.15 Using Out and Inout Parameter 791 27.15.1 Invoking Operation Using Holder Classes 792 27.15.2 An Example 792 27.16 RMI-IIOP 793 27.16.1 An Example 793 27.16.1.1 Writing an interface 793 27.16.1.2 Implementing the interface 794 27.16.1.3 Writing the server 794 27.16.1.4 Writing the client 794 27.16.1.5 Compiling server files 794 27.16.1.6 Compiling client files 795 27.16.1.7 Running the application 795 27.17 IDL to Java Language Mapping 795 28. Java Server Faces 801 28.1 Introduction 801 28.2 First Application 802 28.2.1 Installing JSF 802 28.2.2 Writing a JSF Page 803 28.2.3 Deploying the Application 804 28.2.4 Testing the Application 805 28.3 Request Processing Life-cycle 806 28.3.1 Restore View 806 28.3.2 Apply Request Values 807 28.3.3 Process Validations 807 28.3.4 Update Model Values 808 28.3.5 Invoke Application 808 28.3.6 Render Response 808 28.4 Tracing Phases 808 28.5 Managed Bean 809 28.5.1 Using faces-config.xml File 810 28.5.2 Using @ManagedBean Annotation 811 28.5.3 Scope Annotations 811 28.5.4 @ManagedProperty Annotation 812 28.6 Accessing Managed Bean Programmatically 813 28.6.1 Using javax.faces.context. ExternalContext 813 28.6.2 Using javax.el.ELContext 813 28.6.3 Using evaluateExpressionGet() Method 814 28.7 Basic JSF Tags 814 28.8 Expression Language 817 28.8.1 Value Expression 818 28.8.2 Method Expression 819 28.8.3 Facelets 820 28.8.3.1 Templates 820 28.8.3.2 Custom tags 821 28.8.3.3 Composite components 823 28.8.3.4 Remove 824 28.8.4 Converter Tags 824 28.8.5 Displaying Messages 827 28.8.6 Validations 828 28.9 AJAX 830 28.10 Event Handling 831 28.10.1 Value Change Listener 831 28.10.1.1 Using value- ChangeListener attribute 831 28.10.2 Using < f:valueChangeListener> Tag 832 28.10.3 Action Listener 832 28.10.3.1 Using actioneListener attribute 832 28.10.4 Using < f:actionListener> Tag 833 28.11 An Event Handling Example 833 28.12 Page Navigation 834 28.12.1 Auto Navigation 834 28.12.2 Using Managed Bean 835 28.12.3 Using Navigation Rule in Faces-config.xml 835 Answers to Objective-type Questions 841
دانلود کتاب Advanced Java programming