Java后端期末考试复习重点

1. 选择题 15个 2分/题

2. 填空题 10个 2分/题

常用数据库:

必考

MongoDB -> 非关系型数据库 -> NoSQL

MySQL -> 关系型数据库 -> SQL

开发体系结构:

必考

C/S -> Client/Server -> 客户端/服务器

B/S -> Browser/Server -> 浏览器/服务器

Swing 常用组件的创建(书P270):

必考

JButton btn = new JButton("按钮");

即 类名 对象名 = new 类名("显示文本");

示例代码:

import javax.swing.JButton;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("Java按钮组件示例"); // 创建Frame窗口

frame.setSize(400, 200);

JPanel jp = new JPanel(); // 创建JPanel对象

// 重点

JButton btn = new JButton("按钮"); // 创建JButton对象

jp.add(btn);

frame.add(jp);

}

}

JSP缩写:

必考

Java Server Pages

Java web 请求处理过程

MVC模型

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。

View(视图) - 视图代表模型包含的数据的可视化。

Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

3. 程序填空 3题 7空 14分

1. 多线程(书P305)

创建线程的方法

必考

extends Thread

implements Runnable

package multithreading;

// 方法一:继承Thread类,重写run()方法 -> extends Thread

class ExtendsThread extends Thread {

@Override

public void run() {

System.out.println("extends Thread");

}

}

// 方法二:实现Runnable接口,重写run()方法 -> implements Runnable

class ImplementsRunnable implements Runnable {

@Override

public void run() {

System.out.println("implements Runnable");

}

}

public class Multithreading {

public static void main(String[] args) {

//主线程

System.out.println("main thread");

//调用start()方法,启动一个新线程

new ExtendsThread().start();

//由于Runnable接口只声明了一个run()方法,因此须借助Thread类中的Thread(Runnable target)构造器来创建一个Thread对象,以调用start()方法,启动一个新线程

new Thread(new ImplementsRunnable()).start();

}

}

判断线程个数

必考

线程个数 = new XXX.start() 方法数 + 1(主线程)

例如本段程序,有两个new .....start()方法,则线程个数为2+1

public class Multithreading {

public static void main(String[] args) {

//主线程

System.out.println("main thread");

//调用start()方法,启动一个新线程

new ExtendsThread().start();

//由于Runnable接口只声明了一个run()方法,因此须借助Thread类中的Thread(Runnable target)构造器new一个Thread对象,调用start()方法,启动一个新线程

new Thread(new ImplementsRunnable()).start();

}

}

new了几个start(),就是几加一

注意:while for 函数 中是否有 start()

2. I/O流(书P332)

什么是流(书P332 11.1.1)

一个无结构化的数据组成的序列

I/O流的分类(书P332 11.1.2)

根据单位:

字节流:以字节为单位,通常传输二进制数据类文件

字符流:以字符为单位,通常传输文本类文件

根据流向:

输入流:表示从一个源读取数据,只读

输出流:表示向一个目标写数据,只写

根据功能:

实体流:只有基本读写操作

装饰流:实体流基础上实现高级功能

字节流

字节输入/输出流:

InputStream/OutputStream

文件字节输入/输出流:

FileInputStream/FileOutputStream

字符流

字符输入/输出流:

Reader/Writer

文件字符输入/输出流:

FileReader/FileWriter

代码详见书 P340

3. JDBC 数据库

JDBC是什么?

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

编译预处理(P385 12.3.5)

什么是编译预处理?

编译预处理的好处?

数据库操作分类

Statement类

查询:ResultSet executeQuery(String sql),返回包含给定查询生成的数据的ResultSet对象

更新:int executeUpdate(String sql),返回SQL语句影响的行数

开发步骤

获取连接

开启事务

获取到 PreparedStatement

使用 PreparedStatement 执行两次更新操作

正常情况下提交事务

出现异常回滚事务

最后关闭资源

preparedSatement 的好处

prepareStatement()会先将 SQL 语句发送给数据库预编译。PreparedStatement 会引用着预编译后的结果。

可以多次传入不同的参数给 PreparedStatement 对象并执行。减少 SQL 编译次数,提高效率。

安全性更高,没有 SQL 注入的隐患。

提高了程序的可读性

使用 PreparedStatement 的步骤:

编写 SQL 语句,未知内容使用?占位:“SELECT * FROM user WHERE name=? AND password=?”;

获得 PreparedStatement 对象

