xml:
1.xml元素定义
区分大小写、必须根元素、名称不带空格冒号,名称开头不能是xml/XML、不能以数字开头
标签不能混乱嵌套
有自闭和标签
又开始了必须要有结束
2.xml解析:sax和dom解析的区别
dom解析是将文档全部加在到内存中,变成一个树形结构,可以方便的对元素进行增删改操作,
缺点是文档过大时占用内存过多,可能会造成内存溢出。
sax解析是边读边解析,将文档一部分一部分地加载到内存,不会占用太多内存,
缺点是不能对文档的标签进行增删改的操作。
servlet:
1、servlet的生命周期
1 什么是生命周期:一个人从出生到死亡
2 servlet的生命周期:从servlet创建到servlet销毁的过程
3 在servlet接口里面有五个方法,其中有三个方法是与生命周期相关的方法
(1)init方法,在servlet创建时候执行这个方法,执行一次,servlet在第一次访问时候创建
(2)service方法,在每次访问servlet时候会执行这个方法,执行多次
(3)destroy方法,销毁servlet时候执行这个方法,执行一次
2、url-pattern的配置
2.1 配置有三种方式
第一种方式:完全路径匹配
(1)写法 : /aa /hello
第二种方式:目录匹配
(1)写法: /aa/*
第三种方式:扩展名匹配
(1)写法: *.do *.action
优先级
完全路径匹配 > 目录匹配 > 扩展名匹配
3、重定向和转发
3.1 重定向
(1)使用的是客户端路径
(2)重定向请求两次,使用的是客户端路径,携带项目名称 ,比如 /day07/demo3
3.2 转发
(1)使用的是服务端路径
(2)转发请求一次,使用的是服务器端路径,不需要携带项目名称 , 比如 /demo4
4.重定向和转发的区别 (重要)
(1)重定向
= 重定向请求两次,请求的地址带项目名称
= 302+Location实现重定向的操作
= response.sendRedirect("路径 带项目名称");
(2)转发
= 转发请求一次,路径不需要带项目名称(在服务器内部进行操作)
= request.getRequestDispatcher("转发的路径 不带项目名称").forward(request, response);
(3)重定向:从一个网站到另外的一个网站
转发:请求的过程中需要携带数据操作
public class CodeServlet extends HttpServlet {
/**
* 实现验证码的操作
第一步:生成图片
第二步:生成随机的数字和字母
第三步:把数字和字母画到图片上
第四步:把图片显示到页面上
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//生成图片
int width = 150;
int height = 60;
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//得到画笔
Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
//生成四个随机的数字和字母
String words = "asdfghjklqwertyuiopzxcvbASDFGHJKLQWERTYUIOPZXCVB1234567890";
//创建Random对象
Random r = new Random();
int x = 25;
int y = 25;
//设置颜色
g2d.setColor(Color.YELLOW);
//设置字体的样式
g2d.setFont(new Font("宋体",Font.BOLD,25));
//rotate(double theta, double x, double y)
//弧度=角度*3.14/180
for(int i=1;i<=4;i++) {
int idx = r.nextInt(words.length());
//根据位置得到具体的字符
char ch = words.charAt(idx);
//旋转+- 30度
int jiaodu = r.nextInt(60)-30;
double hudu = jiaodu*Math.PI/180;
//旋转的效果
g2d.rotate(hudu, x, y);
//把字符画到图片上
g2d.drawString(ch+"", x, y);
x += 25;
//转回去
g2d.rotate(-hudu, x, y);
}
//生成三条干扰线
g2d.setColor(Color.green);
int x1,y1,x2,y2;
for(int m=1;m<=3;m++) {
x1 = r.nextInt(width);
y1 = r.nextInt(height);
x2 = r.nextInt(width);
y2 = r.nextInt(height);
g2d.drawLine(x1, y1, x2, y2);
}
//把图片显示到页面上
ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
}
/**
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
cookie和session
1.会话就是:打开浏览器,进行网页的浏览,到关闭浏览器的过程,称为一次会话
会话技术用两种技术
(1)cookie技术:客户端的技术
(2)session技术:服务器端的技术
2.销毁持久化的cookie
第一步:创建一个和要销毁cookie项目名称的cookie new Cookie("name","");
第二步:设置cookie有效时长 setMaxAge(0)
第三步:设置有效路径 ,要和销毁的cookie的路径一致 setPath("/")
第四步:把cookie回写到浏览器中
3.session的创建和销毁(清空购物车)
3.1 session的创建
(1)使用request里面方法 getSession()可以创建session对象,名称是HttpSession
3.2 session的销毁
有三种方式
(1)非正常关闭服务器
(2)session默认的过期时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
(3)调用session里面方法 invalidate()
1.xml元素定义
区分大小写、必须根元素、名称不带空格冒号,名称开头不能是xml/XML、不能以数字开头
标签不能混乱嵌套
有自闭和标签
又开始了必须要有结束
2.xml解析:sax和dom解析的区别
dom解析是将文档全部加在到内存中,变成一个树形结构,可以方便的对元素进行增删改操作,
缺点是文档过大时占用内存过多,可能会造成内存溢出。
sax解析是边读边解析,将文档一部分一部分地加载到内存,不会占用太多内存,
缺点是不能对文档的标签进行增删改的操作。
servlet:
1、servlet的生命周期
1 什么是生命周期:一个人从出生到死亡
2 servlet的生命周期:从servlet创建到servlet销毁的过程
3 在servlet接口里面有五个方法,其中有三个方法是与生命周期相关的方法
(1)init方法,在servlet创建时候执行这个方法,执行一次,servlet在第一次访问时候创建
(2)service方法,在每次访问servlet时候会执行这个方法,执行多次
(3)destroy方法,销毁servlet时候执行这个方法,执行一次
2、url-pattern的配置
2.1 配置有三种方式
第一种方式:完全路径匹配
(1)写法 : /aa /hello
第二种方式:目录匹配
(1)写法: /aa/*
第三种方式:扩展名匹配
(1)写法: *.do *.action
优先级
完全路径匹配 > 目录匹配 > 扩展名匹配
3、重定向和转发
3.1 重定向
(1)使用的是客户端路径
(2)重定向请求两次,使用的是客户端路径,携带项目名称 ,比如 /day07/demo3
3.2 转发
(1)使用的是服务端路径
(2)转发请求一次,使用的是服务器端路径,不需要携带项目名称 , 比如 /demo4
4.重定向和转发的区别 (重要)
(1)重定向
= 重定向请求两次,请求的地址带项目名称
= 302+Location实现重定向的操作
= response.sendRedirect("路径 带项目名称");
(2)转发
= 转发请求一次,路径不需要带项目名称(在服务器内部进行操作)
= request.getRequestDispatcher("转发的路径 不带项目名称").forward(request, response);
(3)重定向:从一个网站到另外的一个网站
转发:请求的过程中需要携带数据操作
public class CodeServlet extends HttpServlet {
/**
* 实现验证码的操作
第一步:生成图片
第二步:生成随机的数字和字母
第三步:把数字和字母画到图片上
第四步:把图片显示到页面上
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//生成图片
int width = 150;
int height = 60;
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//得到画笔
Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
//生成四个随机的数字和字母
String words = "asdfghjklqwertyuiopzxcvbASDFGHJKLQWERTYUIOPZXCVB1234567890";
//创建Random对象
Random r = new Random();
int x = 25;
int y = 25;
//设置颜色
g2d.setColor(Color.YELLOW);
//设置字体的样式
g2d.setFont(new Font("宋体",Font.BOLD,25));
//rotate(double theta, double x, double y)
//弧度=角度*3.14/180
for(int i=1;i<=4;i++) {
int idx = r.nextInt(words.length());
//根据位置得到具体的字符
char ch = words.charAt(idx);
//旋转+- 30度
int jiaodu = r.nextInt(60)-30;
double hudu = jiaodu*Math.PI/180;
//旋转的效果
g2d.rotate(hudu, x, y);
//把字符画到图片上
g2d.drawString(ch+"", x, y);
x += 25;
//转回去
g2d.rotate(-hudu, x, y);
}
//生成三条干扰线
g2d.setColor(Color.green);
int x1,y1,x2,y2;
for(int m=1;m<=3;m++) {
x1 = r.nextInt(width);
y1 = r.nextInt(height);
x2 = r.nextInt(width);
y2 = r.nextInt(height);
g2d.drawLine(x1, y1, x2, y2);
}
//把图片显示到页面上
ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
}
/**
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
cookie和session
1.会话就是:打开浏览器,进行网页的浏览,到关闭浏览器的过程,称为一次会话
会话技术用两种技术
(1)cookie技术:客户端的技术
(2)session技术:服务器端的技术
2.销毁持久化的cookie
第一步:创建一个和要销毁cookie项目名称的cookie new Cookie("name","");
第二步:设置cookie有效时长 setMaxAge(0)
第三步:设置有效路径 ,要和销毁的cookie的路径一致 setPath("/")
第四步:把cookie回写到浏览器中
3.session的创建和销毁(清空购物车)
3.1 session的创建
(1)使用request里面方法 getSession()可以创建session对象,名称是HttpSession
3.2 session的销毁
有三种方式
(1)非正常关闭服务器
(2)session默认的过期时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
(3)调用session里面方法 invalidate()