给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)

J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号。但是其实 J2EE 里面并不仅仅是web,可以看到很多其中的规范都是通用的,目的是为了高效开发出健壮的服务企业业务模式的应用系统。J2EE中也是可以没有web界面的应用,而现在面向大众用户开发的网站往往也会使用到很多的J2EE的技术,所以J2EE和web开发的概念都是融合在了一起了。

我本人在JAVA开发刚入行的时候,也是做了不少web相关的项目,之后渐渐地web使用比较少了,现在web开发的技术日新月异,不过一些基础知识还是类似,所以也把这部分内容稍作整理,以期望可以给大家一些经验。

这次主要涉及到的两大块内容: Web相关的, J2EE相关的技术

Web部分:

脱离开各种语言,纯粹和 web相关的就是这些: HTML,CSS,JavaScript。哪怕你不用Java开发,用C#、php或者python,这些内容都是通用,这里主要偏重一些基础知识。

HTTP协议,HTTPS协议

我觉得做Web开发,HTTP是基础中的基础。在一开始的时候,开发者可能对于这个内容了解不是非常深入,只是有个初步的概念,这个没有问题,可以先从了解,简单使用开始。 不过一旦有了一些web开发经验之后,你就需要把这块内容深入理解吃透。只知道简单概念,没有深入了解,可能并不会影响你开始上手做web开发,但是一旦涉及到一些性能调优、系统架构等工作,就需要你对HTTP有一个深入的了解,才能把工作做好。

对于HTTP请求, 我主要会关注以下内容:

HTTP请求的模式: request/response

HTTP请求的方法:GET, POST, PUT,DELETE 等等

协议的具体格式: head + body

协议的各类返回码:1XX,2XX,3XX,4XX,5XX

Header中一些主要属性的含义和使用场景

HTTPS协议

Cookie的基本原理和使用场景

HTML, CSS

这是WEB开发的一个基础,如果公司有专门的前端开发人员,可能你就不需要做这块相关的内容。可能只需要准备一些服务,可以提供一些数据就行。不过要是公司没有专门的前端人员,那就需要你自己写简单的页面和简单的布局了。这种情况下,还是对HTML和CSS必须有个简单的了解才行。

HTML简单了解的话需要知道页面的结构,具体各个表单,标签的使用方法,CSS需要知道一些基本的选择器的编写和使用。但这也只能满足一些简单页面的要求。如果有更加复杂页面的开发需求,那对CSS+DIV的使用需要有更加深入的了解了,具体内容因为自己对这方面涉及不多,也不多说了,大家可以再找其他的参考资料。

JavaScript:

前端开发的语言,唯一的语言,就是JS。并且从中衍生出一个很优秀的框架jquery。现在前端基本上只要有一点复杂度的,都会使用这两种技术。并且以jquery为基础,还有一些其他前台框架,提供了各种动态效果,还有表格,表单等一些常用的处理。近两年,Angularjs框架又开始火热起来,这个框架在前端实现了MVC的架构,给前端的开发带来了革命性的影响(但是不意味着所有的前端开发都应该要用这个)。这些都是很值得好好看一下。即便不是专攻前端开发的,但是对于这几个技术点,能够先了解一下基本情况,基本的原理,对于web开发来说,还是大有好处的。

因为自己对这个涉猎也不深入,所以也就不更多罗列了,以免误人子弟了。

Webservice

在现在的企业应用开发中,Webservice已经是个必备的工具了。在各个企业中,经过一段时间积累,会有很多不同种类的应用,这些应用可能都会使用不同的语言开发,并且需要相互之间的通讯。通讯的首选就是Webservice。前后台的交互,服务之间的交互,或者不同语言之间的交互,都可以使用Webservice这个技术。

Webservice的实现方式多种多样,两者共同点是大家都是以HTTP协议为基础的,都可以跨域,跨语言进行访问。

用的比较多的,一个是SOAP协议的方式。这是比较传统的webservice 的实现,这个协议比较重量级,发布者会将webservice以wsdl形式发布,调用者通过wsdl可以直接生成实体类等。对于调用者来说,“调用”这个步骤会更容易处理一些。不过SOAP形式也存在着消息量大,传输效率低等缺陷。SOAP协议本身的可选项比较多,比较复杂,各个属性设置略有差异会导致服务通讯的失败,需要在调试中需要花费更多的时间。

