jsp小结

一,会话跟踪

|-- Session: 

 request.getSession(boolean param) 

Param默认为true : request中得到session,如果没有就自己创建一个

    为false:不会自己创建

常用的方法:

.setMaxInactiveInterval();

.getId();

.isNew();

.setAttribute( key ,value);

|--Cookie

Cookie cookie = new Cookie( key, value);//这里new一个Cookie就要对应相应的键值对

....

Response.addCookie(cookie);

常用的方法:

.setMaxAge(age);

.

|--url重写

<a href="${ pageContext.request.contextPtath }/文件名">以后一般用这种链接</a>

requet.getContextPath()//是得到哦工程名,但是在EL表达式中要request.contextpath

|--隐藏表单域

<input type=hidden >

二,servletAPI

|--实现servlet

javax.servlet.Servlet 接口

javax.servlet.GenericServlet 抽象类(跨协议)

java.servlet.http.HttpServlet 抽象类(专门协议)

|--servlet的生命周期

实例化(构造方法)---> 初始化(init--> 服务。。。--> 销毁

|--

javax.servlet.ServletRquest 接口(跨协议,父)

javax.servlet.ServletResponse 接口 (跨协议,父)

javax.servlet.HttpServletRequesst接口

javax.servlet.HttpServletResponse接口

javax.servlet.ServletConfig (接口) ------getServletContext()

三,九大隐式对象

pageContext

javax.servlet.jsp

 pageContext

 抽象类

request

javax.servlet.http.HttpServletRequest

HttpServletRequest

 接口

response

javax.servlet.http.HttpServletReponse;

HttpServletResponse

 接口

session

javax.servlet.http.HttpSession

HttpSession

 接口

application

javax.servlet

ServletContext

 接口

config

javax.servlet

ServletConfig

 接口

out

javax.servlet.jsp

jspWriter

抽象类

page

java.lang.Object

exception

java.lang.Throwable

接口

主要记住pageContext,request,response,session,application

|-- pageContext (这里是隐式对象,不要跟四大范围中的page混淆了)

setAttribute( param1 , param2 , param3 param3可以指定是在四大范围中的哪个范围类:如; pageContext.setAttribute("name",name,PageContexxt.REQUEST_SCOPE);

|--response

response设置头信息

response.setHeader("refresh","10;url");

response 添加头信息:

response.addHeader("pragma","no-cache");

  response.addHeader("cache-control","no-cache");

  response.addHeader("expires","0");

|--session 

session 失效 ,注销

 void

invalidate()
          Invalidates this session then unbinds any objects bound to it.



|-- application 

getServletContext() 方法就是得到application对象,这个对象只允许存在一个

重要的方法:getRealPath();------在上传文件和流的读写的时候很有用,牢记;

|--config

getServletConfig()

|--  javax.servlet.http.Cookie 

   

javax.servlet.ServletContext  (上下文)

四,四大作用域

pageContext (javax.servlet.jsp)

request (javax.servlet.http.HttpServlet)

session  (javax.servlet.http.session)

application (javax.servlet.ServletContext)

五,重定向与转发

转发:request.getRequestDispatcher("/....j").forward(request , response);

重定向:response.sendRedirect(".....");

区别:1,转发是一次请求,重定向是二次请求

  2,转发中带requestresponse都是同一个,而重定向不是的

  3,转发的地址栏不变,重定向的地址栏改变

  4,转发只能在同一个服务器中,而重定向可以到不同的服务器中去

想用重定向:

1,想改变地址栏  2,想跨服务器

六,jsp的生命周期

转译                编译

.jsp ---------- > servlet(.java) -------------> . class ------>实例化.初始化.服务....--.销毁

七,无缓存

jsp页面中:

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="on-cache">

<meta http-equiv="expires" content="0">

servlet类中:

response.addHeader("pragma","no-cache");

response.addHeader("cache-control","no-cache");

response.addHeader("expires","0");

八,静态包含和动态包含的区别:

静态包含:<%@include  file=" "%>

动态包含:<jsp:include  page = " ">

区别:

静态包含在转译的时候就被包含,而且会把被包含的文件的代码全部写到包含的文件中

,有多少个页面包含了那个文件,那个文件就会被转译多少次,所以在work目录下会看到每个静态包含的页面都会生成两个.java文件和两个.jsp文件,因为是在转译的时候被包含

动态包含是在编译的时候被包含,相当于调用被包含的文件,被包含的文件只会被转译一次,不会在work目录下生成多个.java文件

你可能感兴趣的:(jsp小结)