编程语言 : Java的动态Web解决方案泛谈

时间:2017-11-24 15:15

我们的挑战_编程语言 : Java的动态Web解决方案泛谈

文章概述

最近发现很久前一股脑地学习框架,发觉越发迷糊.知道了框架只是暂时的,重点是基础的技术.该文大篇幅回顾Servlet技术栈和简要的MVC框架.

至于为什么学J2EE,额,大家都用框架,可框架也是使用了标准的J2EE规范进行开发,比如SpringMVC的前端控制器是Servlet,Struts的Filter,Spring Boot项目内嵌了Tomcat 应用容器....

该文是自我学习总结,比较适合接触Java Web编程不久的朋友阅读,如果读的没意思就请直接弃之 :)

MVC framework

编程语言 : Java的动态Web解决方案泛谈

我知道,我明白你知道MVC框架,可是我还是叨唠一下.

Model,Java普通类对象,用来作为信息存储对象的模块.

View,服务器响应客户端请求后生成页面响应对象的模块.

Controller,处理信息类型转换以及执行业务的模块.

简单地说,就是将我们上传的信息与类型数据进行匹配转换,之后都是琐碎的加些什么数据拦截器,过滤器之类的.

编程语言 : Java的动态Web解决方案泛谈

因为我们大多数情况下通过一张表单打到服务器,这时表单的数据都默认是String类型的数据,这时就不适应于类型数据工程语言(C++,PHP,Java,C#).

所以,必须转换类型.

那么,有什么技术可以让我们获取表单数据?以及获取后我们该处理?

HTTP协议说了什么

HTTP协议就是一种让我们获取和返回数据的技术

关于这方面的知识建议你去看看《图解HTTP》,一本薄薄的书.这里只是作为引子做个简单的说明.

编程语言 : Java的动态Web解决方案泛谈

HTTP建立于TCP协议之上,但其实可以根据分层而选择忽略底层原理.

HTTP规定了应用层的请求响应规则,客户端<-->服务端的信息必须满足HTTP格式.

客户端浏览器请求,

服务端响应请求,

把HTML,CSS,Javascript等信息存储于HTTP对象载体,

响应返回至客户端,

客户端进行页面渲染显示.

Java动态web解决方案

Sun公司成为制定Java语言的先行者,使Java语言适用于多种领域开发,动态Web开发领域同样也给出了优秀的解决方案.

动态web技术--服务器根据客户端不同的请求数据来生成不同的响应数据并作返回.

编程语言 : Java的动态Web解决方案泛谈

Servlet体系

关于Servlet你需要弄清楚下面几个概念,你将在阅读完该文后掌握它们.

编程语言 : Java的动态Web解决方案泛谈

上面这张图是Java Web体系的原型技术,也就是说其他技术基本都构建在这些技术之上,它们是根基.

HTML,CSS,JavaScript三者作为页面渲染交互技术而存在;

JDBC作为连接数据库的连接技术,这样可以进行数据库信息的获取和存储;

Tomcat作为Servlet应用容器而存在,等待用户请求;

Servlet作为动态信息的Java处理类,能够将对应的Java数据结构转化为String拼接到HTML之中去;

JavaBean就是简单的Java类,它有固定的格式,很容易就能写出一个JavaBean;

Session存在是因为HTTP是无状态协议,需要Session来作为状态标示;

Request/Response是Servlet容器抽象出来的请求/响应对象,以它来获取数据和将数据写入HTTP响应;

JDBC

Java DataBase Connectivity是Java技术的核心之一,现在基本没有不连接数据库的web应用.

JDBC是一套Java定义的数据库连接接口,实现部分由各大数据库厂商进行开发.(你想要更大的市场,你就必须支持我)

软件开发其中一项精髓是抽象,暂时搁置实现细节苏州头条新闻网,拿来用就行了,除非你要去做该类产品的实现.

编程语言 : Java的动态Web解决方案泛谈

JDBC编码步骤

1.Java语言有接口,但是没有提供实现,所以我们必须先加载实现包.

2.通过连接管理器注册驱动

3.获取数据库连接

4.得到代表SQL语句的对象

5.执行语句和获取结果

6.释放占用的资源

编程语言 : Java的动态Web解决方案泛谈

JDBC关键接口

DriverManager    

①注册驱动

DriverManager.registerDriver(new com.mysql.jdbc.Driver());//依赖具体的驱动类,会导致驱动被注册两次

Class.forName("com.mysql.jdbc.Driver");//替代方案,在类被引入时自动注册.

②获取数据库连接

DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");

Connection

①获取数据库操作语句对象

conn.createStatement();

conn.prepareCall(sql);

conn.prepareStatement(sql,columnNames);

②事务处理

conn.commit();

conn.rollback();

Statement

①代表SQL语句

Statement s = conn.createStatement();

②执行语句,接收返回结温岭头条新闻网果

ResultSet rs = s.executeQuery(sql);

s.executeUpdate(sql);

ResultSet

①查询SQL所返回的结果集对象,用来遍历操作

rs.next();

编程语言 : Java的动态Web解决方案泛谈

②遍历后是一条记录,可以获取记录上的数据

编程语言 : Java的动态Web解决方案泛谈

PrepareStatement

①优于Statement,指示SQL语句的预编译,提高数据库执行效率

②防止SQL注入,直接对象对接语句

③语句参数使用占位符?

编程语言 : Java的动态Web解决方案泛谈

JDBC的代码规范

1.配置文件

编程语言 : Java的动态Web解决方案泛谈

2.工具类

编程语言 : Java的动态Web解决方案泛谈

编程语言 : Java的动态Web解决方案泛谈

3.业务代码

编程语言 : Java的动态Web解决方案泛谈

分页

在web开发中,数据量分页的情况数不胜数,不同数据库分页语句不同,但是逻辑是一样的.

分页逻辑需要参数:数据总条数count(*),分页大小size,当前页面数current

Oracle

oracle中数据表中隐含了一个rownum字段,标识了每条记录在表中的行号,利用它能获取特定行数据.

select a1.* from (select student.*,rownum rn from student) a1 where rn between 3 and 5;

MySQL

MySQL中使用limit关键字来获取数据行数

select * from customer limit 10,5;//第10行开始后的前5条数据

Page类

编程语言 : Java的动态Web解决方案泛谈

分页逻辑实现

编程语言 : Java的动态Web解决方案泛谈

JDBC的其他重点