Java Web 必备知识笔记

Posted xiaolongtuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Web 必备知识笔记相关的知识,希望对你有一定的参考价值。

Java Web是指中间层基于Java的Web应用,说起Web应用就不得不简单提一下两类应用的架构:C/S 与 B/S


C/S 就是 Client / Server 架构,大多数桌面应用都是基于这种架构,一般是特定语言实现,有着各种各样的交互界面,特点是用户体验较好,但升级维护需要客户端不断的更新,部署较麻烦,且不同平台需要开发不同的客户端,这类应用的代表就是QQ。

B/S 就是 Browser / Server架构,是以通用的浏览器作为应用接口,最常见的就是网页版的各种邮箱之类的,因为基于浏览器,与系统平台的交互隔了一层,虽然现在各种富客户端应用(比如Flex 各种JS框架的发展)有了长足的进步,但通常用户体验较桌面级要差,但是正因为基于浏览器,可以说不需要客户端,部署极其方便,而且升级维护只需要服务器端进行,而且易于跨平台,多平台只需要各自平台下的浏览器即可使用。


Web应用的跨平台与中国信息化步伐的前进,让各种IT支撑、信息管理系统如雨后春笋般出现在IT市场上,而Java作为一种跨平台的语言也在Web应用上大放光彩。


Java Web的开发学习需要多方面的知识,从Java基础、html到框架数据库等等都要有所涉猎,下面慢慢进行梳理。

Java Web简介

一、 什么是Web应用?

应用可以粗略分为两种:桌面应用、Web应用,分别对应C/S架构与B/S架构:

C/S就是Client/Server架构,大多数桌面应用都是基于这种架构,一般是基于特定语言来实现,有着各种各样的交互界面,特点是用户体验较好,还可以通过系统底层提供非常丰富的功能。但升级维护需要客户端不断的更新,部署较麻烦,且不同平台需要开发不同的客户端,这类应用的典型代表就是QQ。

B/S就是Browser/Server架构,是以通用的浏览器作为应用接口,典型的就是我们学校的选课系统这种,因为基于浏览器,与系统平台的交互隔了一层,虽然现在各种“富客户端应用”(比如Flash各种JS框架)有了长足的进步,但通常用户体验较桌面型要差(WebQQ明显没有QQ好用……),但是正因为基于浏览器,可以说不需要客户端,部署极其方便,而且升级维护只需要在服务器端进行,而且易于跨平台,多平台只需要各自平台下的浏览器即可使用。

 

二、 桌面or Web?

正如之前所说,两者优缺点明显:桌面体验好,但部署麻烦;Web体验差,但易于升级部署。

那么开发难度呢?

个人感觉Web应用远远易于桌面应用,关键一点就是:通常不需要学习特定系统的底层知识。

Web基于浏览器,根本不需要关心浏览器是怎么实现的、与特定系统底层如何交互,只要服务器端编好启动了,就可以用浏览器访问;而对应的桌面应用通常要有特定系统底层的知识,甚至还要学习网络编程等各方面的知识。

 

三、 Web基本知识

1、静态页面与动态页面

在互联网发展初期WWW出来了,但当时还都是各种静态页面,基本不具备任何交互功能,都只是简单的页面浏览,本质就是通过浏览器从远程服务器上获取Html文件到本地,再通过浏览器来进行展示。

但是随着交互需求的不断增加,人们不满足于简单的页面浏览,于是出现了有着复杂逻辑等功能的“动态页面”,动态页面可以用来实现一些复杂业务逻辑,比如一个论坛的注册时可以用javascript技术来对用户输入进行校验,检测用户名是否合法等;同时动态页面也可以通过后台代码与系统底层交互,比如浏览器端文件的上传下载等。

动态页面催生大量Web技术 ASP php JSP .NET等等,让服务器端能提供强大功能,典型的Web服务器都是 前台+后台+数据库的形式。

 

2、Web容器/服务器

这是个很重要的概念,从物理上来讲,远程的一台主机就是所谓的“Web服务器”;但从服务提供上来讲,真正的Web服务器是运行在远程主机上的一个程序,这个程序对外发布服务,一个Web服务器是可以装载多个Web应用,形象来说就是,你登陆的“教务系统”与“一卡通管理系统”虽然不是同一个Web应用,但是还可以部署在同一台Web服务器(主机)上,通过不同的网址来访问。而这个Web服务器就是一个“容器”,里面放了多个“Web应用”。

典型Web容器有IIS、apache、tomcat、JBoss、WebSphere、weblogic等等,他们有各自的特点,视不同场合使用。其中tomcat是个很轻量级的服务器,广大程序员入门最爱,就是这只Apache养的看起来很丑的猫:

 

 