现在更加流行的是使用RESTFUL的Webservice。这种技术是简化了URL,或者说对URL做了一定格式的限定,同时配合上HTTP的各种method,包括有GET,POST,DELTE,PUT 等,来实现整体service的各种功能。一般传输的内容都是json格式的字符串。Restful的Webservice的优点在于这是一种更加轻量级的使用方式,传输效率更高,接口约定更加清晰,双方调试也会更加便利一些。缺点在于,json格式太灵活,所以双方都需要自行处理json中的各个参数。对于接口实体类的处理需要更多的逻辑和代码。

J2EE部分

JDBC(可以在J2SE中使用)

JDBC用于java和数据库交互。它是Java面向接口编程的一个典型实例:开发者使用JDBC的API进行开发,但是底层可以针对不同的数据库使用不同的JDBC驱动(由各个数据库供应商提供)。JDBC被归为了J2EE的规范中,但是在一般的java程序中也可以使用,而且也是几乎都会被直接或者间接使用(除非不用数据库)。这从侧面也说明了,其实J2EE企业开发和web开发并不是同一个概念,而是相互融合的。

JDBC是Java中最原始,最纯粹,效率最高的访问数据库的方式,我们熟知的Hibernate、 Mybatis等ORM框架都是在JDBC基础上做的封装。了解JDBC对于以后和数据库更好打交道会有着很大的用处。哪怕是一个java开发新手,你需要去学习Hibernate、Mybatis等框架,你也需要先学习JDBC作为这些的基础。

对于JDBC的具体怎么实现,这个真不需要了解到那么深入。我推荐大家学习JDBC至少需要掌握以下内容:

JDBC的原理: JDBC为接口,可以有不同的驱动driver类

JDBC中的一些基本概念: connection, statement, resultset 等

JDBC使用的基本流程

注册driver

创建 connection

创建 statement

执行获取 Resultset

处理返回结果 resultst

Statement 和 PrepareStatement 的区别, 掌握PrepareStatement的主要用法(推荐使用)

线程池的概念和基本用法

JMS(可以在J2SE中使用)

JMS(Java Message Service)是我们俗称的MQ服务,有很多可用的产品,如 ActiveMQ, ZeroMQ, RabbitMQ等等。基本原理都是一样:在有了MQ服务器之后,向某个Topic,或者Queue中发送消息,或者从中接收消息。

这块知识,需要了解一些基本的MQ的使用方法,包括MQ服务器的连接,收发MQ消息等。需要注意的是,这里收发消息是一种异步的方式,MQ是一种很基本的把同步请求异步化的手段。

Servlet

这个是Java Web开发的核心概念,我们熟悉的web server其实都是Servlet的容器。那Servlet是个什么呢?我的理解,servlet就是一个Java类,用来处理HTTP请求,并且返回HTTP响应的程序。这个程序运行在servlet容器中,或者说嵌入在servelt容器中运行。容器中可以定义多个servlet匹配不同的url,容器启动后接收到了HTTP请求,容器会根据定义好的URL的规则分配给相应的servlet程序进行处理。

Java中的web开发都是围绕servlet这个概念来进行的,web.xml定义了URL的处理分配规则,我们使用的Struts,SpringMVC框架也有专门的Servlet类来进行请求的转发和处理。所以学习Java web开发一定要理解好servlet这个概念。

JSP

以前的Java web开发,基本都是以JSP为主,需要在JSP中编写html代码和Java代码。 近来一些更先进的展示层框架,在逐步替代JSP,比如 Freemarker、Velocity等。更有一些前后端分离的框架直接就是使用HTML中的JavaScript以Ajax方式和后台交互,这样后台不再需要提供展示层,而是给前台展示层提供数据。

不过JSP作为最原始的Java web开发工具,在制作简单页面的时候,还是非常容易上手的,建议还是可以学习一下JSP基本的使用方法,在制作简单页面时使用,一旦有更加复杂的页面需要开发时,再考虑使用其他展示层的框架进行替代。

Webserver 的使用

在Java web开发中另一个绕不开的内容是Webserver的使用,比如最流行的tomcat, 企业级环境中经常使用的 weblogic、webspare、JBoss等等,真的有很多。

作为一个web应该开发人员,应该需要熟练掌握一些web server 的知识。这对于你在提高应用性能,本地调试web应用方面都很有好处。

你可以更多熟悉一下tomcat,因为一般开发者本地都会使用它作为web容器,哪怕生产正式环境中是其他的。可以了解一下tomcat中体系结构如何,结构目录和配置文件的详细解读,如何在IDE中结合tomcat进行开发调试等等。再深入些可以查看一下tomcat的源代码,了解一下一般webserver是如何实现的,如何控制线程数,这对你在其他方面的设计开发也很有借鉴作用。除了tomcat之外,你还可以就你们生产环境中使用的web server再做个具体的了解,以便更好地开发适合的web应用。

