<legend id='ycdw9ig8'><style id='jiqwg4uw'><dir id='xweqijkj'><q id='nsf5mogr'></q></dir></style></legend>
  • <small id='m30tw7n5'></small><noframes id='71mc8opw'>

        <tbody id='e8kv4bo6'></tbody>

    1. <tfoot id='0zo5sfa2'></tfoot>
      <i id='j3cxyxae'><tr id='ts3bmswb'><dt id='zd1bt4o7'><q id='4ntxfw95'><span id='r5k196y3'><b id='f2q79ymj'><form id='27chunb9'><ins id='r8laaozk'></ins><ul id='q0imzwwp'></ul><sub id='g2lxff0u'></sub></form><legend id='q171vj87'></legend><bdo id='5ukiaxh5'><pre id='kn7b1b3m'><center id='37wxebjj'></center></pre></bdo></b><th id='jpdwavdd'></th></span></q></dt></tr></i><div id='djt5ka6h'><tfoot id='n4tlfn0t'></tfoot><dl id='mpp4xge4'><fieldset id='bqpm9azw'></fieldset></dl></div>
      网站建设公司当前位置 : 网站建设公司 > 知识普及

      Java WEB开发基础知识

      发布时间:2021-09-16 10:56   浏览次数:次   
      一、WEB应用程序
      B/S ( browser/server ,浏览器/服务器)架构
       
      基于HTTP传输协议(超文本传输协议,回忆HTML的名字:超文本标记语言)
       
      WEB程序必须要运行在web容器上,如Tomcat /Jboss/WebLogic等
       
      二、HTTP协议
      HTTP使用TCP作为它的支撑运输层协议,默认的端口是80(缺省端口)。
       
      超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。 
       
      HTTP 请求报文HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成,如下图所示:
       
       
       
      HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成下面对请求报文格式进行简单的分析:
       
      请求行:请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;
       
      GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
       
      POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
       
      请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
       
      User-Agent:产生请求的浏览器类型;
       
      Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ */* ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
       
      Accept-Language:客户端可接受的自然语言;
       
      Accept-Encoding:客户端可接受的编码压缩格式;
       
      Accept-Charset:可接受的应答的字符集;
       
      Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
       
      connection:连接方式(close 或 keepalive);
       
       Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
       
      空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;
       
      请求包体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求包体相关的最常使用的是包体类型 Content-Type 和包体长度 Content-Length。
       
      HTTP 响应报文HTTP 响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成,如下图所示:
       
       
       
      下面对响应报文格式进行简单的分析:
       
      状态行:状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开; 状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:
       
      1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
       
      2xx:表示服务器已成功接收到请求并进行处理;
       
      3xx:表示服务器要求客户端重定向;
       
      4xx:表示客户端的请求有非法内容; 
       
      5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
       
      状态码描述文本有如下取值:
       
      200 OK:表示客户端请求成功; 
       
      400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解; 
       
      401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;
       
      403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因; 
       
      404 Not Found:请求的资源不存在,例如,输入了错误的URL; 
       
      500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求; 
       
      503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;
       
      三、Servlet
      Servlet是javaWEB的核心,简单的说就是用Java编写的服务器端程序。用户进行一个动态请求(静态请求就是直接请求HTML )时,实际上是请求—个servlet
       
      WEB容器将Servlet加载到内存 通过init方法进行初始化
       
      Service()方法根据请求方法调用对应的处理方法doPost()或doGet(),还有一些其他的请求方法doPut() doOptions()...但这些方法不常用,并且从安全的角度都是建议屏蔽的。
       
      当Server不再需要Servlet时(一般当Server关闭时),Server调用 Servlet 的 destroy() 方法。
       
      四、JSP
      Java Server Pages是一种静态编码町机和动态编码Java混合的技术, 也有说法就是将java代码镶嵌在HTML上,在JSP之前,Servlet作为主体,功能比较强大,设计也很先进,但瑜出 HTML页面却完全是Java的out.print(), 一行一句的输出,对于页面编写和修改来说非常不方便,这才促使SUN公司推出JSP。JSP和ASP、PHP类似都是镶嵌型语言。另外补充一下,WEB容器后动的时候,会将_JSP编译成Servlet,也有说法JSP是Servlet的升级版。
       
      五、Tomcat
      Java WEB容器有很多,这里以Tomcat为例来说。前面说到,WEB程序必须运行在WEB容器上。Tomcat就是作为WEB容器来运行切Java WEB程序的。Tomcat是JAVA语言写的,需要JVM作为运行环境。
       
      Tomcat的目录结构
       
      bin………………………………可执行程序(脚本),启动停止调试Tomcat的一些bat.sh
       
      conf…………………………….配置文件 webx.ml server.xml 等
       
      lib……………………………....Tomcat运行需要的jar包
       
      logs…………………………….曰志文件
       
      temp…………………………….临时文件
       
      webapps………………………WEB 程序(编译后的项目文件)
       
      work…………………………….将jsp文件生成java文件在此目录进行
       
      补充说明一下,Tomcat将jsp编译成Java文件并不是实时进行的,所以有时候修改了页面,并没有及时生效,这时候我们只需要删除一下work目录下对应的文件即可。
       
      六、Java WEB项目结构
      一般来说,我们常说的Java项目基本上都是WEB项目(B/S架构),不是说Java不能做C/S程序,实际上Java的Swing就是画界面的,但是现在C#已经成为画界面最流行的语言,快速,简单,所以越来越少的人用Java来做C/S程序开发了。我们主要来说Java WEB项目,下面是最基本的项目结构。
       
      src…………………………….JAVA源码,java文件目录
       
      webContent/webRoot……………项目发布目录
       
      WEB-INF
       
      lib………………………………….项目需要的jar包
       
      web.xml…………………………WEB 程序的入口
       
      以上是Java WEB项目的核心结构,实际开发中,搭建项目会比这些复杂,特别是引用框架以后,配置文件的增加,会添加一些新的目录。
       
      七、开发框架
      前面提到客户端发起动态请求时,请求到Servlet进行处理,然后返回,整个请求处理的工作都是在Servlet中处理的,看起来比较简单,每当需要一个不同的请求就写一个Servlet,但实际开发的时候如果功能模块比较多,就需要写很多个Servlet,并且如果我们想修改一个请求的返回,也必须通过修改Java代码 (Servlet)的方式来实现。
       
      这样对功能的扩展和维护来说,就比较麻烦了,所以也就推动了很多集成幵发框架的流行,比如Webwork,Struts,SpringMVC,Jfinal等都是主流的Java WEB开发框架。
       
      使用框架有一个很笼统的优点概述,可以加快开发进程,在类似项目中重用代码将为开发者节省大量的时间和精力.框架为执行繁琐的代码任务提供预建模块。让使用者只关心核心业务的开发,框架帮你屏蔽原有技术跟业务开发无关的各类技术问题。但如果想要深入的了解一个框架,使用的更加熟练,还是需要了解底层的原理,找到其源头也就是Servlet。
       
      以SpringMVC为例简单描述一下工作原理
       
      SprfngMVC主要也是通过DispatcherServlet (Servlet调配器,在web_xml中配置)实现了Servlet这个接口,又叫前端控制器,来自前端的请求会先到达这里,它负责到后台去匹配合适的handler。DispatcherServlet的主要工作流程如下:
       
      1、 客户端发出http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
       
      2、 DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器Controller (Handler)。
       
      3、 DispatclierServlet 根据 HandlerMapping 找到对应的Handler,将处理权交给Handler ( Handler将具体的处理进行封装),再由具体的 HandlerAdapter对Handler进行具体的调用。
       
      5、Handler对数据处理完成以后将返回一个ModeAndView对象给DispatcherServlet.
       
      6、  Handler返回的ModelAndView只是一个逻辑视图并不是一个正式的视图,Di spatcherSevlet通过ViewResolver将邀辑视图转化为真正的视图view(这句话简单的就是返回一个要返回的页面的相对路径,通过试图解析器转换成具体那个页面)。
       
      7、  Dispatcher通过model解析出ModeAndView中的参数进行解析最终展现出完整的view并返回给客户端。
       
      八、用SpringMVC编写功能模块
      由于框架配置工作量比较大,也需要对各方面的技术有所了解,暂时不做描述。我们简单的说一下实际开发中,如何在现有的框架基础上完成一个功能模块,了解功能的基本流程,以登录为例:
       
      1、首先要有登录入口( JSP页面),在SpringMVC框架中我们不建议直接 访问JSP页面,所以我们登录页面的访问也是通过后台处理的;
       
      2、编写丨ogin.jsp页面及登录返回页面index.jsp ;
       
      3、编写LoginController,里面包含两个请求控制方法,一个preLogin(),一个doLogin() ,其中preLogin()负责处理请求登录页面的请求(返回到 login.jsp ), doLogin()处理登录请求返回到index.jsp。
       
      4. login.jsp中需要通过表单或者ajax进行登录请求。
       
      请求/preLogin业务逻辑处理返回到login.jsp à 输入用户名、密码…
       
      请求/doLogin业务逻辑处理,返回登录结果index.jsp。
       
      九、其他基础知识
      数据库操作,Jdbc/Hibernate/Mybatis
       
      JSP标签,EL表达式,Struts标签,C标签等
       
      基本的前端技术CSS/JS/jQuery/Ajax
       
       
      <tfoot id='vcqrua2c'></tfoot>

      <small id='pg245lmh'></small><noframes id='srcyyqm5'>

      1. <i id='dufixlql'><tr id='k09d7k99'><dt id='fkkvn9px'><q id='n7njr8n2'><span id='ozcceadr'><b id='bokzbut1'><form id='dd1m0ug8'><ins id='q209h20r'></ins><ul id='kaccjcgu'></ul><sub id='wmikj3dd'></sub></form><legend id='wr0say38'></legend><bdo id='xwx8345r'><pre id='th7chz56'><center id='7dbwjykt'></center></pre></bdo></b><th id='2t6dp2l0'></th></span></q></dt></tr></i><div id='su7uhe2a'><tfoot id='5b8z5t23'></tfoot><dl id='xf2zwsg7'><fieldset id='jcydfv4n'></fieldset></dl></div>
              <tbody id='2zgocy4h'></tbody>
            <legend id='sefjinck'><style id='lm3vaunp'><dir id='xreotoe3'><q id='g2l99zxx'></q></dir></style></legend>

          • 本文来源于网络,若有侵权请联系3449817223#qq.com,将在第一时间删除。

            上一篇:做好软件项目的配置管理 小程序开发上一篇
            下一篇公众号开发下一篇:JavaWeb开发介绍
            <legend id='tz454o3u'><style id='t01n5ql3'><dir id='jkqgu845'><q id='oba5c5c6'></q></dir></style></legend>
                <tbody id='xrfy3kvz'></tbody>
              <i id='lecyk7c6'><tr id='cl7e8gh7'><dt id='6sf5dc23'><q id='2wf59qhb'><span id='gpnrkw28'><b id='yvi1hr9e'><form id='hnv835jm'><ins id='2mswfm1j'></ins><ul id='3btokfy2'></ul><sub id='s2mlx1wv'></sub></form><legend id='e90ulnvl'></legend><bdo id='nlhlo7au'><pre id='5xi8pvmu'><center id='thczg2wc'></center></pre></bdo></b><th id='toj36ny8'></th></span></q></dt></tr></i><div id='sb4f9eno'><tfoot id='rxhal9h6'></tfoot><dl id='eipouh6l'><fieldset id='34zkasox'></fieldset></dl></div>

              <tfoot id='rduhau2o'></tfoot>
              • <small id='cb6eo614'></small><noframes id='kcecwl4e'>