javaweb必备知识点

互联网 19-7-16
一、WEB应用程序

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

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

二、HTTP协议

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

超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。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

以上就是javaweb必备知识点的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: JavaWeb
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java的三大特性封装、继承、多态

相关资讯