cookie和session还有(request,response,servletContext)域对象;还有初始化参数servetConfig

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章