jsp跳转问题:我有一个index.jsp文件,我在index.jsp中通过<jsp:includehella flushh="true" page="right.jsp&qu

JSP页面访问用户验证
jsp安全性问题,当别人知道某个jsp文件的网址后就可以跳过登陆页面直接访问该jsp文件了,这样无法禁止外部无权限用户的访问。本文讨论内容是通过权限验证的用户,才可以访问特定的页面。
JSP 页面验证,涉及到的知识有Session, 网页权限, 用户验证等。
session对象
session对象用来存储有关用户会话的所有信息,一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程。session是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息,信息保存在服务器端。
session信息获取
session.setAttribute(&userinfo&, USERNAME);&&// session保存登录信息和用户名
2) Java(Servlet)
request.getSession().setAttribute(&userinfo&, USERNAME);&&& // session保存登录信息和用户名
其中,request为HttpServletRequest对象,在doPost(HttpServletRequest request, HttpServletResponse response){...}引用
session超时设置
1) web.xml
&?xml version=&1.0& encoding=&UTF-8&?&
&&& &session-config&
&&&&&&& &session-timeout&30&/session-timeout&&&&&&&&&&& &!-- 单位为分钟,例如30分钟 --&
&&& &/session-config&
&/web-app&
request.getSession().setMaxInactiveInterval(30*60);&&// 设置session失效时间(timeout),单位为秒
注: setMaxInactiveInterval() 比 web.xml 优先级高,如果两者同时设置则采用 setMaxInactiveInterval()
JSP 网页权限
JSP 网页权限,有两种配置方式:
1) include 文件
如: 验证文件 logincheck.jsp
&&& if(session.getAttribute(&userinfo&) == null) {&
&&&&&&& &script type=&text/javascript& language=&javascript&&&
&&&&&&&&&&& alert(&您还没有登录,请登录...&);&
&&&&&&&&&&& window.document.location.href=&userlogin.html&;&
&&&&&&& &/script&&&
在需要验证的jsp网页起始位置,包含 logincheck.jsp , 例如在需要验证的jsp网页 page111.jsp 中添加
&&%@ include file=&logincheck.jsp& %&
2) filter 过滤
首先,在web.xml配置文件中设置过滤页
&&& &filter-name&LoginFilter&/filter-name&&
&&& &filter-class&com.homer.LoginFilter&/filter-class&&&&
&/filter&&
&filter-mapping&&
&&& &filter-name&LoginFilter&/filter-name&&
&&& &url-pattern&/page222.jsp&/url-pattern&&
&/filter-mapping&&
注: 目前配置方式仅仅是在用户访问page222.jsp的时候才走过滤器,也可以配置/*, /user/*等目录进行批量网页过滤
然后,在 LoginFilter.java(web.xml配置文件中的com.homer.LoginFilter)文件中, 进行过滤验证:
public class LoginFilter implements Filter {&
&&& @Override&
&&& public void init(FilterConfig arg0) throws ServletException {&
&&& @Override&
&&& public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {&
&&&&&&& HttpServletRequest request = (HttpServletRequest)arg0;&
&&&&&&& HttpServletResponse response = (HttpServletResponse)arg1;&
&&&&&&& HttpSession session = request.getSession();&
&&&&&&& if(session.getAttribute(&userinfo&) == null) {&
&&&&&&&&&&& response.setCharacterEncoding(&utf-8&);&
&&&&&&&&&&& PrintWriter out = response.getWriter();&
&&&&&&&&&&& out.print(&&script&alert('您还没有登录,请登录...'); window.location='userlogin.html' &/script&&);&
&&&&&&&&&&& out.flush();&
&&&&&&&&&&& out.close();&
//&&&&&&&&& request.setAttribute(&loginError&, &您还没有登录,请登录...&);&
//&&&&&&&&& request.getRequestDispatcher(&userlogin.html&).forward(request, response);&
&&&&&&& } else {&
&&&&&&&&&&& arg2.doFilter(request, response);&
&&&&&&& }&
&&& @Override&
&&& public void destroy() {&
用户登录验证
用户登录验证,有两种方式:JSP网页前端和Java(Serlvet)后台
1) JSP网页前端验证(login.jsp)
&&& String USERNAME = &admin&;&
&&& String USERPWD = &123456&;&
&&& request.setCharacterEncoding(&utf8&);&
&&& String userName = request.getParameter(&username&).trim();&
&&& String userPwd = request.getParameter(&userpwd&).trim();&
&&& if(userName == null || userPwd == null){&
&&&&&&& response.sendRedirect(&userlogin.html&);&
&&& if(userName.equals(USERNAME) && userPwd.equals(USERPWD)) {&
&&&&&&& session.setMaxInactiveInterval(30*60);&&&&&&&&& // 设置session失效时间(timeout),单位为秒&
&&&&&&& session.setAttribute(&userinfo&, USERNAME);&&&& // 用户名和密码正确,保存登录信息&
&&&&&&& response.sendRedirect(&page111.jsp&);&
&&& } else {&
&&&&&&& response.sendRedirect(&userlogin.html&);&&&&&&& // 用户名和密码错误,跳转到登录界面&
2) Java(Serlvet)后台验证(Login.java)
public class Login extends HttpServlet {&
&&& private static final long serialVersionUID = 1L;&
&&& private final static String USERNAME = &admin&;&
&&& private final static String USERPWD = &123456&;&
&&& @Override&
&&& protected void doGet(HttpServletRequest request, HttpServletResponse response) {&
&&& @Override&
&&& protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&
&&&&&&& request.setCharacterEncoding(&utf-8&);&
&&&&&&& String userName = request.getParameter(&username&).trim();&
&&&&&&& String userPwd = request.getParameter(&userpwd&).trim();&
&&&&&&& if(userName == null || userPwd == null) {&
&&&&&&&&&&& response.sendRedirect(&userlogin.html&);&
&&&&&&& }&
&&&&&&& if(userName.equals(USERNAME) && userPwd.equals(USERPWD)) {&
&&&&&&&&&&& request.getSession().setMaxInactiveInterval(30*60);&&&& // 设置session失效时间(timeout),单位为秒&
&&&&&&&&&&& request.getSession().setAttribute(&userinfo&, USERNAME);&&&&&&& // 用户名和密码正确,保存登录信息(获得session与jsp网页稍有不同)&
&&&&&&&&&&& response.sendRedirect(&page111.jsp&);&
&&&&&&& } else {&
&&&&&&&&&&& response.sendRedirect(&userlogin.html&);&&&&&&&&&&& // 用户名和密码错误,跳转到登录界面&
&&&&&&& }&
其中,需要在web.xml配置Servlet映射关系:
&servlet&&
&&& &description&Login&/description&&
&&& &display-name&Login&/display-name&&
&&& &servlet-name&Login&/servlet-name&&
&&& &servlet-class&com.homer.Login&/servlet-class&&
&/servlet&&
&servlet-mapping&&
&&& &servlet-name&Login&/servlet-name&&
&&& &url-pattern&/login&/url-pattern&&
&/servlet-mapping&&
注: Login.java映射成对样网页为/login,login可以在网页(html和jsp)form中指定,如 action=&login&
用户登录界面
用户登录界面,是用户在访问整个网站之前需要访问的,因此最好制作成静态页面HTML,本例如:userlogin.html
&!DOCTYPE html PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN& &&&&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&&
&title&userlogin.html&/title&&
&form method=&POST& name=&form1& action=&login&&&
&&&&&&& &td&UserName : &/td&&
&&&&&&& &td&&input type=&text& name=&username& /&&/td&&
&&& &/tr&&
&&&&&&& &td&UserPwd : &/td&&
&&&&&&& &td&&input type=&text& name=&userpwd& /&&/td&&
&&& &/tr&&
&&&&&&& &td colspan=&2& align=&center&&&
&&&&&&&&&&& &input type=&submit& name=&btnSubmit& value=&login&/&&
&&&&&&& &/td&&
&&& &/tr&&
&/center&&
注: 此时 action=&login& 默认对应Java(Servlet)中对应的 Login.java 进行验证解析
userlogin.html 针对上述两种 用户登录验证 方式,分别提供了两种POST方式:
1) 针对JSP方式
&form method=&POST& name=&form1& action=&login.jsp&&
2) 针对Java(Servlet)方式
&form method=&POST& name=&form1& action=&login&&
本示例代码说明
本示例主要代码结构图如下:
1) head.jsp 和 foot.jsp
统一控制jsp页面的上,下部内容,类似ASP.NET的模板
2) index.jsp
网站默认的登录页面,本示例主要用作跳转到登录页面& userlogin.html :
&&script type=&text/javascript& language=&javascript&&
&&window.location=&userlogin.html&;
&&/script&
3)userlogin.html
静态登录页面,见上面 用户登录界面 的所示
4) login.jsp 和 Login.java&
login. 网页验证用户登录信息(用户名和密码),见上面的 用户登录验证 方式1
Login.java 后台验证用户登录信息(用户名和密码),见上面的 用户登录验证 方式2
5) logincheck.jsp 和 LoginFilter.java
logincheck.jsp 网页验证用户是否已登录,见上面的 JSP 网页权限 方式1
LoginFilter.java 后台验证用户是否已登录,见上面的 JSP 网页权限 方式2
6) page111.jsp, page222.jsp, page333.jsp
(1) page111.jsp
采用& logincheck.jsp 网页权限验证,其代码内容为:
&%@ include file=&logincheck.jsp& %&
&%@ include file=&head.jsp& %&
&I am page111.jsp
&%@ include file=&foot.jsp& %&
(2) page222.jsp
采用& logincheck.jsp 网页权限验证,其代码内容为:
&%@ include file=&head.jsp& %&
&I am page222.jsp
&%@ include file=&foot.jsp& %&
注:采用filter过滤方式,在web.xml配置文件中设置了哪些jsp网页需要过滤,见上面 JSP 网页权限&&& ---》&& 2) filter 过滤
(3) page333.jsp
采用& logincheck.jsp 网页权限验证,其代码内容为:
&%@ include file=&head.jsp& %&
&I am page333.jsp
&%@ include file=&foot.jsp& %&
注: 没有任何验证,用户可以直接输入网址进行访问
7) logout.jsp
用户退出时,注销session中的登录信息
&&session.invalidate();
&&response.sendRedirect(&http://blog.csdn.net/sunboy_2050/article/details/8032693&);
本示例运行界面:
1) 登录界面
&userlogin.
2) JSP 页面验证
logincheck.jsp (或LoginFilter.java)页面访问前进行登录验证
3) 验证通过访问JSP页面
login.jsp(或Login.java)用户登录后才可以正常访问JSP页面
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。6784人阅读
JSP 中include 另一个文件时有个很偏的属性,叫flush,默认为
JSP 中,如果不断 include 自己(源文件),在逻辑上会形成死循环。若默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,并且销毁该次访问的 request 和 response。而当把flush 属性赋为真值时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容。
由此可以得出结论,在简单页面中,该属性不纳入考虑,而在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出。该属性在 Servlet 中也有对应的应用。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:130384次
积分:1695
积分:1695
排名:第12322名
原创:37篇
转载:69篇
评论:20条
(1)(3)(7)(1)(6)(5)(2)(4)(1)(1)(6)(6)(5)(7)(1)(2)(20)(3)(3)(13)(6)(3)
关于职业规划、就业面试、人际关系、心理咨询等方面的信息你的位置: &&
jsp中的@include与jsp:include区别详解
jsp中的@include与jsp:include区别详解
1 前言搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式&%@include file=&xxx.jsp&%& & &jsp:include page=&xxx.jsp&&&/jsp:include&我们也许会使用这两种方式,但是也许很多人不名称这两种方式的区别。下面我们来看看下面的两个例子2 开门见山引出问题(1) /include/include.jsp&%@ page language="java"
pageEncoding="UTF-8"%&
String path = request.getContextPath();
&h1&include页面&/h1&(2)/ index1.jsp页面&%@ page language="java" pageEncoding="UTF-8"%&
String path = request.getContextPath();
&!DOCTYPE HTML&
&h1&index页面&/h1&
&%@include file="/include/include.jsp"%&
&/html&(3) /index2.jsp&%@ page language="java" pageEncoding="UTF-8"%&
String path = request.getContextPath();
&!DOCTYPE HTML&
&h1&index页面&/h1&
&jsp:include page="/include/include.jsp"&&/jsp:include&
&/html&现在我们访问index1.jsp,访问结果如下那我们继续访问index2.jsp,结果如下为什么呢,怎么index1.jsp为什么访问报错了啊,看来@include与jsp:include是有区别的吧。只有搞懂@include与jsp:include这两种方式的底层区别,我们就知道为什么index1.jsp页面会发生错误了。请继续看下去你就会明白了。3 @include与jsp:include内部区别 & 为了演示出@include的正确效果,我们再写两个页面(1)/include/include1.jsp&%@ page language="java"
pageEncoding="UTF-8"%&
&h1&include1页面&/h1&(2) /index3.jsp&%@ page language="java" pageEncoding="UTF-8"%&
String path = request.getContextPath();
&!DOCTYPE HTML&
&h1&index页面&/h1&
&%@include file="/include/include1.jsp" %&
&/html&我们访问index3.jsp页面OK,我们发现结果正确了,可以对比了include1.jsp与include.jsp看看哪里改动了。我们知道当我们访问jsp页面时,servlet容器(如tomcat)会把jsp编译成servlet java代码。下面我们来看看tomcat对index1.jsp与index3.jsp生成的servlet java代码。在tomcat中我们可以在 “/tomcat目录/work/Catalina/localhost/项目名称/“中找到tomcat将jsp编译成servlet的代码。 & &(1) index3.jsp对应的servlet代码(2) index2.jsp页面对应的servlet代码 & & & &访问ndex2.jsp时候在也生成了include.jsp对应的servlet代码 & & & & 从tomcat生成的servlet代码我们可以得出两者之间的区别4 结论
& &@include:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet & & jsp:include &所有代码分别处理,在页面被请求的时候才编译,被编译成多个servlet,页面语法相对独立,处理完成之后再将代码的显示结果(处理结果)组合进来。5 &再次回到问题 & &为什么本文中刚开始的那个问题index1.jsp页面报错呢,大家知道了吗,原因就是include.jsp页面中和index1.jsp页面中同时都包含如下代码。&%
String path = request.getContextPath();
%&因为我们采用的include的方式,这样页面请求之前所有代码先包含进来之后再一起处理,这样代码中就有两个path变量。这样就不符合java语法了。所有就报500错误了。为什么index2.jsp没有错误了,因为采用的jsp:include方式,这样两个页面时单独编译的,最后才将编译的结果合并起来。所有就不会出错。
最新热门tagJSP &jsp:include&与&%=param%&之间的问题
[问题点数:80分]
JSP &jsp:include&与&%=param%&之间的问题
[问题点数:80分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
2012年2月 Java大版内专家分月排行榜第三2011年8月 Java大版内专家分月排行榜第三2011年6月 Java大版内专家分月排行榜第三2011年4月 Java大版内专家分月排行榜第三2010年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。声明:现大部分文章为寻找问题时在网上相互转载,在此博客中做个记录,方便自己也方便有类似问题的朋友,故原出处已不好查到,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明。谢谢。
随笔- 357&
&&&&&&&&&&&
& 注:以前摘抄的,现在想起来看看了,粘上分享下 呵呵
&我们都知道在jsp中include有两种形式,分别是&%@&include&file=”&”%&&jsp:include&page=”&”&flush=”true”/&&&& 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。&&& 通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include。具体在哪些时候用&%@&include&file=”&”%&,哪些时候用&jsp:include&page=”&”&flush=”true”/&.这种形式。首先要明白的是它们之间的区别。只有了解了它们用法的不同才理解该在何时去用以及如何选择。&%@&include&file=”&”%&,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。&&& 这里对翻译阶段进行一下说明:我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。&&& Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP&Page&implementation&class),并编译这个servlet。这两步就构成了翻译阶段.&&& 由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。下面举个例子。&&& 服务器用tomcat,引入页面的jsp文件叫test.jsp。被引入的页面叫date.jsp.这个jsp文件里存放的是一个有关时间的jsp代码,当前的上下文根设为test//======date.jsp的源文件=====//&%@&page&language=”java”&contentType="text/charset=gb2312"%&&%java.util.Date&date=new&java.util.Date();String&date_cn&="";String&dateStr&=&"";switch(date.getDay()){case&0:date_cn&="日";&case&1:date_cn&="一";&case&2:date_cn&="二";&case&3:date_cn&="三";&case&4:date_cn&="四";&case&5:date_cn&="五";&case&6:date_cn&="六";&}dateStr&=&(1900+date.getYear())&+&"年"&+&(date.getMonth()+1)&+&"月"&+&date.getDate()&+&"日(星期"&+&date_cn&+&")";%&document.write("&%=dateStr%&");//======以下是test.jsp的源文件=============//&%@&page&language=”java”&contentType=”text/charset=gb;%&&html&&head&&title&include的两种用法&/title&&jsp:include&page=”date.jsp”&flush=”true”/&&%--@&include&file=”date.jsp”&%--&//我们在这里用include的两种不同形式来引入date.jsp这个文件.&head&&body&&table&&tr&&td&有关jsp中include的两种用法.敬请关注。&/td&&/tr&&/table&&/body&&/html&&&&&& 在test.jsp&文件中,我们只输出了一行文本“&有关jsp中include的两种用法.敬请关注。”,现在让我们先用&%@&include&file=”date.jsp”&%&这种形式引入date.jsp这个文件。你想会出现什么问题了吗?此时出现了错误提示:HTTP&Status&500&?org.apache.jasper.JasperException:&/date.jsp(0,0)&Page&directive:&can't&have&multiple&occurrences&of&contentType以下还有一堆错误,但我们只要看这里就知道问题的所在了。状态码为http&500服务器内部错误。再看下面的提示。在date.jsp页面中不能指定多个contentType.&&& 原因就在这里了。是因为在翻译阶段,date.jsp文件的代码被原封不动地加入到了test.jsp页面从而合成一个文件。合成后的文件中就会相同的:&%@&page&language=”java”&contentType=”text/charset=gb;%&这句代码。解决的办法是把date.jsp文件中的这句删掉。刷新后再请求test.jsp页面
请求test.jsp在页面显示如下2003年12月10日&13:12:40有关jsp中include的两种用法.敬请关注。这时我们还不能发现什么。还是去查看tomcat下的临时文件吧。到那里去看看date.jsp文件的内容是否已被加入到了test.jsp文件中。&注.此处的tomcat装在E盘根目录下&目录E:"tomcat"work"Standalone"localhost"test.在这个目录下会看到test_jsp.java和test_jsp.class两个文件。&& 这里的java文件就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文件。&&&& 相对应的test_jsp.class这个文件就是编译test_jsp.java这个servlet文件产生的类文件了。打开所产生的servlet文件(test_jsp.java)。此时我们会发现,在test.jsp&文件被转化成servlet文件时,在输出的&haed&之间加入了一些不是test.jsp页面里面的代码,新加入的内容就是&date.jsp里面的代码:&新加入了哪些内容或是否真的加入了新的内容请自己测试去看一下就会一目了然了.在这里不再详述.以上就是我们用&%@&include&file=”date.jsp”%&这种形式得到的结果.下面我们换用&jsp:include&page=”dae.jsp”&flush=”true”/&也就是将&%@&include&file=”date.jsp”%&换成&jsp:include&page=”dae.jsp”&flush=”true”/&,然后请求test.jsp.2003?&ê&12??10??&13:30:13有关jsp中include的两种用法.敬请关注。&&& 此时会在页面上看见.我们所引入date.jsp输出的日期中中文出现了乱码.什么原因?是因为include行为元素是在请求处理阶段执行的(此处要对请求处理阶段进行说明一下.Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件)。&& 所以在我们作include行为元素引入页面时,实际只是引用了date.jsp这个文件被转化并被编译后产生的servlet类文件.既如此,&date.jsp就是作为一个单独的文件在执行后才被test.jsp文件运行时调用.由于date.jsp文件中没有指定字符编码.所以出现了乱码.解决办法是在date.jsp文件中重新把刚才去掉的&%@&page&language=”java”&contentType=”text/charset=gb;%&这行语句加入后刷新重新运行.此时页面显示正确,并跟用include指令正常运行时一样.再查看tomcat下的临时文件会发现.此时多出了一个&date_jsp.java文件和一个date_jsp.class文件.这两个文件得来的方式跟test_jsp.java和&test_jsp.class文件得来的方式一样.再查看一下此时test_jsp.java文件的代码会发现.此时只新增加了一句代码:JspRuntimeLibrary.include(request,&response,&"date.jsp",&out,&true);它并没有把date.jsp文件的代码加入到test.jsp.&& 只是在运行时引入了date.jsp页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源,(例如一个servlet或一个jsp页面),只要这些资源所产生的类型和jsp页面产生的内容类型相同.JSP容器将通过一个内部的函数调用来执行指定的资源.因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.&&& 由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.&jsp:include&page=”&%=pageSelectedAtRuntime%&”&flush=”true”&&&jsp:param&name=”fitstParamer”&value=”firstValue”&&jsp:param&name=”lastParamer”&value=”lastValue”&&/jsp:include&&&& 如果修改了被引入的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.(注意,include行为元素同jsp其它元素一样,没有行为体时要以”/”结束.就像下面这样.&jsp:include&page=”&%=pageSelectedAtRuntime%&”&flush=”true”&/&)以下是对include&两种用法的区别主要有两个方面的不同;一:执行时间上:&%@&include&file=”relativeURI”%&&是在翻译阶段执行&jsp:include&page=”relativeURI”&flush=”true”&/&&在请求处理阶段执行.二:引入内容的不同:&%@&include&file=”relativeURI”%&引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.&jsp:include&page=”relativeURI”&flush=”true”&/&引入执行页面或servlet所生成的应答文本.另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书籍.
载自:/ServletJsp/.html
阅读(...) 评论()
声明:现大部分文章为寻找问题时在网上相互转载,在此博客中做个记录,方便自己也方便有类似问题的朋友,故原出处已不好查到,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明。谢谢。}

我要回帖

更多关于 hella flush 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信