jsp指令和重定向

1 声明指令
  格式:<%!声明变量或函数 %>html

  做用:会生成一个成员变量或成员方法,也可使用访问修饰符修饰,public,private,protectedjava

 

2 注释指令
  格式:<%--注释内容 --%>web

  做用:会把jsp页面内容注释掉,当在页面中想要注释掉一些代码时须要使用这种方法,而不能使用html形式的注释。由于html格式的注释不会注释掉代码。express



3 输出jsp表达式
  格式:<%= 表达式 %>

4 jsp脚本
  <%脚本内容%>

5 jsp编译指令
  <%@ 编译指令名 属性名="属性值"...%>数组

 

5.1 page指令浏览器

        <%@page
        language="Java"
        extends="package.class"
        import="package.class|package.*,..."
        session="true|false"
        buffer="none|8kb|size kb"
        autoFlush="true|false"
        isThreadSafe="true|false"
        info="text"
        errorPage="relativeURL"
        contentType="mimeType;charset=characterSet"|"text/html;charSet=UTF-8"
        pageEncoding="utf-8"
        isErrorPage="true|false"
        %>

 

5.2 include指令
  静态的include编译指令<%@include file="relativeURLSpec"%>
    注意:静态包含会将被包含页面的编译指令也包含进来,若是两个页面的编译指令冲突,那么页面就会出错。

  动态的include编译指令<jsp:include>tomcat

  

  静态包含和动态包含的区别服务器

  静态包含:cookie

  原理:先合并再翻译session

  使用格式:<%@include file=""%>

  参数传递:不能够向目标地址传递参数  

 

  动态包含:

  原理:先翻译再合并

  使用格式:<jsp:include page="/common/header.jsp"></jsp:include>

  参数传递:能够经过参数传递向目标地址传递参数

 

 

6 jsp7个动做指令
  jsp:forward: 执行页面转向,将请求的处理转发到下一个页面
  语法:

    jsp:forward:      执行页面转向,将请求的处理转发到下一个页面
        语法:
            <jsp:forward page="{relativeURL|<%=expression%>}"/> 或者
            <jsp:forward page="{relativeURL|<%=expression%>}">
                {<jsp:param .../>}
            </jsp:forward>
            
        forwad指令转发请求时,客户端的请求参数不会丢失。客户端的url也不会改变,而内容变成了指定的转向页面。
        实际上forwad指令并无从新向新页面发送请求,只是采用了新页面来对用户生成响应,请求依然是一次请求,
        因此请求参数、请求属性都不会丢失
        
    jsp:param:        用于传递参数,必须与其余支持参数的标签一块儿使用
    jsp:include:      用于动态引入一个jsp页面
        将目标页的body内容插入到原来页面,与forward的区别是:forward将目标页替换掉原来页面
    jsp:plugin          用于下载JavaBean或Applet到客户端执行
    
    jsp:useBean          建立一个JavaBean的实例
        语法:<jsp:useBean id="name" class="classname" scope="page|request|session|application" />
        id是JavaBean实例名,class是JavaBean实现类,scope是JavaBean做用范围
        
    jsp:setProperty      设置JavaBean实例的属性值
        语法:<jsp:setProperty name="BeanName" property="propertyName" value="value"/>
        name是JavaBean实例名,property是属性名,value是属性值
        
    jsp:getProperty      输出JavaBean实例的属性值
        语法:<jsp:getProperty name="BeanName" property="propertyName"/>

 

7 jsp的config对象,若是但愿jsp页面能够获取web.xml配置文件中的配置信息,则必须经过为该jsp配置的路径来访问该页面,才可让配置参数起做用。

 

8 response对象的做用

  1) 获取输出流,进而输出一些图片、pdf文档

  2) 重定向,response.sendRedirect()

  3)  设置客户端cookie,

  

  添加cookie的方法

    《1》生成cookie对象,Cookie构造器,Cookie(String name,String value)

    《2》设置Cookie对象的生命周期setMaxAge()单位为秒

    《3》向客户端写cookie,response.addCookie()

  读取cookie方法,使用request对象的getCookies()会返回全部Cookie对象组成的数组。遍历全部便可找到。cookie对象有getName(),getValue()两个方法。

 

  注意cookie对象不能够存放中文,若是想要存放中文须要使用java.net.URLEncoder.encode(),java.net.URLDecoder.Decode()两个方法。

 

