图书简介
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.
馆藏图书馆
Harvard Library
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; 2
Trade Policy 买家须知
- 关于产品:
- ● 正版保障:本网站隶属于中国国际图书贸易集团公司,确保所有图书都是100%正版。
- ● 环保纸张:进口图书大多使用的都是环保轻型张,颜色偏黄,重量比较轻。
- ● 毛边版:即书翻页的地方,故意做成了参差不齐的样子,一般为精装版,更具收藏价值。
关于退换货:
- 由于预订产品的特殊性,采购订单正式发订后,买方不得无故取消全部或部分产品的订购。
- 由于进口图书的特殊性,发生以下情况的,请直接拒收货物,由快递返回:
- ● 外包装破损/发错货/少发货/图书外观破损/图书配件不全(例如:光盘等)
并请在工作日通过电话400-008-1110联系我们。
- 签收后,如发生以下情况,请在签收后的5个工作日内联系客服办理退换货:
- ● 缺页/错页/错印/脱线
关于发货时间:
- 一般情况下:
- ●【现货】 下单后48小时内由北京(库房)发出快递。
- ●【预订】【预售】下单后国外发货,到货时间预计5-8周左右,店铺默认中通快递,如需顺丰快递邮费到付。
- ● 需要开具发票的客户,发货时间可能在上述基础上再延后1-2个工作日(紧急发票需求,请联系010-68433105/3213);
- ● 如遇其他特殊原因,对发货时间有影响的,我们会第一时间在网站公告,敬请留意。
关于到货时间:
- 由于进口图书入境入库后,都是委托第三方快递发货,所以我们只能保证在规定时间内发出,但无法为您保证确切的到货时间。
- ● 主要城市一般2-4天
- ● 偏远地区一般4-7天
关于接听咨询电话的时间:
- 010-68433105/3213正常接听咨询电话的时间为:周一至周五上午8:30~下午5:00,周六、日及法定节假日休息,将无法接听来电,敬请谅解。
- 其它时间您也可以通过邮件联系我们:customer@readgo.cn,工作日会优先处理。
关于快递:
- ● 已付款订单:主要由中通、宅急送负责派送,订单进度查询请拨打010-68433105/3213。
本书暂无推荐
本书暂无推荐