当前位置:首页 > >
《Java Web从入门到精通》电子书封面

Java Web从入门到精通

  • 发布时间:2019年04月08日 11:05:34
  • 作者:明日科技
  • 大小:156.8 MB
  • 类别:java web开发电子书
  • 格式:PDF
  • 版本:高质量第2版
  • 评分:7.9

    Java Web从入门到精通 PDF 高质量第2版

      给大家带来的一篇关于java web开发相关的电子书资源,介绍了关于Java、Web、入门到精通方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小156.8 MB,明日科技编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.4分

      Tags:

      内容介绍

      Java Web从入门到精通电子书封面

      Java Web从入门到精通电子书封面

      读者评价

      比较基础的Java web,可以当作概念学习一下。
      大三暑假的时候粗略的看过一遍,应付学校的作业。现在导师接了JavaWeb的项目,只能再看一遍,熟悉一遍JavaWeb开发流程和技术。这本书很不错,特别适合新手,有代码有讲解,特别推荐。。。随便说一句我才看了一个小时就发现了好几处错误,单词少字母,调用函数少“.”不过不影响使用。
      图书中除了一些显然的拼写错误外,内容很详实,可以对知识点有全面的了解,作为Java Web入门书籍,值得购买。

      内容介绍

      《Java Web从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了进行Java Web应用程序开发应该掌握的各方面技术。《Java Web从入门到精通(第2版)》共分21章,包括Java Web应用开发概述、HTML与CSS网页开发基础、JavaScript脚本语言、搭建开发环境、JSP基本语法、JSP内置对象、JavaBean技术、Servlet技术、过滤器和监听器、Java Web的数据库操作、EL(表达式语言)、JSTL标签、Ajax技术、Struts2基础、Struts2高级技术、Hibernate技术、Hibernate高级应用、Spring核心之IoC、Spring核心之AOP、JSP操作XML、清爽夏日九宫格日记网等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java Web应用程序开发的精髓,快速提高开发技能。 《Java Web从入门到精通(第2版)》可作为软件开发入门者的自学用书,也可作为高等院校相关专业的教学参考书,还可供开发人员查阅、参考。

      内容节选

      java实现一个简单的Web服务器实例解析

       

      Web服务器也称为超文本传输协议服务器,使用http与其客户端进行通信,基于java的web服务器会使用两个重要的类,
      java.net.Socket类和java.net.ServerSocket类,并基于发送http消息进行通信。

      这个简单的Web服务器会有以下三个类:

      *HttpServer
      *Request
      *Response

      应用程序的入口在HttpServer类中,main()方法创建一个HttpServer实例,然后调用其await()方法,顾名思义,await()方法会在指定端口上等待HTTP请求,对其进行处理,然后发送响应信息回客户端,在接收到关闭命令前,它会保持等待状态。

      该应用程序仅发送位于指定目录的静态资源的请求,如html文件和图像,它也可以将传入到的http请求字节流显示到控制台,但是,它并不发送任何头信息到浏览器,如日期或者cookies等。

      下面为这几个类的源码

      Request:

      package cn.com.server;
      import java.io.InputStream;
      public class Request {
      	private InputStream input;
      	private String uri;
      	public Request(InputStream input){
      		this.input=input;
      	}
      	public void parse(){
      		//Read a set of characters from the socket 
      		StringBuffer request=new StringBuffer(2048);
      		int i;
      		byte[] buffer=new byte[2048];
      		try {
      			i=input.read(buffer);
      		}
      		catch (Exception e) {
      			e.printStackTrace();
      			i=-1;
      		}
      		for (int j=0;j<i;j++){
      			request.append((char)buffer[j]);
      		}
      		System.out.print(request.toString());
      		uri=parseUri(request.toString());
      	}
      	public String parseUri(String requestString){
      		int index1,index2;
      		index1=requestString.indexOf(" ");
      		if(index1!=-1){
      			index2=requestString.indexOf(" ",index1+1);
      			if(index2>index1){
      				return requestString.substring(index1+1,index2);
      			}
      		}
      		return null;
      	}
      	public String getUri(){
      		return this.uri;
      	}
      }

      Request类表示一个HTTP请求,可以传递InputStream对象来创建Request对象,可以调用InputStream对象中的read()方法来读取HTTP请求的原始数据。

      上述源码中的parse()方法用于解析Http请求的原始数据,parse()方法会调用私有方法parseUrI()来解析HTTP请求的URI,除此之外,并没有做太多的工作,parseUri()方法将URI存储在变量uri中,调用公共方法getUri()会返回请求的uri。

      Response:

      package cn.com.server;
      import java.io.File;
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.io.OutputStream;
      /** 
       * HTTP Response = Status-Line 
       *   *(( general-header | response-header | entity-header ) CRLF) 
       *   CRLF 
       *   [message-body] 
       *   Status-Line=Http-Version SP Status-Code SP Reason-Phrase CRLF 
       * 
       */
      public class Response {
      	private static final int BUFFER_SIZE=1024;
      	Request request;
      	OutputStream output;
      	public Response(OutputStream output){
      		this.output=output;
      	}
      	public void setRequest(Request request){
      		this.request=request;
      	}
      	public void sendStaticResource()throws IOException{
      		byte[] bytes=new byte[BUFFER_SIZE];
      		FileInputStream fis=null;
      		try {
      			File file=new File(HttpServer.WEB_ROOT,request.getUri());
      			if(file.exists()){
      				fis=new FileInputStream(file);
      				int ch=fis.read(bytes,0,BUFFER_SIZE);
      				while(ch!=-1){
      					output.write(bytes, 0, BUFFER_SIZE);
      					ch=fis.read(bytes, 0, BUFFER_SIZE);
      				}
      			} else{
      				//file not found 
      				String errorMessage="HTTP/1.1 404 File Not Found\r\n"+ 
      				        "Content-Type:text/html\r\n"+ 
      				        "Content-Length:23\r\n"+ 
      				        "\r\n"+ 
      				        "<h1>File Not Found</h1>";
      				output.write(errorMessage.getBytes());
      			}
      		}
      		catch (Exception e) {
      			System.out.println(e.toString());
      		}
      		finally{
      			if(fis!=null){
      				fis.close();
      			}
      		}
      	}
      }

      Response对象在HttpServer类的await()方法中通过传入套接字中获取的OutputStream来创建。

      Response类有两个公共方法:setRequest()sendStaticResource() setRequest()方法会接收一个Request对象为参数,sendStaticResource()方法用于发送一个静态资源到浏览器,如Html文件。

      HttpServer:

      package cn.com.server;
      import java.io.File;
      import java.io.InputStream;
      import java.io.OutputStream;
      import java.net.InetAddress;
      import java.net.ServerSocket;
      import java.net.Socket;
      public class HttpServer {
      	/** 
         * WEB_ROOT is the directory where our html and other files reside. 
         * For this package,WEB_ROOT is the "webroot" directory under the 
         * working directory. 
         * the working directory is the location in the file system 
         * from where the java command was invoke. 
         */
      	public static final String WEB_ROOT=System.getProperty("user.dir")+File.separator+"webroot";
      	private static final String SHUTDOWN_COMMAND="/SHUTDOWN";
      	private Boolean shutdown=false;
      	public static void main(String[] args) {
      		HttpServer server=new HttpServer();
      		server.await();
      	}
      	public void await(){
      		ServerSocket serverSocket=null;
      		int port=8080;
      		try {
      			serverSocket=new ServerSocket(port,1,InetAddress.getByName("127.0.0.1"));
      		}
      		catch (Exception e) {
      			e.printStackTrace();
      			System.exit(0);
      		}
      		while(!shutdown){
      			Socket socket=null;
      			InputStream input=null;
      			OutputStream output=null;
      			try {
      				socket=serverSocket.accept();
      				input=socket.getInputStream();
      				output=socket.getOutputStream();
      				//create Request object and parse 
      				Request request=new Request(input);
      				request.parse();
      				//create Response object 
      				Response response=new Response(output);
      				response.setRequest(request);
      				response.sendStaticResource();
      			}
      			catch (Exception e) {
      				e.printStackTrace();
      				continue;
      			}
      		}
      	}
      }

      这个类表示一个Web服务器,这个Web服务器可以处理对指定目录的静态资源的请求,该目录包括由公有静态变量final WEB_ROOT指明的目录及其所有子目录。

      现在在webroot中创建一个html页面,命名为index.html,源码如下:

      <!DOCTYPE html> 
      <html> 
      <head> 
      <meta charset="UTF-8"> 
      <title>Insert title here</title> 
      </head> 
      <body> 
        <h1>Hello World!</h1> 
      </body> 
      </html> 

      现在启动该WEB服务器,并请求index.html静态页面。

      所对应的控制台的输出:

      如此,一个简单的http服务器便完成了。

      目录

      • 第1篇 Web开发基础
      • 第1章 Java Web应用开发概述
      • 视频讲解:21分钟
      • 第2章 HTML与CSS网页开发基础
      • 视频讲解:68分钟
      • 第3章 JavaScript脚本语言
      • 视频讲解:90分钟
      • 第4章 搭建开发环境
      • 视频讲解:19分钟
      • 第2篇 JSP语言基础
      • 第5章 JSP基本语法
      • 视频讲解:50分钟
      • 第6章 JSP内置对象
      • 视频讲解:69分钟
      • 第7章 JavaBean技术
      • 视频讲解:29分钟
      • 第8章 Servlet技术
      • 视频讲解:22分钟
      • 第9章 过虑器和监听器
      • 视频讲解:44分钟
      • 第3篇 JSP高级内容
      • 第10章 Java Web的数据库操作
      • 视频讲解:48分钟
      • 第11章 EL(表达式语言)
      • 视频讲解:23分钟
      • 第12章 JSTL标签
      • 视频讲解:62分钟
      • 第13章 Ajax技术
      • 视频讲解:59分钟
      • 第4篇 流行框架与XML技术
      • 第14章 Struts2基础
      • 视频讲解:60分钟
      • 第15章 Struts2高级技术
      • 视频讲解:49分钟
      • 第16章 Hibernate技术
      • 视频讲解:42分钟
      • 第17章 Hibernate高级应用
      • 视频讲解:72分钟
      • 第18章 Spring核心之IoC
      • 视频讲解:38分钟
      • 第19章 Spring核心之AOP
      • 视频讲解:24分钟
      • 第20章 JSP操作XML
      • 第5篇 项目 实 战
      • 第21章清爽夏日九宫格日记网
      • 视频讲解:95分钟

      以上就是本次介绍的java web开发电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:全栈开发之道

      下一篇:OpenCV算法精解:基于Python与C++

      展开 +

      收起 -

      下载地址:百度网盘下载
      读者心得
      网友NO.37219
      网友NO.37219

      Javaweb学习心得小总结---servlet开发 1.Servlet是什么?(来自百度,知道的可以忽略本段) Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web服务器中。 按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet 2.Servlet的工作流程? Servlet程序是Web服务器调用,web服务器接到客户端的Servlet请求后: 1.web服务器首先检查是否装载并创建了该Servlet的实例对象,如果是执行4,否则执行2, 2.装载并创建Servlet的一个实例对象,并调用init()方法 4.创建一个封装http请求信息的HttpServletRequest对象和响应的HttpServletResponse对象, 5.web程序停止之前,调用Servlet的destroy()方法,卸载Servlet。 3.使用Servlet注意的几个问题? 因为我们是通过url访问web服务器中的资源,Servlet若想被外界访问,必须映射到url地址上,这个工作 在web.xml文件中使用元素和元素中完成。 4 缺省Servlet 如果元素的中的映射路径仅为(/),那么这个Servlet就是缺省的Servlet,用于 处理其他Servlet都不处理的访问请求. 5.Servlet的线程安全问题 当多个客户端并发访问同一个Servlet,web服务器会为每一个客户端的访问请求创建一个线程, 并调用service()方法,因此service方法内如果访问了同一个资源,就可能引发线程安全问题。

      码农之家

      文梦桐 提供上传

      资源
      16
      粉丝
      20
      喜欢
      181
      评论
      7

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com