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

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

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

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

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>

  

  静态包含和动态包含的区别

  静态包含:

  原理:先合并再翻译

  使用格式:<%@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应用中。

jsp指令和重定向的更多相关文章

  1. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  2. JSP6(JSP 指令与JSP 动作元素)

    一.JSP指令用来设置整个JSP页面相关的属性 指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开. JSP中的三种指令标签: Page指令 Page指令为容器提供当前页面的使用说明.一个JS ...

  3. 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)

    JSP原理: 1.    对于每个请求.jsp容器都会创建一个新的线程来处理它: 2.    Servlet容器载入jsp后转换成的servlet(.class文件)是常驻内存的,所以对应速度一般比較 ...

  4. jsp jsp指令

    JSP 由HTML和java语句拼接而成的文本,后缀名为.jsp 1.Jsp翻译成servlet:先翻译,Tomcat将翻译后的文件放置在安装目录下(所有JSP页面本质上就是Servlet程序) 2. ...

  5. Java开发之JSP指令

    一.page指令 page指令是最常用的指令,用来说明JSP页面的属性等.JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里.但需要注意的是,无论在哪个page指令里的属性,任何pa ...

  6. JavaWeb---总结(十六)JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  7. JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  8. javaweb学习总结(十六)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  9. java web 学习十六(JSP指令)

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

随机推荐

  1. WordPress 如何搜索文章内容而不搜索页面

    如何在WordPress 中只搜索指定的文章类型?在http://www.wpbeginner.com上了解到通过WP提供的钩子"pre_get_posts"方法可能实现 该钩子方 ...

  2. ntpdate设置

    ntpdate设置 学习了:https://www.cnblogs.com/ibnode/p/3573302.html http://www.blogjava.net/spray/archive/20 ...

  3. [Node.js]33. Level 7: Persisting Questions

    Let's go back to our live-moderation app and add some persistence, first to the questions people ask ...

  4. (LeetCode 41)First Missing Positive

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...

  5. DispatcherTimer

    1.IsEnabled 表示计时器是否已经启动. 2.DispatcherTimer处于当前线程的管理,不会新建一个线程专门用于计时操作,也就是说,当前线程可能会阻塞计时器.因此,Dispatcher ...

  6. ZH奶酪:PHP中添加HTML代码的三种方法

    php中添加HTML代码,就是php类型的文件中添加html代码~ 第一种是在HTML中加PHP. 大段大段的html代码中,在各个需要执行php的地方<?php .... ?> 比如 l ...

  7. ZH奶酪:PHP如何判断提交表单中多个复选框是否选中?

    1.name命名为数组,例如“select[]” 2.例如这样选: 3.在后台使用$_POST['select']得到数组 4.然后就可以看到得到的数组了 原文链接:http://www.zhihu. ...

  8. 【树莓派】制作树莓派所使用的img镜像(二)

    树莓派制作的镜像,需要如何使用,这里直接引用目前树莓派官方的文章,不再重复描述: 参考:http://shumeipai.nxez.com/2013/08/31/usb-image-tool.html ...

  9. js随机码之乱序数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 阿里云ESC搭建SVN服务端

    CentOS7)下yum命令快速安装svn服务端,学习在思考中独孤中度过,在孤独中进取! 01.SVN服务的安装(subversion) 02.ESC安全组策略 1.在线安装svn服务 $ sudo  ...