web第二天上午

1、Servlet简介
什么是Servlet
Servlet是运行在web服务器上的java程序
Servlet的作用
读取客户发送的所有数据
查询http请求中包含的任何其他请求信息
处理数据并生成结果
设置合适的http响应参数
将响应信息回送给客户端
2、查询请求中包含的其他请求信息
getRemoteAddr(); // 获取远程地址
getRemoteHost(); // 获取远程主机
getRemotePort(); // 获取远程端口
getRemoteUser(); // 获取远程用户
3、请求信息
//处理乱码?
request.setCharacterEncoding(“utf-8”);

	//1.如何获取单个数据?
	String username=request.getParameter("username");
	System.out.println("username:"+username);
	//2.如何获取多个数据?
	String[] hobby=request.getParameterValues("hobby");
	System.out.println("hobby:"+Arrays.toString(hobby));
	//3.如何获取隐藏域的数据?
	String id=request.getParameter("id");
	System.out.println("id:"+id);
	//4.如何获取url后面跟着的数据?
	String yaoshuijiaoderen=request.getParameter("yaoshuijiaoderen");
	System.out.println("yaoshuijiaoderen:"+yaoshuijiaoderen);

4、查询请求中包含的其他请求信息

	//从哪里查这些信息呢?request ,所有客户端的请求信息都在request中封装着
	count++;
	
	String remoteAddr=request.getRemoteAddr();
	
	String remoteHost=request.getRemoteHost();
	
	int remotePort=request.getRemotePort();
		
    	String remoteUser=request.getRemoteUser();
	
    	System.out.println("第"+count+"次访问者是:"+remoteHost+","+remoteAddr);
	System.out.println("remoteAddr:"+remoteAddr);
	System.out.println("remoteHost:"+remoteHost);
	System.out.println("remotePort:"+remotePort);
	System.out.println("remoteUser:"+remoteUser);
	
	//还可以获取服务端的相关信息
	
	System.out.println("localAddr:"+request.getLocalAddr());
	System.out.println("localName:"+request.getLocalName());
	
	System.out.println("localPort:"+request.getLocalPort());
	System.out.println("locale:"+request.getLocale());

	1、 返回普通文本:Content-Type="text/plain"
	2 、返回一段HTML代码 :Content-Type="text/html"
	3 、返回一段XML代码:Content-Type="text/xml"(注意,是代码!没有返回一个XML文件这种说法,服务器与浏览器通过IO流来传输,所以只能是某种格式的字符串而不是一个文件)
	4 、返回一段javascript代码:Content-Type= "text/javascript"
	5 、返回一段json代码:Content-Type="application/json"  
	总结:除了Json是application/json,其他的文本、xml、html、js都是text/自身类型。

5、响应回去客户端一段文本:hello,client
//1.先设置字符编码,兼容汉字
response.setCharacterEncoding(“utf-8”);
//2.设置响应的内容类型
response.setContentType(“text/plain;charset=utf-8”);
//3.获取输出流
PrintWriter pw=response.getWriter();
//4.数据数据即可
pw.print(“hello,client,你好,客户端”);

6、doget()和dopost()
url请求:默认get提交
超链接:默认get提交
表单:默认get提交,可以通过method=“post” 修改成隐式提交
7、横向越权和纵向越权
横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源

如何防止横向越权漏洞:

可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的。

对请求中的关键参数进行间接映射,避免使用原始关键参数名,比如使用索引1代替id值123等

如何防止纵向越权漏洞:

建议使用基于角色访问控制机制来防止纵向越权攻击,即预先定义不同的权限角色,为每个角色分配不同的权限,每个用户都属于特定的角色,即拥有固定的权限,当用户执行某个动作或产生某种行为时,通过用户所在的角色判定该动作或者行为是否允许。

8、jsp和html的命名规范
(1)jsp与html文件名全部小写

(2)数据/内容显示页

名称形词,多个单词用下划线分隔,要求能说明显示内容的信息,为避免冲突,可加上“_list”或者其他的单词。例如:news_message.html或file_list.jsp

(3)操作处理页:名称_动词,例如:file_delete.jsp

(4)名称最好从访问大刀小命名(或者是模块名_子模块名_操作的方式),比如service_order_delete.jsp,当jsp页面很多的时候,容易检索和识别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值