以上这些只是我自己对于企业级开发和Web开发的一些简单心得,当然,J2EE中还有更多的规范,web 开发也有更多相关的内容, 我因为也有一段时间没有专注在web相关的开发上面, 这些知识点罗列也一定有不少疏漏, 所以只是简单分享一下自己这方面的经验了,希望给刚上手的开发者一些经验吧。

这篇给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb开发入门第一篇必备知识讲解

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 1).静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 2).动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同. 静态web资源开发技术:Html 常用动态web资源开发技术:JSP/Servlet.ASP.PHP等 在Java中

  • 一个牛人给Java初学者的建议(必看篇)

    给初学者之一:浅谈Java及应用学java 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版 面总体感觉初学者多,高手少,精通的更少由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是java这门语 言更适合商业应用所以高校里大部分博士老师们对此语言的了解甚至不比本科生多在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么即 便知道了java很有用,

  • Java Web十条开发实用小知识

     1.${ctx}与 ${pageContext.request.contextPath}这两个为一个意思,都是获取当前根目录. 不同的是${ctx}为${pageContext.request.contextPath}的简写版,经查证之后果真如此,发现在项目的一个文件内有这样一段话 的配置 复制代码 代码如下: <c:setvar="ctx"value="${pageContext.request.contextPath}"/> 注意在使用${ctx的

  • Java知识点归纳总结

    1. 基本数据类型 整形: byte      1 个字节 short     2 个字节 int          4个字节 long       8个字节 字符: char     2个字节 浮点数: float       4个字节 double   8个字节 布尔: boolean   1个字节 2.java 7  新增二进制整数 以0b或者0B开头 3.java中字符时16位的Unicode编码方式,格式是'\uXXXX',其中xxxx代表一个十六进制整数 4.java中规定了正无穷大

  • Java中的小知识点总结

    一.声明局部变量是的一些特性和规则(1)声明的局部变量是不会被默认初始化的,成员变量则是会被默认初始化的.例如: 复制代码 代码如下: class Demo {         public static void main(String[] args) {           String s;           System.out.println(s);     }} 上面的这段示例代码中,直接输出s是错误的,连编译都不同通过,因为在main方法中声明s,这时s是局部变量,不会被默认初始

  • 给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)

    J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面并不仅仅是web,可以看到很多其中的规范都是通用的,目的是为了高效开发出健壮的服务企业业务模式的应用系统.J2EE中也是可以没有web界面的应用,而现在面向大众用户开发的网站往往也会使用到很多的J2EE的技术,所以J2EE和web开发的概念都是融合在了一起了. 我本人在JAVA开发刚入行的时候,也是

  • Java System类详解_动力节点Java学院整理

    System类是jdk提供的一个工具类,有final修饰,不可继承,由名字可以看出来,其中的操作多数和系统相关.其功能主要如下: • 标准输入输出,如out.in.err • 外部定义的属性和环境变量的访问,如getenv()/setenv()和getProperties()/setProperties() • 加载文件和类库的方法,如load()和loadLibrary(). • 一个快速拷贝数组的方法:arraycopy() • 一些jvm操作,如gc().runFinalization()

  • Java异常继承结构解析_动力节点Java学院整理

    Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是"意外.例外"的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界.内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图.错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的.假若程序在运行期间出现了错误

  • Java设计模式之备忘录模式_动力节点Java学院

    定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态.比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回.这时我们便可以使用备忘录模式来实现. 备忘录模式的结构 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和

  • 深入理解Java中的final关键字_动力节点Java学院整理

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

  • classloader类加载器_基于java类的加载方式详解

    基础概念 Classloader 类加载器,用来加载 Java 类到 Java 虚拟机中.与普通程序不同的是.Java程序(class文件)并不是本地的可执行程序.当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader. JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现

  • Java知识点归纳 —给Java新手的一些建议(新手必看)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的.和Java中各个框架相关的内容. 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容. 1. JVM相

  • Java Date类常用示例_动力节点Java学院整理

    Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1.使用Date类代表当前系统时间 Date d = new Date(); System.out.println(d); 使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下: Sun Ma

  • Java设计模式之迭代器模式_动力节点Java学院整理

    定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图: 如果要问Java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str = (String)it.next(); System.out

  • java中进程与线程_三种实现方式总结(必看篇)

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间. 2:

随机推荐