9 jsp中重定向和转发(forward)区别

  forward

    1) 执行forward后,依然是上一次请求

    2) forward目标页能够访问原请求的请求参数,由于依然是同一次请求,全部原请求的请求参数、request范围的属性所有存在(能够经过request保存共享数据)

    3) 地址栏里的请求URL不会改变

    4) 只能在当前应用内部进行转发,即转发不到应用外部资源

  response.sendRedirect()

    1)  执行redirect后生成第二次请求

    2) redirect目标页不能访问原始请求的请求参数,由于是第二次请求了,原始请求的请求参数、request范围属性也会所有丢失(不能够经过request对象共享数据)

    3) 地址栏改成重定向的目标URL,至关于在浏览器地址栏里输入新的URL后按回车键。

    4) 能够重定向到当前应用外部,例如百度网站上。sendRedirect("www.baidu.com")

  

  若是想要在servlet的响应中设置浏览器隔一段时间再重定向, 可使用设置响应头信息的方式。好比:response.setHeader("refresh", "3;url=index.html");

  就会在响应中停3秒后跳转到index.html页面上。若是不添加url则会定时刷新当前页面。

 注意:在 java web 应用中若是使用到 url 路径一概使用绝对路径比较好。其中开始的"/"表示的含义有所不一样

若是URL是让浏览器使用的,URL的开头的“/”表示 webapps 目录下,若是是让服务器使用"/" 表示当前 web app 的根目录。

“.”表示相对路径,就是 java 命令的运行目录。在java web项目中,“.”表示服务器的bin目录,例如tomcat就是在 tomcat/bin 目录中。

对于 java web 中的资源文件。src目录下的文件在java web 目录下的文件会转移到 WEB-INF/classes 目录下。 

 

10 session对象

  session对象是一个经常使用的对象,表明一次用户会话。含义是从客户端浏览器链接服务器开始,到客户端浏览器与服务器断开链接为止,这个过程就是一次会话。

  session一般用于跟中用户会话信息,好比判断是不是登陆用户、购物车应用

  session范围的属性能够在多个页面跳转之间共享,一旦关闭浏览器,即session结束。

注意session的属性值须要是可序列化的java对象。

 

11 jsp中9个内置对象,在servlet中获取方法?

  application:javax.servlet.ServletContext的实例,表明jsp所属web应用自己,经常使用方法getAttribute(),setAttribute(),getInitParameter();在servlet中使用getServletConfig().getServletContext()方法获取。

  

  config:javax.servlet.ServletConfig的实例,表明jsp的配置信息,经常使用方法:getInitParameter(),getInitParameterNames();在servlet中使用getServletConfig()获取。

 

  exception:java.lang.Throwable的实例,表明页面中的异常和错误。只有页面是错误处理页面,即编译指令page的isErrorPage为true时,该对象才可使用。经常使用方法是getMessage(),printStackTrace().

 

  out:javax.servlet.jsp.JspWriter的实例,表明jsp页面输出流,用于输出内容,造成html页面。在servlet中使用PrintWriter out = response.getWriter();来获取

  他们之间的区别是jspWriter 是一个带缓冲的输出,而PrintWriter对象是不带缓冲的输出。能够经过page指令设置buffer的大小。

 

  page:表明页面自己,是Servlet实例。在Servlet中就是this。

 

  pageContext:javax.servlet.jsp.PageContext的实例,表明jsp页面上下文,能够访问页面中的共享数据。经常使用方法有getServletContext(),getServletConfig()等。

  做用:1)能够获取其余8个内置对象,应用场景---常常应用于自定义标签中

    2) 是一个域对象,用于共享数据

 

  session:javax.servlet.http.HttpSession实例,表明一次会话。经常使用方法getAttribute(),setAttribute()。在servlet中使用request.getSession();来获取。

 

  域对象有4个:page,request,session,context

  page:

  做用范围:在当前页中

 

  request:

  做用范围:在同一次请求中

 

  session:

  做用范围:同一次会话中。一次会话,是从打开浏览器访问一个web应用,会话开始,到关闭浏览器,会话结束。

 

  context

  做用范围:同一个web应用中。

相关文章
相关标签/搜索