四、 常见Web技术对比

我感觉这篇博客写的很好,转一下,原文地址:

“Perl、PHP、ASP、JSP技术比较”

http://www.williamlong.info/archives/460.html

说实话,我只做过JSP,感觉也确实有一定学习成本,但做这个屌项目总要选一种实现技术,如果大家有好的想法可以一起讨论讨论。(C/S or B/S?PHP可能更好用?等等)

 

五、 Java Web部署方案

我的想法是:

开发模式MVC

底层数据库使用mysql(轻量好用)

后台整体用Java的SSH框架即Spring+Struts2+Hibernate(三个J2EE很主流的开源框架,大致介绍见下面)

Web服务器Tomcat(也是由于轻量好用)

 

部署听起来高大上,简单说就是,让项目跑起来

先装好Java

再装个MySQL,刷刷SQL脚本(用来建一些必备的表等等)

改改项目配置文件(比如数据库密码啥的)

把项目包扔到tomcat里面,启动tomcat项目就能跑了。

 

六、 Java Web学习过程

1、Java基本语法、OOP、HTML JavaScript基本知识

包含Java怎么用,简单页面怎么画,简单的JS怎么写(比如怎么取到页面文本输入框的信息并验证等)

2、JSP+Servlet+JDBC

JSP可以理解为可以写Java代码的HTML页面,只不过改了文件后缀,可以使用JSP所谓的“内置对象”等。

Servlet是Web后台服务入口,页面发出请求进入后台的入口。

JDBC=JavaDatabase Connection,即通过java来连接以及访问数据库,实现数据的增删改查。

这三个组合就可以实现典型的Web应用流程:从前台到后台再到数据库(将数据存入数据库,或是从数据库读取数据在页面展示或用于业务逻辑)。

 

3、Spring+Struts2+Hibernate

Hibernate是个J2EE的开源框架,用来实现ORM(Object-RelationshipMapping对象关系映射),其实就是将现实中的实体类(比如用户)映射到数据库中的表,从而在后台直接获取实体对象。

典型场景:用户登录系统,我们可以根据其用户名密码直接用HQL(类似SQL,但基本不用重新再学…..只要改一点而已)语句,来获取满足用户名密码配对的“用户实体类”的一个List,如果List为空则没查到,即用户名/密码错误;如果不为空则有那个用户,可以简单将这个用户对象取出来使用。

 

Struts2是可以理解为对Servlet的封装,它可以拦截页面请求,在struts2配置文件中很方便的管理MVC中的Controller,形象来说就是这个请求由哪个类的哪个方法处理,并且根据处理结果来跳转到不同的页面。免去大量Servlet的配置以及后台大量重复的代码。

 

最后集成Spring框架,Spring其实是个很牛逼的框架,功能丰富一笔,但是学起来太复杂,什么IoC(控制反转)还涉及AOP(面向切面编程)等等各种东西。

这里我们只需要学最简单的东西:控制对象实例化。

编程时往往有些对象构造起来很麻烦,典型的就是控制数据库连接的对象,比如我们要存一条数据,我们先要构建“会话工厂”对象,再从会话工厂获取一个“连接”,再通过连接创建一个“事务”对象,并执行语句,才能将数据存入。但是如果使用Spring,稍微配置一下配置文件,它可以帮我们实例化一个数据库连接池,我们可以随意从里面获取“事务”对象实现我们的操作。

 

以上各个环节回来我可以整理一份详细的文档,配上简单示例,帮助大家快速入门。

 

七、 代码管理

整体挂gitlab,通过Ant来自动化编译代码部分。

包含:  文档:软件工程文档(作业需求中提到的那些,可以先分角色分别写对应部分,最后再合成一篇)、演示ppt文档、开发环境搭建文档、工具使用文档、用户手册(看情况)

           源码:项目源码

           第三方工具:比如第三方包等等

 

典型开发流程:

Checkout项目->根据文档搭建开发环境->编码开发->功能验证->代码提交->代码合并->完成

PS:记得不时更新代码,合并时注意处理冲突。

 


以上是关于Java Web 必备知识笔记的主要内容,如果未能解决你的问题,请参考以下文章

Java Web -- Servlet 必备知识

Java工程师必备知识!java思维导图笔记哪里有卖

Java工程师必备知识!java思维导图笔记哪里有卖

Java面试题必备知识之ThreadLocal

续java面试Spring必备知识点,怼死面试官,从我做起

《Java Web开发实战》——Java工程师必备干货教材