5月16日笔记 请求重定向(HttpServletResponse.sendRedirect)与请求转发(RequestDispatcher.forward)的比较

1.xml的两种规范:DTD规范,XML Schema 以及两者的区别
直接写网址,或者超链接默认为get方式
2.HTML:
 
单选:
性别<input type="radio" name="sex" value="男"/>男
    <input type="radio" name="sex" value="女"/>女
多选框:
<select name"" size="" multiple="multiple" >
<option value="选项1">选项1</option>
</select>

文本框:
<textarea rows="10" cols="10" name="des"></textarea> 

多选按钮:  
爱好:<input type="checkbox" name="love" value="睡觉">睡觉<br>
 <input type="checkbox" name="love" value="梦游">梦游<br>
 <input type="checkbox" name="love" value="交友">交友<br>
 
  
   radioa按钮,checkbox按钮,多选下拉选,如果值没有被选中,则name属下的值,在服务器端获取不到
   
   
 <input type=hidden name="" value>
 在路径中传递参数(通过超链接传递参数):
 在路径中传递参数的格式:
 路径?参数的名称1=参数值&参数名=参数值

3. Map的遍历:
 Set set=Map.keySet;();
 Iterator<> it=set.iterator();
 while(it.hasnext())
 {
 String key=it.next();
 String[] value=Map.get(key);
 while(value!=null&&value.length>=0)
 {
 
 }
 
 }
 
  URL:统一资源定位符
  URI:统一资源标识符
  
  
 4  请求重定向与请求转发的比较
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法
都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制都有很大的区别。
下面是HttpServletResponse.sendRedirect方法实现的请求重定向与RequestDispatcher.forward方法
实现的请求转发的总结比较:
(1)RequestDispatcher.forward方法只能将请求转发给同一个Web应用中组件,HttpServletResponse.sendRedirect
方法不仅可以重定向当当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序的资源,
甚至是使用绝对路径URL重定向到其他站点的资源.如果传递给HttpServletResponse.sendRedirect方法的相对URl以"/"
开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象指定的相对URL以"/"开头,他是相对于当前WEB应用程序的根目录;
(2)调用HttpServletResponse.sendRedirect方法重定向的访问结束后,浏览器的地址栏显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;
而调用requestDispatcher.forward方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变
(3)HttpServletResponse.sendRedirect方法整个过程浏览器共发送了两次请求信息,接受了两次响应.而览器共发送了一次请求信息,接受了一次响应
(4)RequestDispatcher.forward方法调用者与被调用者之间共享相同的Request对象和Response对象,他们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect
方法调用者与被调用折使用各自的Request对象和Response对象,他们属于两个独立的访问请求和响应过程.如果一次请求的相应过程被设计成由WEB
应用程序内部的多个资源来协同完成,这就需要在同一个Web应用程序的内部资源之间进行跳转,并且在跳转之前往往要进行一些前期的预处理(可以通过HttpServletRequest.setAttribute(String,Object)方法)
将预处理结果传递给下一个资源,这种情况下就必须使用RequestDispatcher.forward方法,不同web应用程序之间的重定向,特别是要重定向到另外一个web站点的资源情况
都应该使用HttpServletResonse.sendRedirect()方法
(5)无论是RequestDispatcher.forward方法,还是HttpServletResponse.sendRedirect方法,在调用他们之前,都不能有内容已经被实际输出到客户端.如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除.

 

 

5。Cookie的中文问题:

5.1.4  Unicode编码:保存中文

中文与英文字符不同,中文属于Unicode字符,在内存中占4个字符,而英文属于ASCII字符,内存中只占2个字节。Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。编码可以使用java.net.URLEncoder类的encode(String str, String encoding)方法,解码使用java.net.URLDecoder类的decode(String str, String encoding)方法,例如:

代码5.3  encoding.jsp

程序使用UTF-8编码了Cookie内容,然后再使用UTF-8解码Cookie并显示出来。程序运行效果如图5.3所示。

图5.3  Cookie的UTF-8编码

 

提示:Cookie中保存中文只能编码。一般使用UTF-8编码即可。不推荐使用GBK等中文编码,因为浏览器不一定支持,而且JavaScript也不支持GBK编码。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值