带回sessionid , 不同的浏览器访问,都会开辟不同的空间.
6.session 是一个域对象,session什么创建, 服务器第一次调用getsession,什么时候销毁,关闭浏览器,只会销毁
保存sessionid的cookie销毁, 下次打开浏览器,就会创建一个新的session .
销毁: 三种情况销毁session
1.session过期,默认过期时间为30分钟
2.非正常关闭服务器,如果正常关闭session序列化到硬盘
3.手动调用session.invalidate();
作用范围: 多次请求(一次会话);
servlet
servlet: 就是一个运行在web服务器上的小的java程序,用来接受和响应从客户端发送来的请求,
通常使用HTTP协议;
1.用来处理从客户端浏览器发送的请求,并且可以对请求做出反应.
使用servlet:
1.编写一个类实现servlet接口
2. service用来处理客户的请求,并作出响应的方法;
向页面输出的方法: response.getwriter.pintln();
3.配置web.xml 中 <servlet> <servlet-name> test1 <servlet-class>包名+类名
<servlet-mapping> <servlet-name>test1 <url-pattern>/访问路径
2.使用servletRequest从浏览器接受参数
1.request.getparameter(string name); 用于接受一个name对应一个值的数据 返回字符串;
获得value的值
2.getparametervalues(string name); 用于接受一个名称对应多个值的数据 返回数组
3. getparameterMap(); 用于接收表单中的所有数据,map的key是表单提交的参数名称,value是提 交参数的值 key是name,value 是value值,
3.servlet的访问流程:
浏览器输入地址------->web.xml中配置信息-------->找到对应的class类执行service方法
4.用2中的1方法得到的字符串转数字 Integer.parseInt(字符串);
5.最后的登陆案例是在注册页面转发到在xml中配置的访问地址.然后xml在找到servlet实现类里面,然后 在类里面获取表单提交数据,
1. servlet 实现关系
servlet ---> GenericServlet实现类 通用的servlet ---- > HttpServlet 实现类中只有doge()
和dopost()方法.在第一个实现类中根据不同请求方式,调用不同方法,目前只有get和post请求.
2.dbutils的包
3.servlet的生命周期; 何时创建: ,只要任何一次客户端向服务器发送请求,就会执行servlet;
servlet被构造的时候,init方法就会执行. 只被创建一次,在客户的第一次请求的时候,
说明servlet是单例的
service刷新一次就请求一次,可执行多次
servlet被销毁的时候,destroy方法就会执行. 在服务器关闭的时候或项目移除的时候,才会执行
说明: 用户第一次访问servlet的时候,服务器会创建一个servlet的实例,那么servlet的init方法就会执行,任何一次请求服务器都会创建一个新的线程访问servlet中的service方法,在service方法内部根据不同的请求方式调用不同的doXXX的方法, 在服务器关闭的时候或项目移除的时候,destroy才会执行
4.servlet的相关配置
1. 服务一启动就创建servlet,在web.xml中<servlet></servlet>配置
<load-on-startup>2<load-on-startup>传入正整数,整数越小,被创建优先级越高,不要用1;服务器默认1
2.url-pattern的配置:
1.完全路径匹配 : 以/开始 例如: /aaa/servletDemo5;
2.目录匹配 : 以/开始 需要以*结束 例如 /*, /aaa/*, /aaa/bbb/*
3.扩展名匹配 : 不能以/开始, 以*开始, 例如: *.do , *.action , *.jsp;
3.如果全配置了, 从123依次按顺序找,在哪个找到就执行,注意只执行一次 aaa.do是执行第2个
5. 开发中路径的编写; 找到编写的资源
1.相对路径: 都是需要找位置相对关系, ../ 上一级 , ../../上两级 依次推理;(不好找)
2.绝对路径: 不需要找相对关系, 以/开始, 需要其他服务器的时候, 带协议的 "http://localhost/day20/servle6, 访问自己服务器可以不带协议: /day20/servlet6
1.客户端路径: 一定要加工程名 例如:上面例子;
2.服务器路径: 不需要加工程名 例如:从servlet5中找servlet6 直接写 /servlet6;
6.登陆成功5秒跳转
使用和http中refresh刷新头.
1.用响应response中各种头方法,addHeader();
addDateHeader(); addIntHeader(); 一个key对应多个value的响应头
setHeader(string name,string value);
setDateHeader(string name , long date),setIntHeader(); 一个key对应一个value的响应头
2. 解决中文乱码问题;
responser.setcontentType("text/html;charset=UTF-8");
3. 5秒刷新
response.setHeader("refresh","5,url=""");
4.设置重定向 location
response.setStatus(302);
response.setHeader("Location","url=");
<meta http-equiv="Refresh" content="5,url=">
7.记录网站登陆成功的人数;
1. GenericServlet类中获取servlecontext对象,作用是:存取数据,存的数据都是有一定作用范围 为域对象;
remove....()
get.......();
setAttribute();用来向servletcontext中存储数据.
2.配置启动时加载,调用init(){int count=0;存入域中} 然后在get中count++,在存入域中;
3.在转发的类中获取到域中数据写入到网页中;
8.servletconfig : 获得servlet的配置信息;
getServletName() ; 获得servlet在web.xml配置的name;
getInitParameter(); 获得servlet的web.xml中初始化参数;
Enumeration getinitparameterNames(); 获得所有servlet的初始化参数的名称;