[石家庄校区]技术笔记
单元测试的优点:
他可以直接通过结果颜色直观放映我们代码有没有问题
一个类中可以测试很多方法,并且多个方法没有干扰
注意事项:
单元测试,红色什么时候才出现?
1 程序出现异常
2 assert语句,期望值和实际值不一样的时候
3 不允许有返回值,也不能有参数列表
4 记得加一个@Test
期望值和实际值不一样
Assert.assortEquals(3,add)
在程序开始的时候,可以创建几个连接,将连接放入到连接池中,用户使用连接的时候,可以从连接池中进行获取,用完之后,可以连接归还连接池
增强一个java类中的某个方法有几种方式:
一种方式:继承的方式
能够控制这个类的构造的时候.才可以使用继承
两种方式:装饰者模式的方式
包装对象和被包装的对象的时候
为什么装饰着设计模式要实现相同的接口??
答:保证装饰者的全部功能
还有一个设计模式通常和装饰者一起使用,适配器设计模式
为了解决超多的方法重写而使用
常见的开源的连接池
C/S架构的软件":
Client /Server 客户端和服务器的软件.都是需要在pc端安装的软件.
优点:效果炫,一部分代码写到客户端(速度快)
缺点:服务器更新,客户端都需要更新
B/S架构的软件:
Browser /Server 浏览器端和服务器的软件,不需要安装到pc端.只需要有一个浏览器即可.
优点:服务器端更新.客户端浏览器不需要进行更新
缺点:效果不炫.所有的代码运行都在服务器端,导致服务器压力过大
效果:使用HTML5,CSS3可以做出很炫效果
服务器端压力:搭建服务器的集群.而且还有AJAX技术
[WEB 的资源]
静态资源:
HTML,CSS,JS,图片....
动态资源:
PHP:
ASP:
Servlet/JSP:
[服务器]
硬件:其实就是一台配置很高的电脑
软件:必须在一台电脑上安装服务器软件
XML的作用:
传输和存取数据.
软件的配置文件
XML的使用:
XML的语法:
XML的文档声明:
通常出现在第一行第一列的位置
写法:<?xml属性名=属性值 属性名=属性值 ?>
version:必须的使用1.0
encoding:字符集,是使用浏览器打开的时候采用的默认的字符集的编码
standalone:描述xml文档是否需要依赖其他的文件
XML的注释:
<!--XML的注释-->
[XML的元素]
XML命名规则:
名称可以含子母数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符"xml"(或者XML,Xml )开始
名称不能包含空格
XML的属性
属性的名称规范与元素一致
XML的特殊字符和CDATA区
XML的约束的种类及区别?
DTD:语法是自成一体的Schema:语法就是XML的语法
Schema:语法就是XML的语法所以更容易被解析器所解析
Schema:支持名称空间
Schema:有比DTD更加强大的语义和语法的约束
DTD的引入方式:
内部的DTD
外部的DTD
Response:代表响应的对象,从服务器向浏览器输出内容
响应行:
void setStatus(int sc)
设置状态码
响应头:
void addDateHeader(String name ,long date)
void addHeader(String name,String value)
void addIntHeader(String name ,int value)
针对一个key对应多个value的头信息
void setDateHeader(String name ,long date)
void setHeader(String name,String value)
void setIntHeader(String name,String value)
针对一个key对应一个value的头信息
Session的概述
Cookie本身是有大小和个数 的限制,Session没有限制,Cookie的数据保存在客户端,Session保存在服务器端
Session的执行原理:基于Cookie的
使用Seccion:
获得Session:
request.getSession();--------如果携带的cookie有JSESSINONID的话,就会打开对应的区域
Session何时创建 和销毁?作用范围:
创建:服务器端第一次调用getSession()创建Session
销毁:三种情况销毁Session:
Session过期,默认过期时间为30分钟如果想要Session永久有效可以去cont文件夹web.xml---Session的有效时间改成0就能永久有效
非正常关闭服务器如果正常关闭Session序列化到硬盘-------如果Session存储有对象这个对象
手动调用Session.invalidate();存在
作用范围:多次请求(一次会话)
JSP的注释
HTML的注释:<!--注释-->
Java代码的注释://单行注释 /*多行注释 /* /**文档注释*/
JSP的注释:<%--只会存在于JSP的源代码中,翻译成Servret后,JSP的注释就消失了--%>
JSP的指令
指令的语法:
<%@指令名称 属性名称="属性值" 属性名称=属性值.......%>
JSP中有三个指令:page指令,include指令,taglib指令
JSP中page指令:<%@page%?>----设置JSP的
language:JSP脚本中使用的语言.现在只能写java
contenType:设置浏览器打开这个JSP的时候采用的默认的字符集的编码
pageEncoding:设置文件保存到本地硬盘.以及生成Servlet后,Servlet保存到硬盘上的编码
import:在JSP中引入类对象,但是import可以出现多次
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
extends :设置JSP翻译成Servlet后继承的类,默认值:org.apache.jasper.runtime.HttpJspBase,这个值要想修改,这个类必须是HttpServlet的子类
autoFlush :设置JSP的缓存自动刷出.true:自动刷出.
buffer :设置JSP的缓冲区的大小,默认8kb.
session :设置在JSP中是否可以直接使用session对象.默认值是true.
isELIgnored :设置在JSP中是否忽略EL表达式.默认值是false不忽略.
errorPage :设置错误友好页面的提示.
isErrorPage :通过这个设置显示JSP的错误信息.
设置全局的错误好友页面:
在web.xml中设置:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
JSP中的include指令:指示JSP包含其他的页面
<%@ include file="logo.jsp" %>
<%@ include file="menu.jsp" %>
<h1>BODY部分</h1>
<%@ include file="footer.jsp" %>
JSP中的taglib指令:指示JSP引入标签库
<%@ taglib uri="标签的URI的路径" prefix="标签的别名" %>
JSP的内置对象
JSP的内置对象:在JSP中可以直接使用的对象
JSP中有9大内置对象:
request HttpServletRequest getParameter(),setAttribute(String name,Object value);
response HttpServletResponse setHeader(String name,String value);getOutputStream();getWriter();
session HttpSession setAttribute();getAttribute();
application ServletContext setAttribute();getAttribute();
page Object toString();wait();
pageContext PageContext setAttribute();getAttribute();
config ServletConfig getServletName();getServletContext();
out JspWriter write(),print();
exception Throwable getMessage(),getCause(); 设置isErrorPage=”true”
page内置对象:真实对象是Object,就是JSP翻译成Servlet后的类的引用.
out内置对象 :out和response.getWriter是不是同一个对象?区别是什么?
不是out真实对象JspWriter ,response获得Writer是PrintWriter
pageContext内置对象
获得其他的8个内置对象:编写通用性代码或者框架的时候
向JSP的四个域存取数据:
PageScope :当前页面中有效 pageContext PageContext
RequestScope:一次请求范围 request HttpServletRequest
SessionScope :一次会话范围 session HttpSession
ApplicationScope :应用范围 application ServletContext
JSP的动作标签
标签的作用:简化代码.
<jsp:forward /> :用于页面的转发.
<jsp:forward page="/demo1-jsp/demo3-object/demo3.jsp"></jsp:forward>
<jsp:include /> :用于页面的包含.(动态包含)
静态包含和动态包含的区别?(<%@ include%>和<jsp:include>)
:静态包含
<jsp:param /> :用于带有路径的标签下,传递参数
<jsp:useBean /> :用于在JSP中使用JavaBean
<jsp:setProperty /> :用于在JSP中向JavaBean设置属性的.
<jsp:getProperty /> :用于在JSP中获得JavaBean的属性.
响应体
ServletOutputStream getOutputStream()
PrintEriter getWriter()
文件下载的方式
一种:超链接下载,直接将文件的路径写到超链接的href中----------前提:文件类型浏览器不支持
二中:手动编写代码的方式完成文件的下载
设置两个头和一个流
Content-Type:文件的MIME的类型
Content-Disposition:以下载的形式打开文件
InputSteream:文件的输入流
attachment;filename:附件
想页面响应的方法:
getOutputStream();
getWriter();
这两个方法是互斥的
做出响应的时候只能使用其中的一种流响应
输出中文乱码的处理
字节流:
设置浏览器默认打开的编码
resposne.setHeader("Content-Type",text/heml;charset=UTF-8);
设置中文字节取出的时候编码
"中文".getBytes(UTF-8);
字符流:
设置浏览器打开的时候的编码
resposne.setHeader("Content-Type",text/heml;charset=UTF-8);
设置response.setcharacterEncoding(UTF-8);
简化的写法:resposne.setContentType(text/heml;charset=UTF-8);
Request概述
Request代表用户的请求
功能一:获得客户相关的信息
获得请求方式:
String getMethod()
获得请求的路径:
String getRequestURI
StringBuffer getRequestURL().toString
获得客户相关的信息:
String getRemoteAddr()
获得工程名:
String getContextPath()
功能二:获得从页面中提交的参数:
String getParameter(String name)
Map getParameterMap()
Enumeration getParameterNames()
String[] getParameterValues(String name)
response.sendRedire
现在无论是GET还是POST提交中文的时候.都会出现乱码的问题
解决:
POST的解决方案:
POST的参数在请求体中,直接到达后台的Servlert数据封装到Servlet中的request
也有一个缓冲区.request的缓的冲区也是ISO-8859-1编码
设置request的缓冲区的编码:
request.setCharactee
使用request对象存取数据:
setAttribute(String name,String value);
Object getAttribute (String name )
request的作用范围:
作用范围就是一次请求的范围
创建和销毁:
创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象
销毁:当服务器对这次请求作出了响应之后
重定向和转发的区别:(redirect和forward的区别)
1:重定向的地址栏会发生变化,转发的地址栏不变
2:重定向两次请求两次响应,转发一次请求一次响应
3:重定向路径需要加工程名,转发的路径不需要加工程名可以
4:重定向可以跳转到任意网站,转发只能在服务器内部进行转发
Servlet的实现关系
Servlet:接口
生命周期:就是一个对象从创建到销毁的过程
Servlet生命周期:Servlet从创建到销毁的过程
何时创建:用户第一次访问SErvlet
Servlet被创建了几次执行一次,说明Servlet是单例的
何时销毁:当项目从服务器中移除的是或者关闭服务器的时候
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会被执行,任何一次请求服务器就都会创建一个新的线程访问Servlet中的service的方法,在service方法内部根据请求的方式的不同调用doxxx的方法,(get请求调用doGet,post请求调用doPost)当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会被执行
Servlet的相关的配置
启动时创建Servlet
Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行时Servlet的配置:在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup>--------传入正整数,整数越小,被创建的优先级就越高
url-pattern的配置
url-pattern配置方式共有三种:
完全路径匹配:以/开始
目录匹配:以/开始需要以*结束
扩展名匹配:不能以/开始以*开始的`
完全路径配置>目录匹配>扩展名匹配
开发中的路径的编写:
相对路径:都是需要找位置相对关系
绝对路径:不需要找位置相对关系
addHeader(String name ,String value);
addDateHeader(String name,long date);
addIntHeader(String name,int value)--------------针对一个key对应多个value的响应头
setHeader(String name ,String value);
serDateHeader(String name,long date);
setIntHeader(String name,int value)--------------针对一个key对应多个value的响应头
ServketContext对象
用来存取数据
setAttribute (String name,Obect object)
用来向ServletContext中存入数据
getAttribute (String name)
用来从ServletCContext中获取数据
removeAttribute(String name )
用来从ServletContext中移除数据
ServletContext的作用:
用来获得全局初始化参数
用来获得文件的MIME的类型
作为域对象存取数据
读取web项目的资源
ServletContext是一个域对象
作用范围:整个web工程
创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象
销毁:服务器关闭的时候或者项目从服务器中移除的时候
什么是会话:
用户打开一个浏览器访问页面.访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话
常见的会话技术:
Cookie:将数据保存到客户端浏览器
Session:将数据保存到服务器端
为什么使用会话技术:
私有的数据.购物信息数据保存在会话技术中
[Cookie技术的使用]
向浏器览保存数据:
HttpServletResponse有一个方法:
void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
有一个方法:
Cookie[] getCookies();
创建一个Cookie对象:
Cookie(String name ,Strign value);
[JSP的简单概述]
什么是JSP:
Java Servar Pages (Java服务器端页面).JSP=Java代码+HTML的元素+JSP内置东西
SUN公司为什么推出JSP动态网页开发技术:
SUN公司推出的Servlet技术进行动态网页开发.发现Servlet自身有不足没有办法与ASP,PHP技术竞争.想在动态网页中输出表单.在Servlet中获得PrintWriter out = response.getWriter();
out.println(“<form action=’’ method=’’>”);
out.println(“</form>”);
JSP的执行过程:
JSP会被翻译成Servlet编译成class进行执行的
JSP的嵌入Java代码:JSP的脚本元素
<%! %>:翻译成类中的成员部分,定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!
<% %>:翻译成类的service方法内部的内容,定义变量,定义类,直接写代码块.
<%= %>:翻译成service方法内部的out.print();
Cookie的常用API:
getName();
getValue();
setDomain(Strign domain);--设置Cookie的有效域名
setPath(String path);--设置Cookie的有效路径
setMaAge(int maxAge);--设置Cookie的有效时间
Cookie的分类有关:
会话级别的Cookie:默认的Cookie,关闭浏览器Cookie就会销毁
持久级别的Cookie:可以设置Cookie的有效时间,那么关闭浏览器Cookie还会存在.收到销毁持久性Cookie.setMaxAge(0)----前提是有效路径必须一致
|
|