Servlet的应用--Referer请求和参数传递
1.referer的应用
(1)利用Referer请求头阻止“盗链”
第一步:
建一个MyHtml.html,内容为
<a href = “http://localhost:8080/demoWeb/test”>retr</a>
第二步:在servlet中判断是否是本地访问
//获取请求消息封装的referer头字段的值
String referrer = request.getHeader("referrer");
//用getServerName()获取localhost
String sitePart = "http://"+request.getServerName();
//判断获取的地址是否为空,如果为空,则跳转页到dowm.html,如果不为空,输出
if(referrer!=null && referrer.startsWith(sitePart)){
out.println("deading downding");
}else{
RequestDispatcherrequest.
getRequestDispatcher("/down.html");
rd.forward(request, response);
}
第三步:通过地址栏访问
在第一步有一个超链接,当运行MyHtml.html时,这个页面显示出来之后,点击超链接,应该是跳转到另一个界面。
请求消息包含referer头字段,超链接所在的html页面的url地址
Referrer:http://localhost:8080/demohtmlWeb/MyHtml.Html
如果输入的地址是http://localhost:8080/demohtmlWeb/test
则输入的地址不包含请求消息头字段referer,为空
注:
点击超链接的时候,是向web服务器第二次发送了一个servlet请求
在servlet中:获取请求消息封装的referer头字段的值
如果referer字段的值为空:
如果不为空
String name = http://+request.getServerName();
利用referer可以隐藏javascript 代码:
Test.js
Document.wirte(“假设这是很多的js代码”);
Page1.html
<script type=”text/javascript” src=”test.js”>
</script>
利用servlet
浏览器传递参数信息的细节:
用get方法
提交 重置
没有名字的文本框在地址栏是没有输出的
复选框没有value属性 系统自动设为on
隐藏表单字段
图片
列表框
没有做出选择的列表框的信息不会作为参数提交
设置属性区别对待每一个选项
彻底删除和删除
Sring str = request.getParameter(“button1”);
If(str.equals(“彻底删除”)){
}else{
}
要彻底删除要在数据库中
Delete from 表名
Where id in(‘01’,’02’,’03’);
只是删除
Update 表名
Set flag=1
Where id in(‘01’,’02’,’03’);
获取复选框中的所有制
<input type=”checkbox” value=”001”,name=”booklist”/>
<input type=”checkbox” value=”002”,name=”booklist”/>
<input type=”checkbox” value=”003”,name=”booklist”/>
<input type=”checkbox” value=”004”,name=”booklist”/>
<input type=”checkbox” value=”005”,name=”booklist”/>
String arr[] = request.getParameterValues(“booklist”):
String s = “”;
For(int 0 =0;i<arr.length;i++){
String s[] =arr[i];
}