设置实际参数:setXxx(占位符的位置, 真实的值)

执行参数化 SQL 语句

关闭资源Statement 中的方法:

Statement 接口中的方法

int executeUpdate(String sql)

用于发送 DML 语句,增删改的操作,insert、update delete

参数:SQL 语句

返回值:返回对数据库影响的行数

ResultSet executeQuery(String sql)

用于发送 DQL 语句,执行查询的操作。select

参数:SQL 语句

返回值:查询的结果集

4. 简答题 4个 4分/题

Servlet的生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

Servlet 初始化后调用 init () 方法。

Servlet 调用 service() 方法来处理客户端的请求。

其中,service()方法会根据请求类型调用doGet()方法或doPost()方法

Servlet 销毁前调用 destroy() 方法。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

Filter生命周期:(其实filter可以看作是一种特殊的servlet,所以生命周期和servlet大致相同)

通过构造函数实例化;

初始化init();

业务逻辑处理:doFilter();

销毁:destory()

请求转发与重定向

重定向:客户端行为,从本质上讲等于两次请求,前一次请求的对象不会保存,地址栏的URL地址会改变。

请求转发:服务器的行为,是一次请求,转发后请求对象会保存,地址栏的不会改变。

三种域对象

对象名称

对象的类型

request

HttpServletRequest

session

HttpSession

application

ServletContext

request

request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在当前请求中有效。

用处:常用语服务器间同一请求不同页面之间的参数传递,常用语表单的控件值传递。

session

服务器会为每一个会话创建一个Session对象,所以Session中的数据可供当前会话中所有Servlet共享。

用处:常用于web开发中的登录验证界面(当用户登陆成功后浏览器分配其中一个Session键值对)。

application (ServletContext上下文)

作用范围:所有的用户都可以取得此信息,此信息在整个服务器端被保留。Application属性范围值只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象。

Cookie 和 Session 有什么不同?

1、作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。

2、存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。

3、有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。

4、隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。

5、存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。

学会简单的 Cookie与Session 操作

DataBase 操作 (SQL 基本语句 JDBC详见上面内容)

查询

SELECT column_name,column_name

FROM table_name

WHERE column_name operator value;

插入

插入操作主要有以下两种写法:

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name

VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)

VALUES (value1,value2,value3,...);

更新

更新表中已经存在的元素

UPDATE table_name

SET column1=value1,column2=value2,...

WHERE some_column=some_value;

删除

#根据条件删除表中已经存在的元素

DELETE FROM table_name

WHERE some_column=some_value;

5. 编程题 2个 10分/题

Java8

必考

Lambda表达式

Java8详细资料:

作业1:

1 创建Student类对象,包括私有属性id,name,age,访问器方法,构造函数。

2 创建8个学生对象的集合List

3 普通方法和lambda表达式方法实现排序

4 Stream流实现输出年龄在18岁以上,排名前5,排除第1个的学生信息

// Student.java 学生类

public class Student {

private String id;

private String name;

private int age;

public Student(String id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "id=" + id + ", name=" + name + ", age=" + age;

}

}

// Main.java 主类

import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

public class Main {

public static void main(String[] args) {

List students = new ArrayList();

//循环生成学生信息,并创建学生对象添加到列表中

for (int i = 1; i <= 8; i++) {

String id = "190707020" + i;

String name = "student" + i;

//在18的基础上随机加[0, 5)范围内的整数,生成不同的年龄

int age = 18 + (int) (Math.random() * 5);

students.add(new Student(id, name, age));

}

//创建一个与students内元素相同的列表

List newStudents = new ArrayList(students);

//普通方法排序

students.sort(new Comparator() {

@Override

public int compare(Student o1, Student o2) {

return o1.getAge() - o2.getAge();

}

});

students.forEach(System.out::println);

//λ表达式排序

newStudents.sort((o1, o2) -> o1.getAge() - o2.getAge());

newStudents.forEach(System.out::println);

//Stream流实现输出年龄在18岁以上,排名前5,排除第1个的学生信息

students.stream() // 构造流

.filter(s -> s.getAge() > 18) // 选择年龄大于18岁的学生

.limit(5) // 选择前5个元素

.skip(1) // 跳过第1个元素

.forEach(System.out::println); // 遍历输出

}

}

JSP处理请求

例如基础的登陆表单验证

基本思想

用户在登陆界面输入用户名和密码

然后提交给处理jsp文件,由这个文件进行处理

