web开发概述——Servelt技术

web开发技术概述

WEB,它用于表示Internet主机上(服务器)供外界访问的资源 Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处是用户很容易访问应用程序。用户只需要有浏览器即可,不需要再安装其他软件。

应用程序有两种模式C/SB/S

C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。

B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助服务器运行,需要IE等浏览器来查看运行结果。

B/S架构

浏览器/服务器架构Browser/Server简称B/S能够很好地应用在广域网上,成为越来越多的企业的选择。 浏览器/服务器架构相对于其他几种应用程序体系结构的优点:

        1、这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。 这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据

        2、在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载

        3、在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。 不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,如Windows或直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是计算机的标准设备。

web应用资源

Internet上供外界访问的Web资源分为:

静态web资源(htmlcssjs页面):指web页面中供人们浏览的数据始终是不变

动态web资源(JSPPHPASP):指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

常用静态web资源开发技术:htmlcssjs技术

常用动态web资源开发技术: JSP/Servlet(JAVA)ASP(微软.net)PHP

javaweb就是使用java技术开发web页面,供浏览器访问的项目。

        Web是一种分布式应用架构,旨在共享分布在网络上的各个Web服务器中的所有相互链接信息 。

        Web采用客户/服务器通信模式,客户与服务器之间用HTTP协议通信 。

        Web使用超级文本技术(HTML)来链接网络上的信息。信息存放在服务器端,客户机通过浏览器(IEChrome)就可以查找网络中的各个Web服务器上的信息。

Web相关的一个概念是WWW(World Wide Web)WWW是指全球范围内的Web,它以Internet为网络平台,Internet是来自世界各地的众多相互连接的计算机和其他设备的集合,而WWW则是Internet的一种分布式应用结构。

web工作原理

1、浏览器根据用户输入的地址查找对应的服务器,不同的网站对应不同的服务器,这个服务器通常称为web服务器,可以接收浏览器发送的请求【DNS域名服务 】

2、web服务器根据请求的内容调用不同的服务器端程序,服务器端程序通常也是一个服务器,称为应用服务器

3、应用服务器接收到请求之后,查找相应的文件,加载并执行相应的任务,如果涉及数据处理,则需要与数据库服务器交互

4、处理完数据,将处理结果返回给应用服务器,服务器端程序的执行结果通常是一个html文档。

5、应用服务器把执行的结果返回给web服务器,web服务器再把这个结果返回给客户端浏览器 。

6、浏览器解析html文档,然后把解析后的网页显示给最终用户。

web应用详解

客户端根据用户输入的地址信息请求服务器,服务器在接收到用户的请求后进行处理,然后将处理结果响应给客户端,客户端将响应结果渲染显示给用户---请求响应模型

请求:客户端根据用户地址信息将数据发送给服务器的过程

响应:服务器将请求的处理结果发送给浏览器的过程

协议:是指通信的双方,在通信流程或内容格式上,共同遵守的标准

web开发又分为前端和后端。前端主要负责页面的展示,后端则是业务逻辑的实现,简单理解:能看到的界面就是前端所产生的,后端是与数据打交道,数据处理完后交由前端以符合人审美的方式显现出。


简介HTTP协议

超文本传输协议Hyper Text Transfer Protocol是互联网上应用最为广泛的一种网络协议,是互联网的基础协议,也是网页开发的必备知识。Http协议是TCP/IP协议簇中应用层协议,实际上就是在TCP数据传输的基础上添加了数据传输的格式规定。

是一个基于请求与响应模式的、无状态的的协议,基于TCP的连接方式,HTTP 1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。

作用:规范了浏览器和服务器的数据交互

http工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。首先DNS地址解析

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户 来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

http总结1DNS解析。2TCP连接。3、发送HTTP请求。4、服务器处理请求并返回HTTP文。5、浏览器解析渲染页面。6、连接结束

HTTP协议特点

1、简单快速,由于协议简单,使用http服务器的程序规模小,因而通信速度很快,适用于分布式超媒体信息系统

2、灵活。http允许传输任意类型的数据对象,正在传输的数据格式类型由Content-Type加以标记

3、不保持连接【断开式连接,http1.1连接默认都是持久连接】。限制每次连接只处理一个请求,服务器处理完毕客户端的请求后,在收到客户端应答后会自动断开连接。采用这种方式可以节省传输时间,节约服务器资源的占用

4、无状态。http协议是无状态协议。无状态是指协议对于事务处理没有记忆功能。缺少状态意味着如果后续处理需要前面的信息,则只能重传。这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时应答方式就比较快

HTTP协议响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。最重要的是响应状态码。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

1xx指示信息--表示请求已接收,继续处理

2xx成功--表示请求已被成功接收、理解、接受

3xx重定向--要完成请求必须进行更进一步的操作

4xx客户端错误--请求有语法错误或请求无法实现

5xx服务器端错误--服务器未能实现合法的请求

常见状态代码:

200 OK客户端请求成功

304 NOT MODIFIED该资源在上次请求之后没有任何修改,这通常用于浏览器的缓存机制

400 Bad Request客户端请求有语法错误,不能被服务器所理解

401 Unauthorized请求未经授权

403 Forbidden服务器收到请求,但是拒绝提供服务

404 Not Found请求资源不存在,如输入了错误的URL

500 Internal Server Error服务器发生不可预期的错误。


Servlet技术

