01Cookie方法
Cookie cookie = new Cookie(name,value):创建对象
获取name:cookie.getName();
获取value:Cookie.getValue();
响应给浏览器:
response.addCookie(Cookie);
request.getCookies();
02设置cookie存活的时间
sexMaxAge(秒) 持久化cookie
03:删除cookie,替换setManager(0);
04Session原理
01通过唯一的标识JeSessionId放入到cookie中存储,下次访问的时候携带cookie取出唯一的标识JessionId比较查找Session容器
05Session创建在服务器中,存储在服务器中
06:Session创建和销毁
request.getSession() Invalidate()销毁 getId()获取唯一的标识JeSessionId
09Session的其他常用Api
HttpServlet 作用 long getCreateTime() 返回的是一个时间戳 boolean is New() 判断当前是否是一个新的会话,是的返回true
Session域对象的Api(重要)
void SetAttribute(String name,Object value)向Session中存储数据 Object getAttribute(String name) 获取Session中的数据 Void RemoveAttruvbute(String name) 删除session中的数据
12:浏览器关闭后,session的持久化方案
抛出问题
我们之前讲解的时候发现tomcat在创建session之后,同时会创建一个会话级别的cookie,用来存储创建的session的唯一标识的JsesssionId然后将会话级别的cookie即唯一的标识JsessionId查找Session容器
由于Tomcat就会默认创建的Session属于会话级别的,那么浏览器已关闭Cookie就消失,Session并没有消失,因为Session和浏览器没有关系,依然存在,只是下次打开浏览器再次访问的时候找不到session,如果多次这样擦欧洲哦服务器会宕机
解决方法
持久化Session
持久化的步骤
01获取Session中的唯一标识JsESSionId 02创建Cookie,将唯一的标识存储到Cookie new Cookie("JessionId","id"); 03设置Cookie的存活时间,建议30秒 04将cookie响应给浏览器
小结
01:如果cookie禁止了,那么找不到Session了,我们此时可以使用重定向的方式在url后面拼接Session使用Session的使用方噶 response.encodeRediRectUrl(path); 使用超链接解决问题 resopnse.necodURL(path); 上述的做法在访问的路径后面添加JEssion
小结:
01禁用cookie的使用超链接解觉
方法: path = resounse.encodeURL(path); 禁用cookie使用重定向的问题 resonse.encodeRedirectURL(path); 03上述两种方式都是要在访问路径后面拼接SessionId http://localHost:8080/demo02Servlet;Jsesionied =365D6E4C4B80BDDE760818DFFC391EB 上述两种方式的区别 使用超链接:即使路径是错误的也会片接到Jsessioned 重定向:如果路径有错误就不会拼接jsessioned
10.总结servlet request response servletContext(域对象) servletConfig (初始化参数)cookie session
Servlet小结
实现Servlet的三种方式:
01自定义义实现servelt接口实现接口的所有抽象方法
public class HelloWorldServlet implement Servlet{}
02自定义类继承GeneratorServlet类重写servlet方法
public Class DemoServlet extends GeneratorServlet{}
03自定义继承HttpServlet重写doGet和doPast方法
public class Demo02Servlet extends HttpServlet{}
Servlet生命周期
就是Servet从生到死的过程
01servelet由谁创建
tomcat通过反射的技术创建,调用无参构造
02何时创建
第一次在浏览器访问的时候创建
03创建之后做了什么事
01:对象创建了之后立刻使用对象调用init方法初始化使用,只调用了一次
02:每次调用servelet都会执行一次Servlet方法,
03:关闭tomcat服务器之前使用Servlet对象调用destroy销毁方法,释放资源
servletConfig
01ServletConfig是一个接口
02tomcat服务器使用serveltConfig配置对象,该对象在初始化的期间将信息传递给Servlet.
01String getInitParameter(String name) 返回包含指定初始化参数的D 的String,如果参数不存在,则返回null 02:Enumeration 的形式返回servlet的初始化参数的名称,如果servlet没有初始化参数,则返回一个空的Enumeration.
04ServeltConfig属于接口,怎么获取 对象
01tomcat服务器的使用Servlet配置对,该对象在初始化期间将信息传递给Servlet.
01 String getInitParamter(String name)返回包含指定的初始化的值String,如果参数不存在返回null 02Enumerator的形式返回Servlet的初始化名称,如果servlet没有则返回一个空值
在Servlet的init方法中可以直接获取
public void init(ServletConfig serveltConfig){}
域对象:session request servletContext
01request:可以在服务器内部串数据
在一个Servlet中向request中存储数据,在其他servlet中可以获取request中的数据
注意 request作为域对象只能在一次请求的过程中使用
02ServletContext对象()
表示整个web项目的上下文对象属于全局对象,代表整个web西安航母
可以读取整个web项目的所有内容
tomcat启动时创建,tomcat关闭就消亡
ServletContext属于接口,不能直接创建对象,使用HTTPsERVLET的父类的
GeneratorServlet方法();
String getRealPath(String path)获取指定文件在Tomcat中的真实路径 String getMimeType(String file)获取指定的文件在Tomcat中的文件类型 例如.txt文件.doct文件.jpg等
域对象的方法如下
void setAttribute(String name,object 0);向域对象中存储数据 void getAttribute(String name)从域对象中获取setAttribute数值 coid RemoveAttribute(String name)从域对象中删除整体根据key删除
请求和转发
01使用HttpServletRequest的对象调用方法获取转发器 request.getRequestDispatcher(/path).forward(request,response);
重定向
response.sendRedirect("/path") 响应体 response.getWriter().print()字符流 response.getOutputStream().print()字节流
sql中插入两个以上的语句要加@param
//定义注册方法 @Insert("insert into user values(null,#{name},#{password})") void addUser(@Param("name") String username, @Param("password") String password);