处理完跳转到登陆成功或者失败界面

index.jsp (表单post请求)

登录页面

action="${pageContext.request.contextPath}/loginServlet"

method="post"

>

用户名:

密码:

LoginServlet.java (处理请求参数)

package com.servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/loginServlet")

public class LoginServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

String password = request.getParameter("password");

String info = "";

if("admin".equals(username) && "123456".equals(password)){

info = "欢迎你" + username + "!";

}else{

info = "用户名或密码错误!";

}

request.setAttribute("info", info);

request.getRequestDispatcher("info.jsp").forward(request,response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

}

info.jsp 结果页

登录提示

返回首页

java期末程序填空_Java后端期末复习相关推荐

  1. 【Java应用程序开发】【期末复习题】【2022秋】【答案仅供参考】

    文章目录 零.考试说明 一.单选题(175-2-2题,1') 二.多选题(16题,2') 三.判断题(20题,1') 四.简答题(18题,5') 五.编程题(9题,10') 零.考试说明 答题时长:9 ...

  2. java窗口程序实例_Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  3. java实验项目代码_java web 期末项目实验源码20套,自用学习非常不错!

    分享java web 期末项目实验源码20套,自用学习非常不错! 我自己也从里面学习到了很多东西! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servlet) 3.OA办公自动 ...

  4. java行转列_Java后端面试标准:如何准备一场后端面试?

    在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面 ...

  5. java float内存结构_Java后端开发岗必备技能:Java并发中的内存模型

    欢迎关注专栏: Java架构技术进阶 .里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦. JMM通过构建一个统一的内存模型来屏蔽掉不同硬件平台和不同操作系统之间的差异,让Jav ...

  6. java聊天程序源代码_java聊天程序源代码

    服务端: import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean stat ...

  7. java开发程序员_Java大牛给入门Java开发程序员的10个学习建议

    Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理. 纸上得来终觉浅,绝知此事要躬行. 学习Java基础的时候,应 ...

  8. java接口并发衡量_java 后端设计高并发接口总结

    如何设置高并发接口 一.并发队列的选择 二.请求接口的合理设计 三.高并发下的数据安全 3.1 超发的原因 3.2 悲观锁思路 3.3 FIFO队列思路 3.4 乐观锁思路 一.并发队列的选择 Jav ...

  9. java的程序编码_Java 程序编码规范(初学者要牢记)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 所有的程序开发手册都包含了各种规则.一些习惯自由程序人员可能对这些规则很不适应,但是在多个开发人员共同写作的情况下,这些规则是必需的.这不仅仅是为了开发效 ...

最新文章

  1. 多线程编程学习笔记——async和await(三)
  2. 构建一个计算机网络,计算机网络--网络构建(一)
  3. php中target用法,Yii使用DbTarget实现日志功能的示例代码
  4. Adobe Flash Player(Flash播放器)下载地址
  5. java mic波形识别_会议季Mic Drop:您不应该错过的13场Java演讲
  6. 补间动画android
  7. 复合选择器-子选择器(HTML、CSS)
  8. linux awk拼接字符串,shell awk命令字符串拼接
  9. Jenkins配置Android自动打包传蒲公英功能
  10. 城市轨道交通乘客信息系统的功能介绍
  11. 中职计算机应用基础表格制作说课稿,表格制作的说课稿
  12. 数据分析师工作内容 数据分析的六个步骤
  13. HTTP中的status code什么意思
  14. QTreeWidget实现搜索子节点功能
  15. 如何储存图片方法jpg格式png格式#ps教程#ps抠图
  16. 高德地图 SDK 的应用 01:绘制多边形区域图
  17. 第七次全国人口普查登记今日零时启动 六大释疑都在这
  18. 1. oralce数据库安装以及简单的SQL语句
  19. Kibana中KQL的使用
  20. B站入局直播电商,流量的终点就是带货?

热门文章

  1. laradock 环境下,PHP 该如何实现本地域名通信啊?
  2. mysql8之MGR
  3. border-radius 圆角 ios 失效
  4. Opencv-python 求原坐标点透视变换后对应坐标点
  5. 互联网其它岗位薪资排行榜
  6. 7-3 sdut-顺序结构-1 利用海伦公式求三角形面积,了解世界科学史
  7. JSP (java服务器页面)
  8. 增强网络口碑营销效果的5个方法
  9. Jmeter-Beanshell取样器举例描述常用方法及使用场景
  10. java.sql.Date日期比较