Servlet规范是JavaEE规范中的一个部分,是用于扩展服务器功能的运行在服务器中的小型Java程序(即服务器端小应用程序),是实现了Servlet接口通过http接收和响应web客户端请求的类

Servlet概述

Servlet是一种用于扩展服务器功能的服务器端组件技术 ,用于实现动态网页编程

要求直接或者间接的实现Servlet接口

运行在服务器端,执行结果是一个html文档

有三种:Servlet Filter xxxListener

实例演示:

Servlet接口不在JavaSE中,需要因为servlet-api依赖

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>4.0.1</version> 
    <scope>provided</scope> scope=provider表示该jar包在编译阶段使用,并不会打包到应用中</dependency>

1、定义一个类实现Servlet接口

public class HelloServlet implements Servlet { //所谓的Servlet就是直接或者间接的实现Servlet接口 
    @Override 
    public void init(ServletConfig config) throws ServletException { 
    }
    @Override 
    public ServletConfig getServletConfig() { 
        return null; 
    }
    @Override 
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { // Servlet组件用于对外提供服务的方法 
        //接收用户提交数据,不管是使用get还是post提交 
        String username=req.getParameter("username"); 
        if(username==null ||username.trim().length()<1) 
            username="Servlet"; 
        String message="Hello "+username+"!"; 
        //使用rep生成针对客户端请求的响应信息 
        PrintWriter pw=res.getWriter(); 
        pw.println("<h2>"+message+"</h2>");//生成html文档
        pw.flush(); 
        pw.close(); 
    }
    @Override 
    public String getServletInfo() { 
        return null; 
    }
    @Override 
    public void destroy() { 
    } 
}

2、在web应用的核心配置文件web.xml中将Servlet和一个URL地址建立对应关系,当用户请求对应的URL地址时则触发Servlet运行

Servlet类中没有main方法,所以程序的执行是由服务器按照规则进行调用的

由客户端对特定路径发起请求触发执行

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
        http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
    version="4.0"> 
<!-- 将Servlet类和一个名称建立对应关系 --> 
<servlet> 
    <servlet-name>helloServlet</servlet-name> 
    <servlet-class>com.yan.action.HelloServlet</servlet-class> 
</servlet> 

<!-- 将一个地址和名称建立对应关系 --> 
<servlet-mapping> 
    <servlet-name>helloServlet</servlet-name> 
    <url-pattern>/hello.do</url-pattern> 
</servlet-mapping> 
</web-app>

3、启动Tomcat服务器

4、在浏览器中输入请求URL地址 http://localhost:8080/demo1_war/hello.do

5、使用get提交数据 http://localhost:8080/demo1_war/hello.do?username=zhangsan

Servlet的特征

一般采用单实例多线程的方式对外提供服务,一个客户请求对应一个线程

如果在Servlet类中定义属性,则需要考虑线程安全问题

        1、Servlet用MIME过滤数据,由javax.servletjavax.servlet.http两个包组成Java Servlet API框架 。

        2、编写Servlet必须直接或间接实现作为Servlet的核心javax.servlet.Servlet接口,通常是实现javax.servlet.http.HttpServlet的子类,可以覆盖继承doGet()或者doPost()方法,两者分别对应于Http(s)中的Get请求和Post请求 。

Servlet的优点

1、高效。

在服务器上仅有一个Java虚拟机在运行,它的优势在于当多个来自客户端的请求进行访问时,Servlet为每个请求分配一个线程而不是进程

Servlet加载执行后会常驻服务器内存中,当再次受到客户端的请求时,服务器会产生新的线程而不是进程为客户端服务,这样就提高了响应速度。 -- Java是最差的内存性价比

2、方便。

Servlet提供了大量的实用工具例程,例如处理很难完成的HTML表单数据、读取和设置HTTP头、处理Cookie和跟踪会话等。

3、跨平台可移植性。

Servlet是用Java类编写的,它可以在不同的操作系统平台和不同的应用服务器平台下运行。

4、灵活性和可扩展性。

采用Servlet开发的Web应用程序,由于Java类的继承性、构造函数等特点,使得其应用灵活,可随意扩展。

5、共享数据。

Servlet之间通过共享数据可以很容易地实现数据库连接池。它能方便地实现管理用户请求,简化Session和获取前一页面信息的操作。而在CGI之间通信则很差。由于每个CGI程序的调用都开始一个新的进程,调用间通信通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通信也相当麻烦。

6、安全。

有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架。而Java定义有完整的安全机制,包括SSL/CA认证、安全政策等规范。

Servlet具有类型检查特征,并利用Java的垃圾收集和没有指针的设计,使得Servlet避免了内存管理等问题 。

Servlet缺陷

        不能所见即所得的实现页面的开发和开发测试不方便

        生成html文档需要通过一系列的输出完成,非常的繁琐低效

解决方案是JSP

Servlet生命周期

1、当前应用的所有Servlet接口实现类的实例对象,只能由服务器负责创建,开发人不能手动创

2、默认情况下以单实例多线程的方式对外提供服务

3、Servlet实例一旦创建则常驻内存,只有当服务器资源不足而导致当前Servlet对象被调度或者服务器关闭时才会被销毁

4、默认情况下,服务器接收到对于当前Servlet接口实现类的第一次请求时自动创建这个Servlet接口实现类的实例对象

        可以手动配置要求服务器在启动时自动创建某个Servlet接口实现类对象

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值