jsp指令和重定向
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指令和重定向的更多相关文章
- JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象
1 什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的 ...
- JSP6(JSP 指令与JSP 动作元素)
一.JSP指令用来设置整个JSP页面相关的属性 指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开. JSP中的三种指令标签: Page指令 Page指令为容器提供当前页面的使用说明.一个JS ...
- 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)
JSP原理: 1. 对于每个请求.jsp容器都会创建一个新的线程来处理它: 2. Servlet容器载入jsp后转换成的servlet(.class文件)是常驻内存的,所以对应速度一般比較 ...
- jsp jsp指令
JSP 由HTML和java语句拼接而成的文本,后缀名为.jsp 1.Jsp翻译成servlet:先翻译,Tomcat将翻译后的文件放置在安装目录下(所有JSP页面本质上就是Servlet程序) 2. ...
- Java开发之JSP指令
一.page指令 page指令是最常用的指令,用来说明JSP页面的属性等.JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里.但需要注意的是,无论在哪个page指令里的属性,任何pa ...
- JavaWeb---总结(十六)JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- javaweb学习总结(十六)——JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- java web 学习十六(JSP指令)
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
随机推荐
- Oracle存储过程生成日期维度
在数据仓库的创建过程中,往往需要创建日期维度来为以后的数据分析来服务. 方面从多个日期角度: 如:年-月-日,年-季度-月-日,年-周-日 创建表的脚本如下(存储过程的创建过程中有一步操作是向time ...
- [Angular-Scaled web] 1. Architecture and file structure
We build a project according to its features or based on simple MVC structure. Put all controller in ...
- ZH奶酪:PHP安装扩展imagick
明明几个简单命令就能搞定,但是按照网上的方法就是不行,弄了一天,最后发现只需要两行命令,而且不需要修改什么php.ini: sudo apt-get install php5-imagick sudo ...
- Shell或notepad连接虚拟机操作
首先在linux终端中查看自己的ip:ifconfig -a 一.Xshell的配置如下: 上图中: 处填写的是昵称,方便记住这个会话连接的是哪个系统. 要选择SSH,因为安装的是OpenSSH 处填 ...
- TP框架中的A方法和R方法
ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...
- PHP 循环
PHP 中的循环语句用于执行相同的代码块指定的次数. 循环 在您编写代码时,您经常需要让相同的代码块运行很多次.您可以在代码中使用循环语句来完成这个任务. 在 PHP 中,我们可以使用下列循环语句: ...
- plsql 连接oracle数据库的2种方式
plsql 连接oracle数据库的2种方式 CreationTime--2018年8月10日09点50分 Author:Marydon 方式一:配置tnsnames.ora 该文件在instan ...
- SpringMVC之ModelAndView的用法(转)
原文地址:https://blog.csdn.net/qq30211478/article/details/78016155 (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该 ...
- centos7编译python3.6与原有的2.7共存
在某些场景下我们可能需要python2.7和python3这两个版本进行共存,我在工作中也遇到过这样的问题,所以今天来总结下我的安装过程, 我的是用源码包安装的,安装的是python3.6的版本. 安 ...
- 文本挖掘之文本聚类(OPTICS)
刘 勇 Email:lyssym@sina.com 简介 鉴于DBSCAN算法对输入参数,邻域半径E和阈值M比较敏感,在参数调优时比较麻烦,因此本文对另一种基于密度的聚类算法OPTICS(Order ...