zoukankan      html  css  js  c++  java
  • Web 开发

    1.Web开发, ( 通信 )

    统一资源定位符: ( URL ) , 例如 : http://www.acm.org ( http 表明使用超文本传输协议 ( HTTP ). 端口 : 例如 8080 . Broswer 与 Web server ( Tomact ) 使用 HTTP 协议 .

    2.HTTP Get , Post 方法

             在B/S应用程序中,前台与后台的数据交互,都是通过Html中Form表单完成的.

    Get :

    URL 改变,在URL 里显示 HTML Form 参数的 name/value 值。

    只适合有少量参数的 HTML Form,因为 URL 长度有字符限制,不能无限长。

    涉及安全性的信息,比如用户密码,不能用 get,因为会在 URL 上显示,不安全。

    这里的URL改变是指,地址栏中的请求发生改变,例如:

    http://www.baidu.com/s?wd=hello&rsv_bp=0&rsv_spt=3&inputT=840

    当在baidu中输入hello,进行查找时,提交后,URL变成如上形式.

    Post :

    URL 不改变,不在 URL 里显示 HTML Form 的数据。

    Form 提交的信息没有长度限制。

    涉及安全性的信息,如用户密码,应采用 post 方式

    在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:
    ( 1 ).get方法通过URL请求来传递用户的输入。post方法通过另外的形式. get是从服务器上获取数据,post是向服务器传送数据
    ( 2 ).get方式的提交你需要用Request.QueryString来取得变量的值,而post方式提交时,你必须通过Request.Form来访问提交的内容。Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“& amp;”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。Get是Form的默认方法.

    ( 3 ). 一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。

    ( 个人 ) Get方法的速度应该快于 Post方法 .

    3.Browser 与 Web server 连接

             Browser <---> Web Server <--> Database Server .

    注意 : 在客户端与Web服务器之间不存在持续的连接, 当WEB服务器接收到一个请求,一个连接就会暂时被创建,用于向WEB服务器发送请求和接收响应。然后该连接关闭了,而下一个请求生成一个新的连接。与此相反,当某个用户登陆到计算机或者使用ODBC / JDBC 连接数据库时,一个会话会被创建。会话信息保留在服务器和客户端,直到会话结束。HTTP是无连接的一个重要原因在于,如果WEB中大量的节点都打开了连接,就会超过限制,而拒绝后续用户的服务请求。而使用无连接服务,当满足了请求时连接就会马上断开,为其他请求留出可用连接。但是,大多数基于WEB的信息服务需要会话信息,以允许有意义的用户交互。例如:需要验证用户身份,权限等等。每次会话只需要进行一次验证,会话中进一步的交互将不必重新验证。尽管连接会关闭,但为了达到这样的会话要求,需要在客户端存储额外的信息,而且这些信息在一次会话的每个请求中都必须返回到服务器端,使服务器能辨别一个请求是否是一个用户会话的一部分。关于会话的额外信息同样必须在服务器端维护。这种额外信息通常以cookie的形式保存在客户端;简单来说,一个cookie是一小段包含标识信息的文本,并关联一个名字。( 服务器段的 servlet 提供了一个确认 getSession 的方法 , 可以确定 session 是否继续存在, 例如getSession(false), getSession()/getSession(true) , 其中 前者(false)是用来判断 Session 是否还在连接 , 如果断开, 则返回 null , 而后者 ( true 或者没有参数 , 一般用来登陆 , 因为当判断到 session 为 null 时会自动创建一个session , Jsp 端 ( 客户端 ) session 隐含其中 , 可以直接使用 , 判断 session 是否存在 (cookie) ) .

    4.Servlet

    Servlet 的任务就是处理请求,包括访问数据库以获取所需信息和动态生成HTML页面返回给Broswer . ( doGet() , doPost() ),每次请求都会生成一个新的线程,调用在线程中执行,这样多个请求就可以并行处理。( 每次请求 new servlet ) . 任何从WEB网页上的form菜单和输入域中得到的值,和cookie 一起,由一个为该请求创建的HttpServletRequest 类对象传入,然后该请求的应答由一个HttpServletReponse类的对象返回。( request.getParameter() ),destory() 方法停止一个 servlet .

    5.大型WEB

    建立WEB应用程序时,大量编程精力都花在用户界面而不是数据库相关任务上。所以构建WEB界面时,应多利用函数,不要单纯依赖HTML。重复调用函数( 例如:菜单由数据库直接生成 )

    连接池技术

    6.HongKong diagram Sample

    Jsp = HTML + Servlet ( Servlet 直接与数据库连接 ) 早期模型,这样做,由于Servlet直接与数据库进行连接,有可能造成数据库负载过重。

    Dao调用 Invokeselecter 方法

    如果Jsp页面中有多个Button ,可以首先使用Javascript设置参数(点击哪个Button ,然后再调用 HTTP中的get,post方法,传参给 Servlet 的doGet().doPoset()方法。

    数据传送过程:首先Servelt得到form( 用户输入的参数,例如计划日期,用来查询生产计划 ),调用dao,执行SQL语句,得到结果,保存为HASH LIST 。显示数据:首先返回JSP页面中的GRID的列的名称( 此处保存为 String 类型,需要转换成GRID类型,利用 OperateParse(gRid,string_grid),将此gRid与前面的HASH List Mapping,之后利用operateGridWrite(gRid) 方法,将信息输出。

    ( Servelt 只是用到了 doGet() , doPost() 方法,dao 只是用到了 invokeselecter 方法 )

    image

    1、Web容器

    所有的程序运行都需要有一个必要的运行环境。这个环境可以是软件,也可以是硬件,或者是软件和硬件的结合。比如说Windows操作系统需要运行在硬件基础上;Office软件需要运行在操作系统上。并且程序与运行环境之间会有一定的数据交换,比如操作系统会将运行指令传递给硬件,硬件也会将指令运行结果传递给操作系统。Java Web程序也需要一个运行环境才能够执行。这种运行Java Web程序的环境被称为Web容器,Java Web程序与Web容器之间存在数据交互。目前主要存在两种类型的Java Web容器:一种是独立的Java Web容器,在这种容器里面只能运行Web程序,这种容器一般也叫做Web服务器,如Tomcat等;另一种是与其他Java EE容器混合在一起的Web容器,Web容器负责运行Web程序,其他容器负责运行EJB等程序,如WebLogic等。

    当用户通过浏览器等Web客户端软件向服务器发出一个请求之后,首先接收到这个请求的是Web容器,Web容器会将请求信息封装到一个HttpServletRequest类型的Java对象中,并将对象传递给Java Web程序。对于每个请求,Web容器还会创建一个HttpServletResponse类型对象,该对象的作用是用来保存需要返回到浏览器等客户端的内容。Java Web程序可以从HttpServletRequest提取用户发出的请求信息,进行适当的处理之后,将处理结果放置到HttpServletResponse中,然或由Web容器解析HttpServletResponse对象内容,并将解析结果以浏览器能够识别的HTML等格式返回给浏览器等客户端。在这个过程中,HttpServletRequest和HttpServletResponse就如同两条渡船,负责在Web容器和Java Web程序之间传递信息。需要注意的是,这两个对象仅存在于Web容器和Java Web程序当中,与浏览器没有关系。下图是这个过程的示意图:

    image

  • 相关阅读:
    Java NIO使用及原理分析(三) 分类: Java 2014-03-12 17:56 447人阅读 评论(0) 收藏
    Java NIO使用及原理分析(二) 分类: Java 2014-03-12 17:55 465人阅读 评论(0) 收藏
    Java NIO使用及原理分析 ( 一 ) 分类: Java 2014-03-12 17:52 637人阅读 评论(0) 收藏
    网络编程中的Socket详解---Socket重要参数详解 分类: Android 2014-03-11 16:25 2066人阅读 评论(0) 收藏
    网络编程中的Socket详解---Socket编程实践详解 分类: Java 2014-03-11 16:19 549人阅读 评论(0) 收藏
    网络编程中的Socket详解---Delayed Ack(Ack确认延迟) && Nagle Algorithm(纳格算法) 分类: Java 2014-03-11 15:46 2316人阅读 评论(0) 收藏
    关于ThreadLocal的一道面试题(酷我公司) 分类: Android 2014-03-04 11:33 2124人阅读 评论(5) 收藏
    Java中的并发库学习总结 分类: Java 2014-03-03 15:12 3115人阅读 评论(3) 收藏
    深入解析Java中volatile关键字的作用 分类: Java 2014-03-03 13:47 1441人阅读 评论(3) 收藏
    Android源码的git下载地址 分类: Android 2014-02-27 15:26 1111人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/moveofgod/p/2691061.html
Copyright © 2011-2022 走看看