一、专业技术术语与名词
1. Web的特性
定义:Web是分布于全球,基于HTTP通信协议,存储在Web服务器里的所有相互链接的超文本集合
- Web属于分布式超媒体系统
- Web具备多媒体化以及易于导航的特点
- Web与平台无关
- Web是动态且可交互的
2. TCP/IP结构及作用
- 网络接口层:负责把IP分组封装成适合在具体物理网络上传输的帧
- 网络层:解决网络互联中IP分组的寻址问题
- 传输层:保障报文段的完整性并提供端到端的通信
- 应用层:提供计算机之间的各类应用服务与协议
3. HTTP/HTTPS
概念:HTTP即超文本传输协议,是Web的基础通信协议,Web的服务器和浏览器都采用HTTP协议来传输Web文档,处于TCP/IP的应用层
- 在互联网上通常采用TCP连接,默认使用80端口
- 客户机浏览器与服务器的TCP连接仅能处理一次事务
HTTP定义的一次事务处理流程
- 客户机浏览器与Web服务器建立连接
- 客户机浏览器向Web服务器提出请求,在请求中明确所要求的特定文件
- Web服务器对客户机浏览器的请求进行响应
- 客户机浏览器与Web服务器断开连接
http请求中get和post的区别
- get用于获取数据,post用于上传数据
- get不安全,因为传输过程中数据放在请求的URL中,而Post的所有操作对用户不可见
- Get传输数据量小(受URL限制),而Post可以传输大量数据(比如:上传文件只能用Post)
- Get是Form的默认方法
- Get限制Form表单的数据集必须是ASCII字符,而Post支持整个ISO10646字符集
4. JavaBean
JavaBean是Java开发语言中可重复使用的软件组件,本质上就是一个Java类
- 解释:JavaBean实际上是遵循特定写法的JAVA类,封装了数据和业务逻辑,供JSP和Servlet调用,实现了数据封装与数据处理功能
<jsp:useBean>
标签用于声明JavaBean对象
- JSP提供了访问JavaBean属性的标签,若要将JavaBean的某个属性输出到网页上,可用
<jsp:getProperty>
标签。若要给JavaBean的某个属性赋值,可用<jsp:setProperty>
标签
简述JavaBean规范包含哪些?
-
必须具有一个公共的、无参的构造方法,该方法可以是编译器自动生成的默认构造方法。
-
提供公共的setter方法和getter方法让外部程序设置和获取JavaBean的属性
-
是一个公有类
-
通常需要实现
java.io.Serializable
,用于序列化。
① Java开发流程
-
编写JavaBean
-
编译JavaBean
javac text.java
-
部署JavaBean
② JavaBean属性值
-
设置
<jsp::setProperty name="beanname" property="propertyname" value="beanvalue">
-
获取
<jsp::getProperty name ="beanname" property="propertyname">
5. 进程与线程的比较
二、前端三要素
1. HTML常见标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网页标题</title>
</head>
<body>
这是网页身体
</body>
</html>
超文本标签
<!--1. 跳转网页-->
<a href = "http://www.com">112</a>
<!--2. 跳转某个文档的段落-->
<a href = "#clients">跳</a>
<a name = "clients">Clients</a> <!--相同文档-->
<a name = "filenameBclients">Clients</a> <!--不同文档, 比如文档 B-->
表格标签
<table>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
HTML5新特性:语义化、本地存储、连接性、网页多媒体、三维图形特效(各标签的功能需清晰,尤其是其特有标签元素)
2. CSS
CSS样式如下:(优先级,从上到下逐渐降低)
-
内联样式
<div style="color: red;">
-
内部样式
<style>p{color: red;}</style>
-
外部样式
通过link标签引入外部CSS样式表
3. javascript
定义:是一种嵌入在HTML文档中,具有跨平台性、安全性,基于对象和事件驱动的解释型编程脚本语言
Js特点
- 是一种脚本语言
- 基于对象
-
安全、跨平台、动态
<!DOCTYPE html>
Document
<button onclick="alert('I miss You')">错过</button>
Js关键字:let、var,区别如下:
- let将声明变量的生命周期限定在一个代码块内
- var声明的变量在整个方法内均可访问
Js常见事件
-
事件概念:用户与Web网页交互产生的操作
-
事件处理概念:浏览器响应事件并进行处理的过程。而进行这种处理的代码称为事件的响应函数
Js对象
-
内置对象:String、Math、Array、Date
//数组创建 var arr = new Array(8);
-
window对象:
-
document对象:
-
自定义对象:
JAVA和Javascript的区别
① JS是基于对象的脚本语言,而JAVA是面向对象的编程语言
② 在浏览器的执行方式不同:解释(JS)、编译(JAVA)
③ 采用的变量不同:弱类型(JS,声明变量时无需指定变量类型),强类型(JAVA)
④ 代码格式不同:JS嵌入HTML,JAVA与HTML无关
三、Servlet
Servlet是运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用于处理客户端请求、响应给浏览器的动态资源。但servlet
的实质就是java
代码,通过java的API动态地向客户端输出内容
Servlet的常见配置如下
<!-- 配置Servlet -->
<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>xxx.xxx.xxx</servlet-class>
</servlet>
<!-- 配置Servlet映射路径 -->
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/xxx</url-pattern>
</servlet-mapping>
1. Servlet在Web应用中的作用
Servlet在Web中主要用于处理客户端发送的HTTP请求,并生成相应的HTTP响应,通过Servlet开发者可实现各种功能,比如用户认证、数据处理等.
2. Servlet生命周期工作流程
1)加载阶段:Servlet容器加载Servlet类并实例化一个Servlet实例对象
2)初始化阶段:Servlet容器调用Servlet类的实例对象的init()
方法进行Servlet的初始化
3)调用阶段:如果Servlet容器收到对该Servlet的请求,则调用此实例对象的service()
方法处理请求并返回响应结果
4)销毁阶段:Servlet容器在卸载该Servlet前,调用它的destroy()方法将其销毁
3. Servlet常用方法
1)Servlet类需要继承HttpServlet类
2)Servlet类的父类HttpServlet中包含以下几种方法:
init()
:Servlet的初始化方法,Servlet创建后执行doGet()
:请求类型为get时调用doPost()
:请求类型为post时调用destroy()
:用于释放资源forward()
/sendRedirect()
:用于请求转发或重定向到其他页面
4. 请求转发和重定向
请求转发与重定向的异同点如下:
- 请求转发和重定向都可以实现访问一个资源时转向当前应用资源
- 请求转发是一次请求一次响应,而重定向为两次请求两次响应
重定向:(两次请求,地址栏看得到变化,数据丢失)
response.sendRedirect("相对路径");
请求转发:(一次请求,地址栏看不到改变,数据不丢失,可以getParameter数据,也可以getAttribute数据)
request.getRequestDispatcher("相对路径").forward(request,response);
应用场景
- 一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力
- 如果需要改变浏览器的地址栏,或更改浏览器的刷新按钮的功能时需要使用重定向
Servlet过滤器
概念:运行在服务器上,位于请求和响应之间,起过滤作用的程序
Filter工作原理(执行流程)
- 请求首先被过滤器链的第一个Servlet过滤器处理
- 在第一个Servlet过滤器的请求处理完毕后,请求会被交给下一个Servlet过滤器处理
- 客户的请求就这样在过滤器中逐个处理,直到请求发送给目标为止
Servlet过滤器通过javax.servlet.Filter
接口提供一个无参构造函数来实现
void init(FilterConfig config)
:初始化功能void doFilter(servletRequest request, ServletResponse response, Filter chain)
:实现过滤功能void destroy()
:生命周期结束,自动调用
1、请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用(书 189 页)
Servlet接口中有init、service、destroy 、getServletConfig和getServletInfo这5个方法,这些方法的特点及其作用具体如下:
-
init(ServletConfig config)
方法,该方法在服务器对Servlet第一次访问时调用,负责Servlet初始化工作。在一个Servlet的生命周期中只执行一次。该方法接收一个ServletConfig类型的参数,Servlet容器可以通过这个参数向Servlet传递初始化配置信息。 -
service(ServletRequest request,ServletResponse response)
方法,该方法负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。 -
destroy()
方法,该方法方法负责释放Servlet对象占用的资源。当Servlet对象被销毁时,容器会调用此方法。 -
getServletConfig()
方法,该方法返回容器调用init(ServletConfig config)方法时传递给Servlet的ServletConfig对象。 -
getServletInfo()
方法,该方法返回一个字符串,其中包含了关于Servlet的信息,例如,作者、版本和版权等信息。
2、简述ServletContext
接口的三个主要作用
-
获取Web应用程序的初始化参数
-
实现多个Servlet对象共享数据
-
读取Web应用下的资源文件
3、如何部署和访问servlet服务器
- 部署:打开【servers】选项卡,选中部署web应用的Tomcat服务器,右键单击并选择【Add and Remove】选项,进入部署web应用的界面,选中“chapter03”,单击【Add】按钮,将chapter03项目添加到Tomcat服务器中,单击【finish】按钮,完成web应用的部署
- 访问:接下来启动eclipse中的Tomcat服务器,在浏览器的地址栏上输入地址
“http://localhost:8080/chapter03/TestServlet01”
访问TestServlet01
四、MVC
基本概念:MVC设计模式是编程语言的一种软件设计模式,提供了一种按功能对软件进行模块划分的方法。MVC设计模式将软件程序分为三个核心模块:模型(Model)、视图(View)和控制器(Controller)
- MVC模式中,模型对应的组件在:JavaBean
- MVC模式中,视图对应的组件是:JSP或HTML文件
- MVC模式中,控制器的作用是:控制器负责转发请求,对请求进行处理
M(模型层)指的是:实体类、Service层、dao层
MVC设计模式中模型(Model)模块的作用如下:
- 管理应用程序的业务数据
- 定义访问控制和修改这些数据的业务规则
- 当模型的状态发生改变时,它会通知视图发生改变,并为视图提供查询模型状态的方法
MVC模式的优缺点如下:
- 优点:各司其职,互不干涉、利于分工、利于重用和扩展
- 缺点:不适用于开发中小型应用程序
Model2(JSP + Servlet + JavaBean)
四、SSM框架
1. SSM框架处理步骤
(1)客户机发送请求,该请求会被配置在web.xml文件中的前端控制器(DispacherServlet)接收和拦截。
(2)由DispacherServlet调用处理器映射器(HandlerMapping),处理器映射器根据请求找到具体的处理器(Handler),并生成Handler对象和拦截器返回给DispacherServlet。
(3)DispacherServlet选择对应的处理器适配器(HandlerAdapter),HandlerAdapter调用并执行Handler。通过Handler对持久化对象(PO)进行增删改查操作,由实体对象(POJO)将操作映射到持久层框架。最终持久层框架将操作映射到数据库。
(4)数据库将操作后得到的结果返回,经由PO和Handler将操作结果提交给一个包含模型和视图名称的ModelAndView对象。该模型会由HandlerAdapter返回给DispacherServlet。
(5) DispacherServlet根据模型选择合适的视图解析器(ViewResolver)对模型进行解析,并返回合适的视图,DispacherServlet对视图进行渲染,视图被发送至客户机显示。
2. SSM配置
- 在
pom.xml
中配置Spring、JDBC等等 - 在
web.xml
中配置编码、过滤器、监听器、Spring MVC、日志等- 用
<servlet>
标记对命名Servlet - 用
<servlet-mapping>
标记对为Servlet指定对应的URL <context-param>
和<init-param>
来定义参数- 前者定义的参数整个项目均可访问
- 后者定义的项目只有在指定的Servlet中才能访问
- 用
<Listener>
标签配置监听器 - 用
<filter>
和<filter-mapping>
标签配置过滤器
- 用
- 配置
jdbc.properties
文件(与数据库相关的属性,比如:连接数量的限制) - 配置
SpringMVC.xml
文件 - 配置
Spring.xml
文件 - 配置
MyBatis.xml
文件(比如:全局映射器是否使用缓存、延迟加载等)
3. SSM层次结构
- 视图层:负责前台网页显示,将视图返回给客户机
- 表现层(controller):系统接收用户请求后,根据用户请求的URL确定处理用户请求的业务逻辑
- 业务层(service + serviceimpl):负责业务模块设计
- 持久层(mapper + 实体类)
- 用dao接口来实现持久层,在
mapper.xml
设计对数据库的具体操作的SQL语句,并且可以指定namespace路径来建立mapper和dao接口的关联
- 用dao接口来实现持久层,在
- 数据库
4. SSM核心技术
包含SpringIOC、DI和AOP等(DI是IOC的一种实现方式)
IOC容器中管理的Bean的生命周期的过程如下:
- 第一阶段:Bean配置原始数据
- 第二阶段:Bean实例化阶段
- 第三阶段:Bean的属性赋值阶段
- 第四阶段:Bean的销毁回收阶段
IOC的优点
- 可以将对象内部的构造细节进行封装
- 解决了对象之间的耦合性
依赖查找和依赖注入的区别:
- 前者需要在Java程序中主动调用IOC容器提供的接口来获取Java对象,后者获取对象的工作由IOC容器代替开发者完成
IOC对象创建的3个途径:属性注入、使用注解自动装配、构造器注入
5. AOP面向面编程
- 连接点(JoinPoint)
- 切点(PointCut)
- 通知(Advice)
- 切面(Aspect)
- 引入(Introduction)
- 目标对象(Target Object)
- 代理(Proxy)
请说明反转控制(IOC)和面向切面编程(AOP)在spring中的应用
6. Mybatis
Mybatis在SSM中的pom.xml配置如下:
<dependency>
<grouId>org.my