1、对象地址
当一个对象作为参数,传递到方法当中时,实际上传递进去的时对象的地址值。
数组作为方法参数传递,传递的参数是数组内存的地址值
2、抛出异常
- try、catch可以抛出异常(signture不行)
- throw关键字,指定的方法中抛出指定的异常,(RuntimeException的子类对象,默认交给JVM处理(打印异常对象,中断程序))
- 当只有在try或者catch中调用退出JVM的相关方法,此时finally才不会执行,否则finally永远会执行
3、web相关概念
-
1、软件架构
- C/S:客户端/服务器端
- B/S:浏览器/服务器端
-
2、资源分类
- 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析 如: html,css,JavaScript
- 动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,在返回给浏览器 如:servlet/jsp,php,asp…
-
3、网络通信三要素
-
IP:电子设备(计算机)在网络中的唯一标识。
-
端口:应用程序在计算机中的唯一标识。 0~65536
-
传输协议:规定了数据传输的规则
1.基础协议:
- tcp:安全协议,三次握手。 速度稍慢
- udp:不安全协议。 速度快
-
4、Servlet
-
1、概念:运行在服务器端的小程序(server applet)
-
Servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则。
-
将来我们自定义一个类,实现Servlet接口,复写方法。
-
-
2、执行原理
- 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
- 查找web.xml文件,是否有对应的标签体内容。
- 如果有,则在找到对应的全类名
- tomcat会将字节码文件加载进内存,并且创建其对象
- 调用其方法
-
3、Servlet中的生命周期方法
- 被创建:执行init方法,只执行一次
- 默认情况下,第一次被访问时,Servlet被创建
- 说明一个Servlet在内存中只存在一个对象,Servlet是单例的
- 提供服务:执行service方法,执行多次
- 每次访问Servlet时,Service方法都会被调用一次。
- 被销毁:执行destroy方法,只执行一次
-
Servlet被销毁时执行。服务器关闭时,Servlet被销毁;
-
只有服务器正常关闭时,才会执行destroy方法;
-
destroy方法在Servlet被销毁之前执行,一般用于释放资源。
-
4 、Servlet3.0
- 支持注解配置。可以不需要web.xml
- 在类上使用@WebServlet(“资源路径”),进行配置
-
5、HttpServlet
HttpServlet:对http协议的一种封装,简化操作(继承Servlet)
1. 定义类继承HttpServlet 2. 复写doGet/doPost方法(封装了req.getMethod判断时get还是post)
5、HTTP
-
1、概念
传输协议:定义了,客户端和服务器端通信时,发送数据的格式
特点:-
基于TCP/IP的高级协议
-
默认端口号:80
-
基于请求/响应模型的:一次请求对应一次响应
-
无状态的:每次请求之间相互独立,不能交互数据
-
历史版本:
1:每一次请求响应都会建立新的连接
2:复用连接
-
-
2、请求消息数据格式(HttpServletRequest )
-
请求行
请求方式:
HTTP协议有7中请求方式,常用的有2种
GET:
1. 请求参数在请求行中,在url后。
2. 请求的url长度有限制的
3. 不太安全
POST:
1. 请求参数在请求体中
2. 请求的url长度没有限制的
3. 相对安全 -
请求头:客户端浏览器告诉服务器一些信息
请求头名称: 请求头值
常见的请求头:
-
User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
可以在服务器端获取该头的信息,解决浏览器的兼容性问题
-
Referer:http://localhost/login.html
告诉服务器,我(当前请求)从哪里来?
作用:
- 防盗链:
- 统计工作:
-
-
3.请求空行 : 空行,就是用于分割POST请求的请求头,和请求体的
4. 请求体(正文) : 封装POST请求消息的请求参数的
-
3、响应消息
-
响应行
-
组成:协议/版本 响应状态码 状态码描述
-
响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
-
状态码都是3位数字
-
分类:
-
1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
-
2xx:成功。代表:200
-
3xx:重定向。代表:302(重定向),304(访问缓存)
-
4xx:客户端错误。
404(请求路径没有对应的资源)
405:请求方式没有对应的doXxx方法
-
5xx:服务器端错误。代表:500(服务器内部出现异常)
-
-
-
-
响应头:
- 格式:头名称: 值
- 常见的响应头:
- Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
- Content-disposition:服务器告诉客户端以什么格式打开响应体数据
-
响应空行
-
响应体:传输的数据
-
6、Request
-
1、request对象和response对象的原理
- request和response对象是由(tomcat)服务器创建的。我们来使用它们
- request对象是来获取请求消息,response对象是来设置响应消息
-
2、request功能
- 获取请求消息数据
- 获取请求行数据:请求方式,虚拟目录,路径,参数,url
- **请求头(Header)**数据
- 请求体数据(post请求):字符输入流(操作字符数据),字节输入流(所有类型数据)
- 获取请求参数通用方式
1.根据参数名称获取参数值 username=zs&password=123
2.根据参数名称获取参数值的数组 hobby=xx&hobby=game
3.获取所有请求的参数名称
4.获取所有参数的map集合
3.中文乱码问题:
get方式:tomcat 8 已经将get方式乱码问题解决了
post方式:会乱码
解决:在获取参数前,设置request的编码request.setCharacterEncoding(“utf-8”);4.请求转发:一种在服务器内部的资源跳转方式
5.共享数据:
域对象:一个有作用范围的对象,可以在范围内共享数据
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
- 获取ServletContext(代表整个web应用)
7、Response
-
1、设置响应消息
-
设置响应行
- 格式:HTTP/1.1 200 ok
- 设置状态码:setStatus(int sc)
-
设置响应头:setHeader(String name, String value)
-
设置响应体:
-
获取输出流
字符输出流:PrintWriter getWriter()
字节输出流:ServletOutputStream getOutputStream()
-
使用输出流,将数据输出到客户端浏览器
-
-
-
2、重定向(资源跳转的方式)
//简单的重定向方法
response.sendRedirect("/day15/responseDemo2");1、重定向的特点:redirect
1. 地址栏发生变化
2. 重定向可以访问其他站点(服务器)的资源
3. 重定向是两次请求。不能使用request对象来共享数据
2、转发的特点:forward
1. 转发地址栏路径不变
2. 转发只能访问当前服务器下的资源
3. 转发是一次请求,可以使用request对象来共享数据 -
3、 服务器输出字节数据到浏览器(验证码)
8、ServletContext对象
-
1、概念:代表整个web应用,可以和程序的容器(服务器)来通信
-
2、获取
- 通过request对象获取
request.getServletContext(); - 通过HttpServlet获取
this.getServletContext();
- 通过request对象获取
-
3、功能
-
获取MIME类型:
MIME类型:在互联网通信过程中定义的一种文件数据类型
格式: 大类型/小类型 text/html image/jpeg
获取:String getMimeType(String file)
-
域对象:共享数据
-
获取文件的真实(服务器)路径
- web目录下资源访问/WEB-INF目录下的资源访问…
-
9、会话(Cookie/Session)
-
1、概念
1.会话:一次会话中包含多次请求和响应。
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止- 功能:在一次会话的范围内的多次请求间,共享数据
- 方式:
- 客户端会话技术:Cookie
- 服务器端会话技术:Session
-
2、Cookie
-
1.客户端会话技术,将数据保存到客户端
-
2.使用步骤:
1.创建Cookie对象,绑定数据
new Cookie(String name, String value)2. 发送Cookie对象 response.addCookie(Cookie cookie) 3. 获取Cookie,拿到数据 Cookie[] request.getCookies()
-
3.实现原理: 基于响应头set-cookie和请求头cookie实现
-
4.Cookie的特点和作用
-
cookie存储数据在客户端浏览器
-
浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
-
cookie一般用于存出少量的不太敏感的数据
2.在不登录的情况下,完成服务器对客户端的身份识别
-
-
-
-
3、Session
-
概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。
-
快速入门:
-
获取HttpSession对象:
HttpSession session = request.getSession();
-
使用HttpSession对象:
Object getAttribute(String name) void setAttribute(String name, Object value) void removeAttribute(String name)
-
3.原理:Session的实现是依赖于Cookie的
4. session的特点
1. session用于存储一次会话的多次请求的数据,存在服务器端 2. session可以存储任意类型,任意大小的数据 3.session与Cookie的区别: 1. session存储数据在服务器端,Cookie在客户端 2. session没有数据大小限制,Cookie有 3. session数据安全,Cookie相对于不安全
-
10 、EL表达式
-
作用:替换和简化jsp页面中java代码的编写
-
语法:${表达式}
-
获取值
el表达式只能从域对象中获取值
${域名称.键名}:从指定域中获取指定键的值
11、Filter:过滤器
-
1、概念
-
web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
-
一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤
-
-
2、快速入门:
- 定义一个类,实现接口Filter
- 复写方法
- 配置拦截路径(web.xml/注解)
-
3、过滤器执行流程
- 执行过滤器
- 执行放行后的资源
- 回来执行过滤器放行代码下边的代码
-
4、过滤器生命周期方法
1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源 2. doFilter:每一次请求被拦截资源时,会执行。执行多次 3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
12、Listener:监听器
- 1、概念:web的三大组件之一。
事件监听机制
事件 :一件事情
事件源 :事件发生的地方
监听器 :一个对象
注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
13、AJAX
-
1.概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML
-
异步和同步:客户端和服务器端相互通信的基础上
同步: 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作
-
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。 -
客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
-
-
2、JQeury实现方式
* 语法:$.ajax({键值对}); //使用$.ajax()发送异步请求 $.ajax({ url:"xxx/hello" , // 请求路径 type:"POST" , //请求方式 //data: "username=jack&age=23",//请求参数 data:{"username":"jack","age":23}, success:function (data) {//响应成功后的回调函数 alert(data); }, error:function () { //表示如果请求响应出现错误,会执行的回调函数 alert("出错啦...") }, });
14、JSON
-
1、概念:JavaScript对象表示法
- json现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON 比 XML 更小、更快,更易解析。