对比PHP学习Java Web

前言

经历了差不多一年的跑宣讲会->笔试->面试,终于在4月份拿到了一个对自己来说还不错的offer,主要是工作城市是自己最想去的广州,之后向hr了解到offer的具体岗位为java后端开发工程师,由于我之前走的是php方向,为了之后去公司能够写得出基本的业务代码,Java Web的代码编写学习(基于业务代码的学习)之旅便开始了。

基础部分

语法

在语法方面,主要的区别在于java是强类型语言,而php是弱类型语言,这个不需要花费什么时间去学习,感觉比较重要的一点就是它们运算过程中的类型转换问题。举例如下:

1
2
3
$a = '2ab5c'; 
$b = '1ef';
$res = $a + $b;

对php而言,经过上述运算,$res的结果为3,因为在php加号左右的变量都会默认被强制转换数字类型,$a会转换成2,同理,$b会转换成1,所以$res的值为2 + 1 = 3
对java而言,加号运算符是字符串连接符,因此$res的结果为2ab5c1ef

变量存储容器

在变量存储容器方面,php基本都是用Array来存储的,而java只有List、Map、Set等结构,每种结构又有不同的具体用法,这三种结构在java中都是非常常见的,需要重点学习与了解。

Java Web入门

JSP

JSP其实就是在html页面中嵌入java代码,这点与php是类似的,在进行php Web开发时如果不使用框架的话,也是把php代码直接嵌入到html页面中,理解起来非常容易。
JSP中最重要的应该是九大内置对象了,其实JSP九大内置对象对应了php的超全局变量,它们在Web开发中使用的非常频繁,而且使用它们不需要用户去声明、或者去new,直接在代码中用即可。举例如下:

1
2
3
4
5
6
7
8
9
10
11
// 获得url中id值

// java使用内置对象request
id = request.getParameter("id");
// php使用超全局变量$_GET / $_REQUEST
$id = $_GET['id'] / $_REQUEST['id'];
// 获取key为name的cookie值
// java使用内置对象cookie
name = cookie.getName("name");
// php使用超全局变量$_COOKIE / $_REQUEST
$name = $_GET['name'] / $_REQUEST['name'];

从上述例子可以看出,在Web开发不使用框架时,java和php在获取用户输入参数、操作cookie、session等所编写的代码逻辑基本类似。

Servlet

Servlet是用来处理用户的请求的,每个JSP页面在进行跳转(如超链接、表单提交)时都需要去请求某一个Servlet,由Servlet来处理用户的请求,处理完用户请求之后再指定输出(重定向)某一个JSP页面,这点跟php是不一样的。在php web开发中,用户在进行页面跳转(如超链接、表单提交)操作时也是由php文件进行处理的。

在Servlet配置文件中,可以自己映射向用户显示的url与后端实际进行处理的路径的对应关系,java中有许多可以配置的项,这点与php是不同的,php一般就一个数据库的配置文件,再加上一个存储常量的配置文件,存储结构多为数组形式,而java是以xml文件格式进行配置存储的,像监听器、过滤器都需要在相应的xml文件中进行配置,这些一开始对于phper来说是不容易的,因为配置文件很容易写错,这样程序就跑步起来了。

JDBC

在进行java操作数据库时,项目需要导入一个jdbc驱动包,但其代码逻辑与php操作数据库时类似的,都是先编写好sql语句,然后执行sql语句得到结果集,或者是先预编译sql语句,再执行得到结果集。

SSM

就Web开发所使用的框架而言,php与java所使用的框架区别是非常大的。php框架基本都是基于MVC模式的,html文件往View文件夹下放,数据库操作代码往Model里面放,控制器代码往Controller文件夹下面放。而java在使用框架时,首先需要导入相对应的框架包,一般是通过Maven / Gradle自动构建的,它们有点类似php中的Composer,都可以用来管理一些包/类之间的依赖关系的。

另一个很大的不同就是java中的注解了,java中每个类、每个方法都有可能需要写注解,注解可以理解成对代码的注释,不同写法的注解都是对应了不同的意思的。
最后说一下Mybatis,Mybatis是一个用来处理sql语句的框架,Mybatis学习起来不难,花点时间看看官方文档就差不多可以仿着写代码了,感觉一开始最难的还是整个项目的搭建(如 SSM框架集成、配置文件)。


-------------本文结束感谢您的阅读-------------