-
-
不停地追逐
2017-04-14
- JSP自定义标签——TagSupport之控制是否执行标签结束后的内容
需要重写doEndTag方法,该方法一般默认返回EVAL_PAGE
EVAL_PAGE:是告诉WEB容器接着执行自定义标签后面的代码
SKIP_PAGE:就是忽略自定义标签结束后的内容
Ps1:需要通过pageContext得到request对象(HttpServletRequest),通过request得到getHeader("referer")(属于http请求头的属性),作用:通过该属性判断客户是从哪个页面链接过来的,只有通过超链接和表单提交的方式该属性才会有效。比如:防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果不是,说明有人盗连了你的下载地址。
Ps2:通过request.getServerName()获得服务器的URL,和上边getHeader("referer")进行比较判断是否是自己的网站。
判断字符串是否以某个子字符串开头。比如字符串“abcdefg”.startWith("abc") 判断结果是true,因为它是以 abc 开头的。
-
2赞 · 0采集
-
-
家哇尘续缘
2016-12-20
- 阿斯蒂芬
-
截图
0赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之控制是否执行标签结束后的内容 III
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之控制是否执行标签结束后的内容 II
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之控制是否执行标签结束后的内容 I
Ps1:判断字符串是否以某个子字符串开头。比如字符串“abcdefg”.startWith("abc") 判断结果是true,因为它是以 abc 开头的。
Ps2:getHeader("referer")作用:在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer。比如:防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果不是,说明有人盗连了你的下载地址。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
java家洼
2016-07-07
- 第三部:定义一个JSP页面:demo2.jsp
<body>
<imooc:SkipPageOrEvalPage/>
<h3>中国最大的免费在线培训平台--www.imooc.com</h3>
</body>
启动tomcat,查看jsp页面
http://localhost:8080/jspCustomTag/demo2.jsp我们通过浏览器输入地址
的方式对它进行访问,这里可以看到,如果是这种方式访问的话,
会显示“不能访问”,那么接下来我们通过超链接的形式对它进行访问,
在这里再新建一个JSP:access.jsp
这个jsp只包含一个a标签,然后我们将http://localhost:8080/jspCustomTag/demo2.jsp这个地址
赋予a标签的href:
<body>
<a href="http://localhost:8080/jspCustomTag/demo2.jsp">站内访问</a>
</body>
再来访问access.jsp。
http://localhost:8080/jspCustomTag/access.jsp
点击这个超链接,这时候在jsp页面中标签后面的代码呢,就可以正常的执行了。
第四步:总结: 通过控制返回SKIP_PAGE和EVAL_PAGE这两个常量就能控制标签后的内容是否可以显示
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 下面来得到一个url
String url="http://"+request.getServerName();
然后就可以判断一下:
请求过来的究竟是通过浏览器呢,还是通过点击超链接来访问的,
if(referer != null && referer.startsWith(url)){
}
确保这个请求是通过本站的超链接请求过来的,
这里首先来判断http请求头中的referer这个属性,是否为空,并且
是通过本站的链接连接进来的,那么如果条件成立的话,就
return EVAL_PAGE;也就是让它正确的执行,
否则就输出一个提示,pageContext.getOut().print("不能访问!");
然后return SKIP_PAGE;
第二步:在标签描述文件中注册这个标签:
<tag>
<name>SkipPageOrEvalPage</name>
<tag-class>com.imooc.tag.SkipPageOrEvalPageTag</tag-class>
<body-content>empty</body-content>
</tag>
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 这节课内容:
如何控制执行标签体结束后的内容:
假设有个需求,对于jsp页面只能通过本站的超链接才能访问,其他的访问方式都会使jsp停止执行其中的内容
类似防盗链的这种功能,
第一步:写标签处理类:
切换到开发环境,创建一个java类:SkipPageOrEvalPageTag,同样需要继承TagSupport这个父类,
这里需要重写doEndTag()方法,该方法默认是返回EVAL_PAGE,也就是说执行标签结束后的内容,
JSP引擎在解析到该结束标记时呢,会回调此方法,下面来实现以下这个方法:
这里需要首先得到一个request对象,
HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();
之后,需要得到HTTP请求头的一个属性,
String referer=request.getHeader("referer");
那么这个属性是属于http请求头中的一个属性,
可以通过这个属性来判断客户是从哪个页面链接过来的,
只有通过超链接和表单提交,该链接才会有效
(
意思是:只有通过超链接和表单提交向服务器发送请求,在请求头里才会有
Referer: http://localhost:8080/jspCustomTag/access.jsp这个属性,
倘若通过在浏览器的地址栏中直接输入
Referer: http://localhost:8080/jspCustomTag/demo2.jsp的这种方式,它不是超链接
也不是表单提交的方式,所以在请求头里面没有referer这个属性,所以
得不到referer这个属性的值。
)
-
截图
0赞 · 0采集
-
-
慕粉13994231071
2016-07-05
- 3-3
-
0赞 · 0采集
-
-
小灰灰菜鸟
2016-07-05
- 判断该页面是从哪里进入的
-
截图
0赞 · 0采集