搜索
首页Javajava教程javaweb必备知识点

javaweb必备知识点

Jul 16, 2019 pm 04:56 PM
javajavaweb

一、WEB应用程序

B/S ( browser/server ,浏览器/服务器)架构

基于HTTP传输协议(超文本传输协议,回忆HTML的名字:超文本标记语言)

WEB程序必须要运行在web容器上,如Tomcat /Jboss/WebLogic等

二、HTTP协议

HTTP使用TCP作为它的支撑运输层协议,默认的端口是80(缺省端口)。

超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。 、

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 协议版本字段、状态码和状态码的描述文本 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

以上是javaweb必备知识点的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?Mar 17, 2025 pm 05:46 PM

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?Mar 17, 2025 pm 05:43 PM

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

如何将Java的RMI(远程方法调用)用于分布式计算?如何将Java的RMI(远程方法调用)用于分布式计算?Mar 11, 2025 pm 05:53 PM

本文解释了用于构建分布式应用程序的Java的远程方法调用(RMI)。 它详细介绍了接口定义,实现,注册表设置和客户端调用,以解决网络问题和安全性等挑战。

如何使用Java的插座API进行网络通信?如何使用Java的插座API进行网络通信?Mar 11, 2025 pm 05:53 PM

本文详细介绍了用于网络通信的Java的套接字API,涵盖了客户服务器设置,数据处理和关键考虑因素,例如资源管理,错误处理和安全性。 它还探索了性能优化技术,我

如何在Java中创建自定义网络协议?如何在Java中创建自定义网络协议?Mar 11, 2025 pm 05:52 PM

本文详细介绍了创建自定义Java网络协议。 它涵盖协议定义(数据结构,框架,错误处理,版本控制),实现(使用插座),数据序列化和最佳实践(效率,安全性,维护

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能