1.Jsp语法
1.1 <%@> 编译指令
1.2 脚本语法
1.3 动作语法<JSP:xx>
2.
2.1java comments <%-- --%>
不会发送到客户端
2.2<!-- --> html comments
<!---<%=new java.util.date%>->
会将表达式结果发送到客户端。
表达式不用加分号!
3.编译器指令
包含指令:<%@include file="" %> 页面包含另外一个页面
页面指令:<%@Page %>
<%@page language="java" import="java.util.*,java.io.×" pageEncodeing="UTF-8"%>
4.声明? 为什么要声明呢? 脚本段不可以 么?
<%! int a= 3;> <%=a%><br> <%=a--%> 刷新变量变!?不对呀 每个对象访问页面的对象不一样呀!
<% int b= 3; %><%= b%><%=b--%> 不变!
注:转换成serverlet
a 为成员变量
b 为方法变量 get post
每次访问服务器产生一个线程执行 get\post 方法,结果一样。成员变量不会初始化!
serverlet是单实例的。
5.java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* 默认导入jsp中
6.内置对象 服务创建好了后帮你自动创建。 request
7. test .jsp <%JSP forward=test 2 .jsp ''%> 实际显示test2.jsp 页面了,test.jsp 后的任何代码不会再执行了。
8.<jsp:include> 和 @include 相比可以发送参数。
9.内置对象 9 个 都是有servlet中相应类的
request、
response、 比较底层,下载时会用,一般用out
pageContext、getAttribute 容器一般经常用它,我们很少用
session、
application、out、
config、获取serverlet 初始化对象
page、 代表servlet 服务器使用
exception、只有在<@page isErrorPage=“true” > 中使用
request session application
V:request 的方法
1.request getAttribute setAttribute 都是成对出现 服务器内部处理
2.getParameter 是客户端交互用,无setParameter 参数
V:request session application 范围
V:<jsp:forward > serverlet代码实现!
PageContext. forward 方法实现RequestDispatcher.forward
V:application getRealPath(); 绝对路径
V:session 比较耗资源,一般就登陆用,可以用 hiden 完成向导式注册!
v:hidden value 放ID, 更新信息。
v:firebug 选中,修改页面元素。
V:httpServletResponse.sendRedirect / 和 非/ localhost:8080/ / v:容器的根路径不是应用的根路径。
v:通过 firebug转发 和 重定向的区别.
转发:不通过客户端
重定向:通知客户端,立刻访问另外一个链接。 sendRedirect(http://ddd)
request 转发requestDispatcher
response重定向 sendRedirect
v:document.getElementByName
document.getElementById
v:java bean
规范:1.public 类 2.无参构造方法 3.set get
使用 1.导入 <%@page …… import= "" %> 2.声明 <jsp:useBean id="person" class = ""> 3. <jsp:getproperty property="age" name = "person">
<jsp:setproperty property="age" name = "person" value = "10" >
<jsp:setproperty property="age" name = "person" param = "hellowword" > 动态赋值 ?hellowword=10
scope :page request session application
v:请求转发用法
v:jfree chart
v:cookie
1.部分内容在jsp里
2.声明周期,
init,service,destroy
3.serverlet容器会将sessionId做为cookie保存在用户浏览器里。
每次客户发出http请求,serverlet容器会从httpRequest中获取sessionId
从而获取httpSession。
getId();
ivaliate();失效
isNew();第一次访问true
setMaxInactiveInterval();最大不活动时间
4.<session_config>默认30分钟。
<session-timeout>30</session-timeout>
5.默认jsp支持session <%@page session="false"%>
6.过滤器减少session在每个页面的验证。。。
在调用serverlet前可以修改请求
在调用serverlet后可以修改response
7.v init()
doFilter(request,response,filterchain)
filterchain 多从过滤。
注意列外页面要过滤,否则循环重定向。。。
filter 还是比较重要的。。。
username = username.replace("zhang","*****")
串联过滤器:同一过滤原则(包含也可),按照web.xml中的顺序来过滤。。。。
filter 启动失败导致整个web 应该启动不了。。。
可以设置字符编码 request.setE code
V:listener 观察者模式 重要。。。。
定义在web.xml中
ServerletContextListener filter 之前启动,一般启动框架用。。。
ServerletContextAttributeListener
httpSessionListener
httpSessionAttributedListener
EL
${expr}
输出:\${expr}
两种方式:
tomcat 可以配成不支持el
tomcat 中有实例, manager页面
--客户化jsp标签
步骤:
1.创建标签处理类
v:tagsupport
:doStartTag(),与到起始标签
VV:返回Tag.SKIP_BODY 表示标签内容被忽略 Tag.EVAL_BODY_INCLUDE标签中间内容正常被执行。
doEndTag();遇到结束标签
VV:Tag.SKIP_PAGE忽略掉页面 Tag.EVAL_PAGE 继续执行
v:标签属性 在标签类里设成员变量 set get 修改获取属性
setParent(Tag t)
getParent(Tag t)
v:bodyTagSupport
其父类是tagsupport。
v:parent pageContext
pageContext.setAttribute("","",scope)
2.创建标签库描述文件 后缀名.tld tab lib descripter
3.在jsp中应用标签<mm:hello/>
v:<%taglib uri="myTag" prefix="hello"%>
uri 代表某标签库
preFix
<p><hello:first/></p>
v:jstl
v:ServletContext context = config.getServletContext();
InputStream is = context.getResourceAsStream("/WEB-INF/message.properties");// web中获取资源
ps.load(is);
is.close();
context.setAttribute("ps",ps);
v:学习标签库处理流程
1.1 <%@> 编译指令
1.2 脚本语法
1.3 动作语法<JSP:xx>
2.
2.1java comments <%-- --%>
不会发送到客户端
2.2<!-- --> html comments
<!---<%=new java.util.date%>->
会将表达式结果发送到客户端。
表达式不用加分号!
3.编译器指令
包含指令:<%@include file="" %> 页面包含另外一个页面
页面指令:<%@Page %>
<%@page language="java" import="java.util.*,java.io.×" pageEncodeing="UTF-8"%>
4.声明? 为什么要声明呢? 脚本段不可以 么?
<%! int a= 3;> <%=a%><br> <%=a--%> 刷新变量变!?不对呀 每个对象访问页面的对象不一样呀!
<% int b= 3; %><%= b%><%=b--%> 不变!
注:转换成serverlet
a 为成员变量
b 为方法变量 get post
每次访问服务器产生一个线程执行 get\post 方法,结果一样。成员变量不会初始化!
serverlet是单实例的。
5.java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* 默认导入jsp中
6.内置对象 服务创建好了后帮你自动创建。 request
7. test .jsp <%JSP forward=test 2 .jsp ''%> 实际显示test2.jsp 页面了,test.jsp 后的任何代码不会再执行了。
8.<jsp:include> 和 @include 相比可以发送参数。
9.内置对象 9 个 都是有servlet中相应类的
request、
response、 比较底层,下载时会用,一般用out
pageContext、getAttribute 容器一般经常用它,我们很少用
session、
application、out、
config、获取serverlet 初始化对象
page、 代表servlet 服务器使用
exception、只有在<@page isErrorPage=“true” > 中使用
request session application
V:request 的方法
1.request getAttribute setAttribute 都是成对出现 服务器内部处理
2.getParameter 是客户端交互用,无setParameter 参数
V:request session application 范围
V:<jsp:forward > serverlet代码实现!
PageContext. forward 方法实现RequestDispatcher.forward
V:application getRealPath(); 绝对路径
V:session 比较耗资源,一般就登陆用,可以用 hiden 完成向导式注册!
v:hidden value 放ID, 更新信息。
v:firebug 选中,修改页面元素。
V:httpServletResponse.sendRedirect / 和 非/ localhost:8080/ / v:容器的根路径不是应用的根路径。
v:通过 firebug转发 和 重定向的区别.
转发:不通过客户端
重定向:通知客户端,立刻访问另外一个链接。 sendRedirect(http://ddd)
request 转发requestDispatcher
response重定向 sendRedirect
v:document.getElementByName
document.getElementById
v:java bean
规范:1.public 类 2.无参构造方法 3.set get
使用 1.导入 <%@page …… import= "" %> 2.声明 <jsp:useBean id="person" class = ""> 3. <jsp:getproperty property="age" name = "person">
<jsp:setproperty property="age" name = "person" value = "10" >
<jsp:setproperty property="age" name = "person" param = "hellowword" > 动态赋值 ?hellowword=10
scope :page request session application
v:请求转发用法
v:jfree chart
v:cookie
1.部分内容在jsp里
2.声明周期,
init,service,destroy
3.serverlet容器会将sessionId做为cookie保存在用户浏览器里。
每次客户发出http请求,serverlet容器会从httpRequest中获取sessionId
从而获取httpSession。
getId();
ivaliate();失效
isNew();第一次访问true
setMaxInactiveInterval();最大不活动时间
4.<session_config>默认30分钟。
<session-timeout>30</session-timeout>
5.默认jsp支持session <%@page session="false"%>
6.过滤器减少session在每个页面的验证。。。
在调用serverlet前可以修改请求
在调用serverlet后可以修改response
7.v init()
doFilter(request,response,filterchain)
filterchain 多从过滤。
注意列外页面要过滤,否则循环重定向。。。
filter 还是比较重要的。。。
username = username.replace("zhang","*****")
串联过滤器:同一过滤原则(包含也可),按照web.xml中的顺序来过滤。。。。
filter 启动失败导致整个web 应该启动不了。。。
可以设置字符编码 request.setE code
V:listener 观察者模式 重要。。。。
定义在web.xml中
ServerletContextListener filter 之前启动,一般启动框架用。。。
ServerletContextAttributeListener
httpSessionListener
httpSessionAttributedListener
EL
${expr}
输出:\${expr}
两种方式:
tomcat 可以配成不支持el
tomcat 中有实例, manager页面
--客户化jsp标签
步骤:
1.创建标签处理类
v:tagsupport
:doStartTag(),与到起始标签
VV:返回Tag.SKIP_BODY 表示标签内容被忽略 Tag.EVAL_BODY_INCLUDE标签中间内容正常被执行。
doEndTag();遇到结束标签
VV:Tag.SKIP_PAGE忽略掉页面 Tag.EVAL_PAGE 继续执行
v:标签属性 在标签类里设成员变量 set get 修改获取属性
setParent(Tag t)
getParent(Tag t)
v:bodyTagSupport
其父类是tagsupport。
v:parent pageContext
pageContext.setAttribute("","",scope)
2.创建标签库描述文件 后缀名.tld tab lib descripter
3.在jsp中应用标签<mm:hello/>
v:<%taglib uri="myTag" prefix="hello"%>
uri 代表某标签库
preFix
<p><hello:first/></p>
v:jstl
v:ServletContext context = config.getServletContext();
InputStream is = context.getResourceAsStream("/WEB-INF/message.properties");// web中获取资源
ps.load(is);
is.close();
context.setAttribute("ps",ps);
v:学习标签库处理流程